Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.10.2013, 10:32   #1
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию БД+ADO+Access=ошибка

Вот код по нажатию кнопки, таблица создается, но вылетает ошибка о том что такой-то столбец отсутствует.вот текст ошибки "ADOQuery1: field 'Numb' not found."

Код:
procedure TNewDoc.Button1Click(Sender: TObject);


begin
datamodule2.ADOQuery1.Close;
{datamodule2.ADOQuery1.Open;
datamodule2.ADOQuery1.Active:=false;
datamodule2.ADOQuery1.Active:=true;
DataModule2.ADOQuery1.Edit;}
   with datamodule2.ADOQuery1 do
begin
SQL.Text:='CREATE TABLE '+edit1.text+' (ID INTEGER, Numb INTEGER, Obj VARCHAR(255), Data Date, Vremya Date, Id_Tovara INTEGER, PRIMARY KEY(ID))';
ExecSQL;

        DataModule2.ADOQuery1.FieldByName('Numb').AsString := NewDoc.Edit1.Text;
        DataModule2.ADOQuery1.FieldByName('Obj').AsString := NewDoc.DBLookupComboBox1.Text;
        DataModule2.ADOQuery1.FieldByName('Data').AsDateTime := Date;
        DataModule2.ADOQuery1.FieldByName('Vremya').AsDateTime := Now;
        DataModule2.ADOQuery1.Post;
        DataModule2.ADOQuery1.Refresh;
    Close;
end;
end;
Scorpuha вне форума
Старый 30.10.2013, 10:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Наверное потому что после создания таблицу нужно открывать (догадка)
Код:
SQL.Text:='CREATE TABLE '+edit1.text+' (ID INTEGER, Numb INTEGER, Obj VARCHAR(255), Data Date, Vremya Date, Id_Tovara INTEGER, PRIMARY KEY(ID))';
ExecSQL;

sql.text:='select * from '+edit1.text;
Active:=true;

        DataModule2.ADOQuery1.FieldByName('Numb').AsString := NewDoc.Edit1.Text;
I'm learning to live...
Stilet вне форума
Старый 30.10.2013, 11:01   #3
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Наверное потому что после создания таблицу нужно открывать (догадка)
Код:
Active:=true;
добавил строчку, теперь missing SQL property
Scorpuha вне форума
Старый 30.10.2013, 11:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
добавил строчку
А почему только одну "строчку"?
I'm learning to live...
Stilet вне форума
Старый 30.10.2013, 11:55   #5
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

и первую тоже добавил

Код:
datamodule2.ADOQuery1.Close;
datamodule2.ADOQuery1.open;
{datamodule2.ADOQuery1.Open;
datamodule2.ADOQuery1.Active:=false;
datamodule2.ADOQuery1.Active:=true;
DataModule2.ADOQuery1.Edit;}
   with datamodule2.ADOQuery1 do
begin
SQL.Text:='CREATE TABLE '+edit1.text+' (ID INTEGER, Numb INTEGER, Obj VARCHAR(255), Data Date, Vremya Date, Id_Tovara INTEGER, PRIMARY KEY(ID))';
ExecSQL;
sql.text:='select * from '+edit1.text;
     Active:=true;

        DataModule2.ADOQuery1.FieldByName('Numb').AsString := NewDoc.Edit1.Text;
Scorpuha вне форума
Старый 30.10.2013, 12:11   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда не знаю. Я предпочитаю редактировать SQL запросами.
I'm learning to live...
Stilet вне форума
Старый 30.10.2013, 12:30   #7
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я предпочитаю редактировать SQL запросами.

можно ваш вариант?
Scorpuha вне форума
Старый 30.10.2013, 13:03   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Можно:
Код:

with datamodule2.ADOQuery1 do begin
 SQL.Text:='CREATE TABLE '+edit1.text+
   ' (ID INTEGER, Numb INTEGER, Obj VARCHAR(255), Data Date, Vremya Date, Id_Tovara INTEGER, PRIMARY KEY(ID))';
 ExecSQL;

sql.text:='insert into '+edit1.text+' (Numb) values ('+QuotedStr(NewDoc.Edit1.Text)+')';
 ExecSQL;
end;
I'm learning to live...
Stilet вне форума
Старый 30.10.2013, 13:04   #9
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

для добавления/редактирования надо включить соответствующий режим
insert/edit

Код:
Active:=true;
insert;
FieldByName('Numb').AsString := NewDoc.Edit1.Text;
Пишу на Delphi за еду
Toxa вне форума
Старый 30.10.2013, 13:10   #10
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

Stilet, блин, чето не получается. таже ошибка. вы непрочь если проект скину.

Последний раз редактировалось Scorpuha; 30.10.2013 в 13:12.
Scorpuha вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при редактирование с полями со значением NULL: Access -> ADO VVkSoft БД в Delphi 7 01.04.2011 00:30
Ado, access. Clos Помощь студентам 8 19.06.2010 18:38
ADO --->Access Ekzot1k БД в Delphi 12 06.10.2009 09:09
Access и ADO stel2 БД в Delphi 3 05.06.2009 08:11