Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: Admin, stalker 
Форум » Все о Delphi » Базы данных » Запрос на добавление
Запрос на добавление
жекаДата: Среда, 04.03.2009, 16:12 | Сообщение # 1
Ранг 3
Группа: Проверенные
Сообщений: 26
Награды: 0
Репутация: 1
Статус: Offline
Помогите разобраться,а что то я не понимаю

Code
Form2.ADOQuery1.SQL.Add('INSERT INTO '+form1.ComboBox1.Text+' .....');

название таблицы берется из другой формы, он мне пишет синтаксическая ошибка, хотя с оператором SELECT работает нормально.

 
AdminДата: Среда, 04.03.2009, 17:21 | Сообщение # 2
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Code
INSERT INTO <table name> VALUES ( <value>, <value> . . .)

А название таблицы если подставить вручную будет работать?
И вот еще что написано вместо "..." может там ошибка?


Не оказываю помощь через личные сообщения и ICQ
 
жекаДата: Четверг, 05.03.2009, 01:00 | Сообщение # 3
Ранг 3
Группа: Проверенные
Сообщений: 26
Награды: 0
Репутация: 1
Статус: Offline
когда обычное название все нормально, замсто .... все нормально
 
AdminДата: Четверг, 05.03.2009, 08:43 | Сообщение # 4
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
А юнит первой формы точно добавлена в Uses второй?

Не оказываю помощь через личные сообщения и ICQ
 
жекаДата: Пятница, 06.03.2009, 15:48 | Сообщение # 5
Ранг 3
Группа: Проверенные
Сообщений: 26
Награды: 0
Репутация: 1
Статус: Offline
да добавлен
 
AdminДата: Пятница, 06.03.2009, 16:32 | Сообщение # 6
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Даже не знаю че может еще быть. Возможно имя таблицы неверно.

Не оказываю помощь через личные сообщения и ICQ
 
жекаДата: Суббота, 07.03.2009, 16:05 | Сообщение # 7
Ранг 3
Группа: Проверенные
Сообщений: 26
Награды: 0
Репутация: 1
Статус: Offline
ну а как оно может быть неверно, если запрос (select) проходит нормально, все перепробовал, все равно синтаксическая ошибка (
а можно как нить строковую переменную вбить?? типа S


Сообщение отредактировал жека - Суббота, 07.03.2009, 16:22
 
AdminДата: Суббота, 07.03.2009, 17:15 | Сообщение # 8
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Можно! вот пример параметрического запроса, думаю разберешся, все просто
Code
DataModule1.Query1.SQL.Clear;
DataModule1.Query1.SQL.Add('select * From Zvonok where (nt=:x)');
DataModule1.Query1.ParamByName('x').AsInteger:=StrToInt(Edit1.text);
DataModule1.Query1.Open;

nt - название колонки в таблице Zvonok. X - переменная, в которую заносятся данные в предпоследней строчке кода.


Не оказываю помощь через личные сообщения и ICQ
 
OneДата: Среда, 11.03.2009, 22:34 | Сообщение # 9
Ранг 1
Группа: Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
привет!
Помогите мне ПОЖАЛУЙСТА, что у меня не так:
Code
//dm.tANI_REG.Active := True;
dm.Query.DataSource := dm.dsAni_Reg;
dm.Query.Open;
//dm.Query.Active := False;
dm.Query.Insert;
dm.Query.FieldByName('IIN').AsString := frmCardAdd1.edIIN.Text;
dm.Query.FieldByName('ANI_NAME').AsString := frmCardAdd1.edAniName.Text;
dm.Query.FieldByName('DATE_BIRTH').AsDateTime := strtodate(frmCardAdd1.edBirth.Text);
dm.Query.FieldByName('COLOR').AsInteger := frmCardAdd1.cmbMast.KeyValue;
dm.Query.FieldByName('ANI_VIEW').AsInteger := frmCardAdd1.cmbView.KeyValue;
dm.Query.FieldByName('ANI_MALE').AsInteger := frmCardAdd1.cmbMale.KeyValue;
dm.Query.FieldByName('ID_FERMA').AsInteger := frmCardAdd1.cmbFerma.KeyValue;
dm.Query.FieldByName('DATE_REG').AsDateTime := strtodate(frmCardAdd1.edRegDate.Text);
dm.Query.Active := True;
dm.Query.Post;

Я уже замучилась, помогите пожалуйста
говорит, что Empty SQL statement
cry

--------------------

Admin: Пользуйтесь тегом code

 
AdminДата: Четверг, 12.03.2009, 09:41 | Сообщение # 10
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Ну в самом начале выполняется запрос, хотелось бы увидеть. И вообще зачем в Query добавлять строки? Я про Query.Insert;
Ошибка скорее всего именно в том что запроса вообще нету, он и гооврит Empty SQL statement, что в переводе пустой SQL запрос. У меня в Delphi7 говорит нечто похожее но маленько по другому, в Delphi 2009 не пробовал, других нету. Возможно у вас просто другая версия вот и говорит по другому.


Не оказываю помощь через личные сообщения и ICQ
 
OneДата: Четверг, 12.03.2009, 12:22 | Сообщение # 11
Ранг 1
Группа: Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
А запроса действительно нет! Я думала fieldbyname обходиться без самого insert-а, достаточно указать insert и поля со значениями. Можете мне помочь?! Постановка следующая: на форме есть ряд полей, edit-ы, combobox-ы, значения которых я хочу занести в таблицу, причем в таблицы имеется еще дополнительные поле ID, которое заполняется через Generator (тоже есть сомнения в правильности использования), я еще триггер создала на insert (на всякий случай, вдруг генератор не будет работать на момент вставки). В DataModule есть следуюшие компоненты, Database, Transacrion, TQuery, Ttable, DataSource. Как правильно соединить TQuery с Ttable и DataSource, если конечно нужно. Сейчас у меня вот так соединено:

у Query в ObjectInspector:
Database = Expert (это алиас моей БД, которую я указала компоненте БД);
DataSource = dsAniReg (это datasource к компоненту Ttable = tAniReg, т.е. моя таблица, в которую хочу произвести вставку);
Transaction = Transaction

у dsAniReg:
Dataset = tAi_Reg (это Ttable к таблице);

у tAni_Reg:
Databae = EXPERT (моя БД);
IndexFieldName = ID;
TableName = ANI_REG (моя таблица в БД);
Transaction = Transaction.

Вот вроде и все!
Я в первый раз пытаюсь произвести вставку, и никак не получается, помогите, пожалуйста, без Вас никак!!!

 
AdminДата: Четверг, 12.03.2009, 17:10 | Сообщение # 12
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Я не совсем понимаю зачем нужен Query, точнее я понимаю зачем он нужен вообще, но не понятно для какой цели вы его хотите использовать, какой запос выполнять в данной постановке задачи! Я обходился без него для добавления строки. Конечно пришлось его использовать для того чтобы проверить есть уже ли такая запись в таблице или нету. Может для этого и нужен он вам ... smile

Вот пример кода который я делал, ничего сложного не вижу:

Code
  Try
     DataModule1.ZvonokTable.Insert;
     DataModule1.ZvonokTable.FieldByName('Date').AsString := MaskEdit1.Text;
     DataModule1.ZvonokTable.FieldByName('City').AsString := Edit1.Text;
     DataModule1.ZvonokTable.FieldByName('Time').AsString := Edit2.Text;
     DataModule1.ZvonokTable.Post;
   except
     Form1.ShowDialogError(Error, 'Ошибка добавления записи');
   end;

Ну ShowDialogError(Error, 'Ошибка добавления записи') это моя собственная процедура для показывания моего собственного окна ошибки.
...
Помогло???


Не оказываю помощь через личные сообщения и ICQ
 
Форум » Все о Delphi » Базы данных » Запрос на добавление
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz