powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TADOQuery
12 сообщений из 12, страница 1 из 1
TADOQuery
    #32299515
Anton.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо пулучить максимальное значение в столбце.

Если делать так:

ADOQuery.Close;
with ADOQuery.SQL do
begin
Clear;
Append ('SELECT MAX(Столбец1)');
Append ('FROM tblMain');
end;
ADOQuery.Open;

то выдает ошибку:

Access violation at address 1B041716 in module 'msjet40.dll'.

Если этот запрос прописать заранее, то работает.

Возможно это можно сделать намного проще. Кто знает - подскажите.
...
Рейтинг: 0 / 0
TADOQuery
    #32299524
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хмм так то вродебы все правильно ...

Если этот запрос прописать заранее, то работает.

А это как это ?

...
Рейтинг: 0 / 0
TADOQuery
    #32299540
Anton.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имел в виду прописать запрос на этапе проектирования (когда прога не запущена).

Наверняка можно это сделать проще, не заморачиваясь с ADOQuery. Кто знает - подскажите.
...
Рейтинг: 0 / 0
TADOQuery
    #32299571
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если попробовать вместо Close/Open менять Active:=false/true
...
Рейтинг: 0 / 0
TADOQuery
    #32299586
Anton.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не помогает.
...
Рейтинг: 0 / 0
TADOQuery
    #32299591
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access???
...
Рейтинг: 0 / 0
TADOQuery
    #32299597
Дятел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, ошибка, причем в Jetoвской DLL-е
Напишите так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
with ADOQuery.SQL do
begin
Clear;
Add ('SELECT  MAX(Столбец1) FROM tblMain');
end;

ADOQuery.Open;

а, вообще-то, можно проще

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 var
   R: _Recordset;
   MaxVal: Variant;
begin
  R := ADOConnection.Execute('SELECT  MAX(Столбец1) FROM tblMain');
  MaxVal :=  R.Fields[ 0 ].Value;
end;

Правда вторая схема может не работать на SQL сервере, если
CursorLocation = clUseServer. В этом случае Recordset будет пустым.
...
Рейтинг: 0 / 0
TADOQuery
    #32299598
Anton.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он самый.
...
Рейтинг: 0 / 0
TADOQuery
    #32299606
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ха.... интересно.... действительно так... пиши все в одну строку, все работает.... щаз попробую побороть
...
Рейтинг: 0 / 0
TADOQuery
    #32299612
Anton.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Дятел
Спасибо, помогло! Не такой ты и Дятел...
...
Рейтинг: 0 / 0
TADOQuery
    #32299634
Дятел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, если после Close сделать
AdoQuery.ParamCheck := false;,
то все работает в первоначальном варианте :))

З.Ы. Между прочим, дятел - птица не глупая... :)
...
Рейтинг: 0 / 0
TADOQuery
    #32299638
Малиновский Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я вот тут типа построил приложеньице:
- на форме TADOConnection, TADOQuery, TDataSource, TDBEdit
- все связаны в порядке перечисления.
ADOConnection :
ConnectionString =
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Program Files\Borland\Delphi7\Projects\TestAdo\db1.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False

LoginPronpt = False

DBEdit:
DataField = MAX_SUMMA


Текст программы:

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text :=
'SELECT max(SUMMA) as MAX_SUMMA FROM Tabl;';
ADOQuery1.Open;
end;

Все работает.


Windows2000 Pro SP4, Office2K SP2, Delphi 7.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TADOQuery
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]