Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема со вставкой данных в базу [D6, Paradox]


Strori ©   (2005-02-23 12:41:00) 

Привет всем.
Есть код обработки нажатия на кнопку
procedure TForm1.Button7Click(Sender: TObject);
begin
Form1.Query1.Close;
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add('INSERT INTO PostBase (Form) values (тест)');
Form1.Query1.Open;
end;

После компиляции при нажатии на кнопку выдается ошибка BDE "Invalid field name. текст". В чем проблема? Почему "текст" определяется как field name? Которое по идее Form в таблице.


Ольга   (2005-02-24 17:28:00) [1]

Источником данных DBGrid должен быть Query типа 'SELECT...', а не 'INSERT...'


Anatoly Podgoretsky   (2005-02-24 14:13:00) [2]

Повторяю Active и Open это эквиваленты и они не применимы. Читай справку по Open и ExecSQL


Strori   (2005-02-24 05:29:00) [3]

В общем итоговый код
procedure TForm1.Button7Click(Sender: TObject);
begin
Form1.Query1.Close;
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add('INSERT INTO PostBase');
Form1.Query1.SQL.Add('(Form)');
Form1.Query1.SQL.Add('values ("'+Form1.Edit3.Text+'")');
Form1.Query1.ExecSQL;
end;

Данные добавляются в базу, но свойство Query1.Active автоматически ставится в false. Как с этим бороться? попытка добавить перед end; строку Form1.Query1.Active:=true; приводит к той же ошибке "Error creating cursor handle".


Strori   (2005-02-24 03:25:00) [4]

А в какой есть? Чтобы вместо трех была?


Anatoly Podgoretsky   (2005-02-23 17:24:00) [5]

Если не врешь то книжки эти выкини, а в справке тоже точно нет? Не поверю, что у тебя персональный вариант справки, с купюрами.


DiamondShark   (2005-02-23 16:25:00) [6]


> А как DBGrid после этого обновить?

Неужели ни в одной из трёх книжек нету?


Strori   (2005-02-23 15:17:00) [7]

три книжки есть. такого варианта ни в одной нет. :(
работает, спасибо. А как DBGrid после этого обновить?


Плохиш   (2005-02-23 15:05:00) [8]

Query1.ExecSQL

Когда будем книжки/справку читать?


Strori   (2005-02-23 14:57:00) [9]

Project Project1.exe raised exception class ENoResultSet with message "Error creating cursor handle". Пишет после клика на кнопу. :(


DSKalugin   (2005-02-23 14:56:00) [10]

ошибся для Form не нужны кавычки


P.N.P.   (2005-02-23 14:23:00) [11]

Form1.Query1.SQL.Add('INSERT INTO PostBase (Form) values (''тест'')');


Плохиш   (2005-02-23 14:22:00) [12]

Query1.SQL.Add('INSERT INTO PostBase (Form) values (''тест'')');


Strori   (2005-02-23 14:19:00) [13]

А можно пример? На моём коде? Ставлю одинарные кавычки и на 'Form' и на 'тест' и по отдельности как предложил почтенный DSKalugin - проект не компилится.


Anatoly Podgoretsky   (2005-02-23 13:47:00) [14]

Значит брать в кавычки данные, с Edit1.Text тоже самое.


Strori   (2005-02-23 13:37:00) [15]

Form - столбец в таблице базы.
тест - значение, которое нужно вставить в этот столбец...Поле и значение. В оригинале вместо "тест" будет Edit1.Text, но там та же проблема.


Anatoly Podgoretsky   (2005-02-23 13:17:00) [16]

Я не уверен в этом, не зная сути, что это такое, может это поля


DSKalugin   (2005-02-23 13:10:00) [17]

точно, Анатолий!
надо взять в одинарные кавычки
('Form')  ('тест')


Anatoly Podgoretsky   (2005-02-23 12:53:00) [18]

Кое кто нам не всю информацию сказал, что такое Form, что такое тест, если литерал, то почему не в кавычках в соответствии с синтаксисом формата и движка. Кто такое этот "текст"?


DSKalugin   (2005-02-23 12:51:00) [19]

вместо Form1.Query1.Open;
надобно Form1.Query1.ExecSQL;
подробности в хэлпе

procedure ExecSQL;

Description

Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).

Note: For SELECT statements, call Open instead of ExecSQL.


Наверх

Титульная страница Поиск, карта сайта Написать письмо