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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2008, 14:49   #1
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию ADO. Запрос на добавление. Ошибка.

Проблема следующая. Есть БД в Access. В ней таблица polu4 с полями id (целое, ключевое) и name (текстовое 50 символов). Выполняю запрос на добавление:
procedure TForm1.Button2Click(Sender: TObject);
begin
DataSource1.DataSet:=nil;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Text:=('INSERT INTO polu4 (id , name) VALUES (1, "Про")');
ADOQuery1.Open;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Text:=('SELECT * FROM polu4');
ADOQuery1.Open;
DataSource1.DataSet:=ADOQuery1;
end;
Возникает ощибка следующего содержания:

Что я делаю не так?
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума Ответить с цитированием
Старый 25.12.2008, 15:19   #2
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

id - случайно не автоматом должно добавлять значение ?? =)) (Счетчик?)
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 25.12.2008, 15:22   #3
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию

Цитата:
Сообщение от Sm1Le Посмотреть сообщение
id - случайно не автоматом должно добавлять значение ?? =)) (Счетчик?)
В принципе да. Я тоже думал ошибка в этом. поэтому поставил прочто целое число. Со счетчиком аналогично не работает.
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума Ответить с цитированием
Старый 25.12.2008, 15:27   #4
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Код:
ADOQuery1.SQL.Text:=('INSERT INTO polu4 (id , name) VALUES (1, "Про")');
можно так :
Код:
ADOQuery1.SQL.Text:='INSERT INTO polu4 (id , name) VALUES (1, "Про")';
но это не суть важно ... Видимо оно второй параметр не видит правильно ... Какие то траблы со кавычками... Акцеса нету проверить =(((
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 25.12.2008, 15:29   #5
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию

Цитата:
Сообщение от Sm1Le Посмотреть сообщение
Код:
ADOQuery1.SQL.Text:=('INSERT INTO polu4 (id , name) VALUES (1, "Про")');
можно так :
Код:
ADOQuery1.SQL.Text:='INSERT INTO polu4 (id , name) VALUES (1, "Про")';
но это не суть важно ... Видимо оно второй параметр не видит правильно ... Какие то траблы со кавычками... Акцеса нету проверить =(((
Совершенно верно. Не суть важно. Проблема остается)
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума Ответить с цитированием
Старый 25.12.2008, 15:29   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вот эта конструкция всегда будет давать ошибку:
ADOQuery1.SQL.Text:=('INSERT INTO polu4 (id , name) VALUES (1, "Про")');
ADOQuery1.Open;
Зарубите себе на носу, что ли, что
ADOQuery1.Open используется только для получения набора данных, возвращаемого запросом (а тут он ничего не возвращает!)
ADOQuery1.ExecSQL - для выполнения операций по удалению, вставке и т.д., т.е. операций, по определению не возвращающих ничего...
mihali4 вне форума Ответить с цитированием
Старый 25.12.2008, 15:35   #7
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Вот эта конструкция всегда будет давать ошибку:
ADOQuery1.SQL.Text:=('INSERT INTO polu4 (id , name) VALUES (1, "Про")');
ADOQuery1.Open;
Зарубите себе на носу, что ли, что
ADOQuery1.Open используется только для получения набора данных, возвращаемого запросом (а тут он ничего не возвращает!)
ADOQuery1.ExecSQL - для выполнения операций по удалению, вставке и т.д., т.е. операций, по определению не возвращающих ничего...
+1 тормоз Я =((( Сам люблю в это носом тыкать а тут =((( спс =)) ...
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 25.12.2008, 15:38   #8
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Вот эта конструкция всегда будет давать ошибку:
ADOQuery1.SQL.Text:=('INSERT INTO polu4 (id , name) VALUES (1, "Про")');
ADOQuery1.Open;
Зарубите себе на носу, что ли, что
ADOQuery1.Open используется только для получения набора данных, возвращаемого запросом (а тут он ничего не возвращает!)
ADOQuery1.ExecSQL - для выполнения операций по удалению, вставке и т.д., т.е. операций, по определению не возвращающих ничего...
Ошибка остается.
Весь код программы:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;

type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
DataSource1.DataSet:=ADOQuery1;
ADOQuery1.Active:=true;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
DataSource1.DataSet:=nil;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Text:='INSERT INTO polu4 (id , name) VALUES (1, "Про")';
ADOQuery1.ExecSQL;
ADOQuery1.Active:=false;
ADOQuery1.SQL.Text:=('SELECT * FROM polu4');
ADOQuery1.ExecSQL;
DataSource1.DataSet:=ADOQuery1;

end;

end.
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума Ответить с цитированием
Старый 25.12.2008, 15:51   #9
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Код:
ADOQuery1.SQL.Text:=('SELECT * FROM polu4');
ADOQuery1.ExecSQL;
Перечитай пост Михалыча ! ! !

Код:
ADOQuery1.SQL.Text:=('SELECT * FROM polu4');
ADOQuery1.Open;
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 25.12.2008, 16:12   #10
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию

Не помогло. Ошибка стопрится после превой строки ADOQuery1.ExecSQL;
после запроса на добавление.
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос на добавление поля в таблицу mirawoo Microsoft Office Access 9 17.07.2008 16:44
Помогите, запрос на добавление DisaMS Microsoft Office Access 5 10.06.2008 12:39
Ошибка ADO Баламут БД в Delphi 0 12.10.2007 03:49
запрос на добавление William Microsoft Office Access 3 13.07.2007 22:00