Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Не могу записать из memo в строку БД Access'a


Автор: FishBon 28.10.2010, 15:21
Здравствуйте!
Связка 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?

Автор: Данкинг 28.10.2010, 16:10
А в кавычки-то кто будет брать названия values ?

Автор: pseud 28.10.2010, 16:13
Код

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;

Автор: FishBon 28.10.2010, 16:34
Спасибо большое!!!
QuotedStr - то что нужно

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

Автор: IamDreamer 11.4.2011, 21:18
Нашёл на форуме 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 десятичных знаков.

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)