Запрос на добавление |
жека | Дата: Среда, 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 -------------------- 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, точнее я понимаю зачем он нужен вообще, но не понятно для какой цели вы его хотите использовать, какой запос выполнять в данной постановке задачи! Я обходился без него для добавления строки. Конечно пришлось его использовать для того чтобы проверить есть уже ли такая запись в таблице или нету. Может для этого и нужен он вам ... Вот пример кода который я делал, ничего сложного не вижу: 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
|
|
| |
|