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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2009, 20:53   #1
sPan4eZ
Пользователь
 
Регистрация: 16.09.2009
Сообщений: 17
По умолчанию [delphi] ADOQuery Проблема

У меня следующая ошибка почему после добавление в таблицу записи выдает ошибку после нажатие открытие ее

Вот коды:

Кнопка Добавить:

Код:
begin
ADOQuery1.Active:=False;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Insert Into Table1 (ИмяТовара,Цена,Склад)');
ADOQuery1.SQL.Add('Values ("'+Edit1.Text+'",'+Edit2.Text+','+Edit3.text+')');
ADOQuery1.ExecSQL;
end;
Кнопка Старт:

Код:
begin
ADOQuery1.Active:=True;
end;
После того как добавив запись и по нажатие на кнопку старт выдает ошибку

Цитата:
Project Project1.exe raised exception class EOleException with message 'Текущий проводник не поддерживает возврат нескольких наборов записей в результате одной операции'. Process stopped. Use Step or Run to continue.
sPan4eZ вне форума Ответить с цитированием
Старый 16.09.2009, 21:05   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

1. Потому что ADOQuery1.ExecSQL; уже открывает твой набор, а ты пытаешься его открыть повторно.
2. Для функции INSERT (а у тебя именно она) вызывается только ExecSQL и никак иначе.
Тебе нужно так:
добавить:
Код:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text:='Insert Into Table1 (ИмяТовара,Цена,Склад) Values ("'+Edit1.Text+'",'+Edit2.Text+','+Edit3.text+')';
ADOQuery1.ExecSQL;
end;
старт:
Код:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text:='SELECT ИмяТовара, Цена,Склад FROM Table1';
ADOQuery1.Open;
end;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 16.09.2009 в 21:09.
Yurk@ вне форума Ответить с цитированием
Старый 16.09.2009, 21:08   #3
sPan4eZ
Пользователь
 
Регистрация: 16.09.2009
Сообщений: 17
По умолчанию

Ура спасибо большое!!!

Последний раз редактировалось sPan4eZ; 16.09.2009 в 21:13.
sPan4eZ вне форума Ответить с цитированием
Старый 16.09.2009, 22:05   #4
sPan4eZ
Пользователь
 
Регистрация: 16.09.2009
Сообщений: 17
По умолчанию

Теперь трабла с Update:

Код:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Update From Table1');
ADOQuery1.SQL.Add('Set Имя Товара='+'"'+Edit6.Text+'"'+
                        ', Цена='+Edit5.Text+
                        ', Склад='+Edit7.Text);
ADOQuery1.SQL.Add('Where Код ='+ Edit4.Text);
ADOQuery1.ExecSQL;
end;
Ему почему то не нравится вот эта строчка ADOQuery1.ExecSQL; Процедура останавливается на ней и выдает ошибку
Цитата:
Ошибка синтаксиса Update
Какая именно ошибка?

Перепробовал по разному не чего не выходит(

Последний раз редактировалось sPan4eZ; 16.09.2009 в 22:11.
sPan4eZ вне форума Ответить с цитированием
Старый 16.09.2009, 22:14   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
'Set Имя Товара=
а что, поле Имя товара прямо так с пробелом и есть?
вроде выше оно было без пробела..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.09.2009, 22:18   #6
sPan4eZ
Пользователь
 
Регистрация: 16.09.2009
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а что, поле Имя товара прямо так с пробелом и есть?
вроде выше оно было без пробела..
Оп не уследил Спасибо
sPan4eZ вне форума Ответить с цитированием
Старый 16.09.2009, 23:14   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Код:
ADOQuery1.SQL.Add('Update Table1');
soleil@mmc вне форума Ответить с цитированием
Старый 16.09.2009, 23:43   #8
sPan4eZ
Пользователь
 
Регистрация: 16.09.2009
Сообщений: 17
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
Код:
ADOQuery1.SQL.Add('Update Table1');
Угу спасибо это я уже заметил ))))

Народ как сделать чтобы из DBLookupComboBox1 после выбора строки добавлялась в другую таблицу как запись??

Последний раз редактировалось sPan4eZ; 17.09.2009 в 02:29.
sPan4eZ вне форума Ответить с цитированием
Старый 17.09.2009, 05:51   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вообще, мне кажется, что Вы неправильно что-то замыслили...

впрочем, хозяин — барин...
код добавления записи есть? Повесить его на нужное событие компонента DBLookupComboBox1 (например, на OnChange).
p.s. только неверно это. вот смотрите, выбрали что-то из комбобокса, запись добавилась... тут же, не выходя из комбобокса открыли список и выбрали другое значение, запись опять добавилась...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.09.2009, 11:12   #10
sPan4eZ
Пользователь
 
Регистрация: 16.09.2009
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вообще, мне кажется, что Вы неправильно что-то замыслили...

впрочем, хозяин — барин...
код добавления записи есть? Повесить его на нужное событие компонента DBLookupComboBox1 (например, на OnChange).
p.s. только неверно это. вот смотрите, выбрали что-то из комбобокса, запись добавилась... тут же, не выходя из комбобокса открыли список и выбрали другое значение, запись опять добавилась...
Ты наверно не так понел меня короче объясню на примере

Есть 2 таблицы Table1 и Table2 они в Accesse связаны "один ко многим"

Table1 идет связь ADOConnection1 ADOQuery1 DataSource1 и все это выводится в BDGrid

Table2 идет связь ADOConnection1 ADOQuery2 DataSource2 и выводится только одно поле например НормерСкалада в DBLookupComboBox1

Я хочу сделать добавление с помощью выбора название из DBLookupComboBox1 чтобы это название добавилась в таблицу которая выводится BDGrid

Но у меня не получается вот код как я делаю:

Код:
begin
Adoquery1.Active:=False;
Adoquery1.Close;
Adoquery1.SQL.Clear;
Adoquery1.SQL.Add('insert into Состав');
Adoquery1.SQL.Add('(Имя,Ник,Класс,констпати)');
Adoquery1.SQL.Add('Values("'+Edit1.Text+'","'+Edit2.Text+'","'+DBLookupComboBox1.Text+'","'+DBLookupComboBox2.Text+'")');
Adoquery1.ExecSQL;
end;
Пишит ошибку "Неправильный синтаксис Insert into" и процедура останавливается на:

Код:
Adoquery1.ExecSQL;
sPan4eZ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AdoQuery lenuxoid БД в Delphi 6 25.03.2010 18:24
AdoQuery Stanislav БД в Delphi 34 26.06.2009 22:09
Помогите с запросом ADOQuery в Delphi 7 Wolverine БД в Delphi 21 25.05.2009 15:03
ADOQuery Roof БД в Delphi 2 12.07.2008 18:08
adoquery Toxa БД в Delphi 10 12.02.2007 20:07