|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.12.2008, 14:49 | #1 |
Пользователь
Регистрация: 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; Возникает ощибка следующего содержания: Что я делаю не так?
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
|
25.12.2008, 15:19 | #2 |
Форумчанин
Регистрация: 31.10.2008
Сообщений: 500
|
id - случайно не автоматом должно добавлять значение ?? =)) (Счетчик?)
Skype : UASm1Le.
|
25.12.2008, 15:22 | #3 |
Пользователь
Регистрация: 24.11.2008
Сообщений: 76
|
В принципе да. Я тоже думал ошибка в этом. поэтому поставил прочто целое число. Со счетчиком аналогично не работает.
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
|
25.12.2008, 15:27 | #4 |
Форумчанин
Регистрация: 31.10.2008
Сообщений: 500
|
Код:
Код:
Skype : UASm1Le.
|
25.12.2008, 15:29 | #5 | |
Пользователь
Регистрация: 24.11.2008
Сообщений: 76
|
Цитата:
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
|
|
25.12.2008, 15:29 | #6 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Вот эта конструкция всегда будет давать ошибку:
ADOQuery1.SQL.Text:=('INSERT INTO polu4 (id , name) VALUES (1, "Про")'); ADOQuery1.Open; Зарубите себе на носу, что ли, что ADOQuery1.Open используется только для получения набора данных, возвращаемого запросом (а тут он ничего не возвращает!) ADOQuery1.ExecSQL - для выполнения операций по удалению, вставке и т.д., т.е. операций, по определению не возвращающих ничего... |
25.12.2008, 15:35 | #7 | |
Форумчанин
Регистрация: 31.10.2008
Сообщений: 500
|
Цитата:
Skype : UASm1Le.
|
|
25.12.2008, 15:38 | #8 | |
Пользователь
Регистрация: 24.11.2008
Сообщений: 76
|
Цитата:
Весь код программы: 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.
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
|
|
25.12.2008, 15:51 | #9 |
Форумчанин
Регистрация: 31.10.2008
Сообщений: 500
|
Код:
Код:
Skype : UASm1Le.
|
25.12.2008, 16:12 | #10 |
Пользователь
Регистрация: 24.11.2008
Сообщений: 76
|
Не помогло. Ошибка стопрится после превой строки ADOQuery1.ExecSQL;
после запроса на добавление.
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запрос на добавление поля в таблицу | 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 |