Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу записать из memo в строку БД Access'a 
V
    Опции темы
FishBon
Дата 28.10.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.10.2010

Репутация: нет
Всего: нет



Здравствуйте!
Связка Delphi и Access через ADO. Есть на форме два поля memo (Nazvanie и Srok_Ispol) и есть два поля в Access тип-memo (Naimenovanie и Srok_Ispol).
Ввожу текст в memo поля на форме и пытаюсь записать их в БД, но выскакивает exception 
user posted image

efesf - это текст, который пробовал вводить в поле memo (Nazvanie).

Код по нажатию кнопки "Добавить" следующий:
Код

procedure TForm3.BitBtn_Add_ProjectClick(Sender: TObject);
  var zaprAdd: string;
begin
  Form2.ADOQuery1.Active:= False;
  Form2.ADOQuery1.Close;
  Form2.ADOQuery1.SQL.Clear;
  zaprAdd:= 'INSERT INTO Ceha (ID,Num_TZ,Naimenovanie,Cod_R3,PFM,Srok_Ispol) VALUES ('+id1+','+Num_TZ.Text+','+Nazvanie.Text+','+Cod_r3.Text+','+PFM.Text+','+Srok_Ispol.Text+')';
  Form2.ADOQuery1.SQL.Add(zaprAdd);  
  Form2.ADOQuery1.ExecSQL; 
end;


Помогите пожалуйста, как записать значение из Tmemo Delphi в поле memo БД Access?

Это сообщение отредактировал(а) FishBon - 28.10.2010, 15:23
PM MAIL   Вверх
Данкинг
Дата 28.10.2010, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



А в кавычки-то кто будет брать названия values ?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
pseud
Дата 28.10.2010, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Код

procedure TForm3.BitBtn_Add_ProjectClick(Sender: TObject);
  var zaprAdd: string;
begin
  Form2.ADOQuery1.Active:= False;
  Form2.ADOQuery1.Close;
  Form2.ADOQuery1.SQL.Clear;
  zaprAdd:= 'INSERT INTO Ceha (ID,Num_TZ,Naimenovanie,Cod_R3,PFM,Srok_Ispol) VALUES ('+id1+','+Num_TZ.Text+','+QuotedStr(Nazvanie.Text)+','+Cod_r3.Text+','+PFM.Text+','+QuotedStr(Srok_Ispol.Text)+')';
  Form2.ADOQuery1.SQL.Add(zaprAdd);  
  Form2.ADOQuery1.ExecSQL; 
end;



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
FishBon
Дата 28.10.2010, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.10.2010

Репутация: нет
Всего: нет



Спасибо большое!!!
QuotedStr - то что нужно

Это сообщение отредактировал(а) FishBon - 28.10.2010, 16:35
PM MAIL   Вверх
IamDreamer
Дата 11.4.2011, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 867
Регистрация: 6.6.2005

Репутация: нет
Всего: 7



БД Access с одной таблицей так же привязана к приложению через компоненты ADO (ADOConnection, ADOTable). Как можно из Memo1 весь текст построчно перенести в ячейки одного столбца, из Memo2 - в ячейки другого? Форматы ячеек в обоих столбцах числовые.

Это сообщение отредактировал(а) IamDreamer - 11.4.2011, 20:03
PM MAIL WWW Jabber   Вверх
IamDreamer
Дата 11.4.2011, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 867
Регистрация: 6.6.2005

Репутация: нет
Всего: 7



Нашёл на форуме SQL.ru пример:
Код
if ADOTable.State = dsBrowse then //если табличка не в состоянии редактирования
   begin
      ADOTable.Append;//добавляем новую пустую запись
      ADOTable.FieldByName('MyField').AsString:= Trim(DBEdit.Text);//вносим значение в поле MyField (или как там у тебя)
      ADOTable.Post;//сохраняем изменения таблички
   end;


Вместо DBEdit.Text ввёл Memo.Lines[i] в цикле, работает. Только проблема в следующем. В Memo у меня числа (в формате 1.71451E+04). В таблицу БД они при описанном методе нормально записываются, только если формат полей в таблице текстовый. Как сделать напрямую перенос текста из Memo в поля числового типа?

Попробовал ввести
Код
ADOTable1.FieldByName('Òåìïåðàòóðà, ãðàä').Value:= Trim(Memo3.Lines[i])


- во всех полях значение <1,00000E+00>. Тип поля числовой указал, формат поля экспоненциальный, 5 десятичных знаков.

Всё, починил. Указал по невнимательности тип поля "Длинное целое", у меня значений целых нет. Всем спасибо.

Это сообщение отредактировал(а) IamDreamer - 11.4.2011, 22:01
PM MAIL WWW Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1215 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.