Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.11.2013, 17:03
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Запись значений в таблицу

Создаю таблицу программно. таблица сама создается, все ОК. а вот значения в поля не записываются. помогите, вот код.

Код:
begin

with datamodule2.ADOQuery1 do begin
SQL.Text:='CREATE TABLE '+edit1.text+' (ID INTEGER, Numb String, Obj VARCHAR(255), Data Date, Vremya Date, Id_Tovara INTEGER, PRIMARY KEY(ID))';
 if ExecSQL<>0 then begin
  with datamodule2.ADOTable1.Create (nil) do begin
   TableName:=edit1.text;
datamodule2.ADOTable1.Insert;
    datamodule2.ADOTable1.FieldByName('Numb').AsString :=NewDoc.Edit1.Text;
   post;
Ответить с цитированием
  #2  
Старый 08.11.2013, 18:12
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Scorpuha
Создаю таблицу программно. таблица сама создается, все ОК. а вот значения в поля не записываются. помогите, вот код.

Код:
begin

with datamodule2.ADOQuery1 do begin
SQL.Text:='CREATE TABLE '+edit1.text+' (ID INTEGER, Numb String, Obj VARCHAR(255), Data Date, Vremya Date, Id_Tovara INTEGER, PRIMARY KEY(ID))';
 if ExecSQL<>0 then begin
  with datamodule2.ADOTable1.Create (nil) do begin     <========
   TableName:=edit1.text;
datamodule2.ADOTable1.Insert;
    datamodule2.ADOTable1.FieldByName('Numb').AsString :=NewDoc.Edit1.Text;
   post;
Во-первых переделай всё без использования конструкции with - сразу пропадёт много непонятных глюков.
Во-вторых строка которую я пометил стрелкой неправильная - создавать новый объект нужно не от уже существующего объекта, а от класса:
Код:
var
  table1: TADOTable;
.....
begin
.....
  table1:=TADOTable.Create(nil);
  try
    table1.Connection:=datamodule2.ADOConnection1;
    table1.TableName:=edit1.text;
    table1.Open;
    table1.Append;
    table1.FieldByName('Numb').AsString :=NewDoc.Edit1.Text;
    table1.Post;
  finally
    table1.Free;
  end;
.....
end;
Ответить с цитированием
  #3  
Старый 11.11.2013, 15:57
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

вот такую ошибку выдает
Изображения
Тип файла: jpg errorrr.jpg (57.6 Кбайт, 2 просмотров)
Ответить с цитированием
  #4  
Старый 11.11.2013, 16:48
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Scorpuha
вот такую ошибку выдает
'123456' - это имя таблицы такое? А такая таблица точно существует?
Ответить с цитированием
  #5  
Старый 11.11.2013, 17:00
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

она создается, после нажатия кнопки.
Ответить с цитированием
  #6  
Старый 11.11.2013, 17:04
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Scorpuha
она создается, после нажатия кнопки.
Лучше не использовать в качестве имён таблиц имена начинающиеся на цифру. Но если уже такое случилось, то такое имя нужно заключать в квадратные скобки (или в кавычки).
Ответить с цитированием
  #7  
Старый 11.11.2013, 17:07
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

у меня имя таблицы берется из едита. как вы предлагаете имя включать в скобки?
Ответить с цитированием
  #8  
Старый 11.11.2013, 17:08
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Scorpuha
у меня имя таблицы берется из едита. как вы предлагаете имя включать в скобки?
Код:
table1.TableName:='['+edit1.text+']';
Ответить с цитированием
  #9  
Старый 11.11.2013, 17:12
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

таже самая ошибка.
Ответить с цитированием
  #10  
Старый 11.11.2013, 17:35
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Scorpuha
таже самая ошибка.
Только что специально проверил - у меня нормально создаётся таблица и нормально в неё записываются значения - даже не обязательно было заключать имя таблицы в квадратные скобки. Единственно требует только непустого, уникального значения для поля ID (так как оно является первичным ключом).
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:32.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter