Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADOQuery, Проблемы с запросом :( 
:(
    Опции темы
Fast
Дата 21.3.2006, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 21.3.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Делаю через ADOQuery1 запрос и вылезают постоянно ошибки =(
Типа проводник не поддерживает несколько операций
Вот код
Цитата

procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Active:=False;
SQL.Clear;
SQl.Add('INSERT INTO Таблица (Дата)');
Sql.Add('VALUES ("'+FormatDateTime('dd.mm.yy',Date)+'")');
Active:=True;
end;

Возился с параметрами но понял что с ними без литературы не разобраться =(
А времени в обрез =(

PM MAIL   Вверх
Sponger
Дата 21.3.2006, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 14.2.2006

Репутация: нет
Всего: нет



сделай так

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.Active:=False;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQl.text := 'INSERT INTO Таблица ([Дата]) VALUES (:Дата)';
  ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQl.text, TRUE);
  ADOQuery1.Parameters.ParamValues['дата'] := FormatDateTime('dd.mm.yy',Date);
  ADOQuery1.execute;


Это сообщение отредактировал(а) Sponger - 21.3.2006, 08:06
PM MAIL   Вверх
Fast
Дата 22.3.2006, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 21.3.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



У меня нельзя написать ADOQuery1.execute; smile
Использую вместо этого ADOQuery1.ExecSQL;
Строчка добавляется но выдаётся окно ошибки где написано что текеущий проводник не поддерживает возврат нескольких наборов записей в результате одной операции smile
PM MAIL   Вверх
Vit
Дата 22.3.2006, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



А кто такой "проводник"? - работаю с ADO с самого момента его создания ни разу такого зверя не встречал. Можно привести дословное сообщение об ошибке, а лучше кусок кода с выделенной строкой в которой ошибка и картинку с сообщением об этой ошибке. Тем более что в вашем запросе я не вижу множественных наборов записей...

Кстати базу данных и версию дельфи тоже хотелось бы узнать...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
kulikoff
Дата 22.3.2006, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 5.11.2005
Где: Киев

Репутация: 1
Всего: 1



ну, я бы писал немного по-другому:
Код

 procedure TForm1.Button1Click(Sender: TObject);
var b: TDateTime;
begin
  b:=FormatDateTime('dd.mm.yy',Date);
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQl.text := 'INSERT INTO Таблица ([Дата]) VALUES (:Дата)';
  ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQl.text, TRUE);
  ADOQuery1.Parameters.ParamByName('Дата').Value:=b;
  ADOQuery1.execSQL; 
end;


Абсолютно точно работает, попробывал у себя. Тут хитрый финт ушами с переменной b, не знаю почему, но так работает, а если непосредственно параметру запроса передавать дату - очень часто у меня глючит...
Ну и другие свойства поставил - они, вроде, понадежней и быстрее работают, но не уверен на счет производительности
PM MAIL WWW ICQ Skype   Вверх
Fast
Дата 23.3.2006, 04:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 21.3.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Даннык добавляются только вот изменений в DBGrid'е не видно =(
новая строка появляется только после перезапуска программы =(
Как сделать чтобы строка появлялась сразу после выполнения запроса ?
PM MAIL   Вверх
Sponger
Дата 23.3.2006, 06:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 14.2.2006

Репутация: нет
Всего: нет



Заново открой запрос
PM MAIL   Вверх
Vit
Дата 23.3.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



метод requery


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
ADAM83
Дата 24.3.2006, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



Fast, не пробовал обновить dbgrid
DBGrid.Update или ADOQuery1.Open
PM MAIL   Вверх
Fast
Дата 24.3.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 21.3.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Цитата(ADAM83 @ 24.3.2006, 07:30 Найти цитируемый пост)
не пробовал обновить dbgrid
DBGrid.Update или ADOQuery1.Open

Вот только что попробывал smile
Если ADOQuery1.Open не ставить то ничего не меняется
А если поставить ADOQuery1.Open; то выдаётся ошибка
"AdoQuery1: CommandText does not return a result set"
smile smile
PM MAIL   Вверх
kulikoff
Дата 24.3.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 5.11.2005
Где: Киев

Репутация: 1
Всего: 1



В insert'e надо использовать только ExecSQL. После выполнения запроса - обнови DBGrid и всё. DBGrid1.Refresh - и всё будет путем
PM MAIL WWW ICQ Skype   Вверх
ADAM83
Дата 24.3.2006, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



Цитата

В insert'e надо использовать только ExecSQL

Это где используется, что-то я не помню.
А нельзя ли делать так:
вместо ADOQuery1.SQL.Text:='select...' написать ADOQuery1.SQL.Add('select...')
потому что квер у Fastа никакого результата не возвращает, а пробует он ADOQuery1.Open и выходит ошибка. И после этого написать DBGrid.Update или DBGrid.refresh
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1006 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.