Текущий архив: 2003.04.21;
Скачать: CL | DM;
Вниз
Delphi + BDE + TQuary Найти похожие ветки
← →
Klim Samgin (2003-04-02 10:20) [0]Hi, All!
Вопрос ламерский.
Как забрать из TQuery результат запроса
SELECT COUNT(*) FROM MyTable
или любого, не возвращающего набор данных.
← →
Жук (2003-04-02 10:22) [1]
MyQuery.Fields[0].AsInteger
← →
Klim Samgin (2003-04-02 10:25) [2]Спасибо.
← →
Соловьев (2003-04-02 10:25) [3]приучайся указывать имя поля:
> SELECT COUNT(*) as CountRecordField FROM MyTable
а в проге обращятся по имени поля:
MyQuery.FieldByName("CountRecordField").AsInteger
← →
Klim Samgin (2003-04-02 10:52) [4]А ведь не катят ни тот ни другой способ.
← →
Соловьев (2003-04-02 10:55) [5]полный код?
← →
Klim Samgin (2003-04-02 11:00) [6]TmpQuery.Close;
TmpQuery.SQL.Clear;
TmpQuery.SQL.Add("Select Count(*) From Object");
TmpQuery.ExecSQL;
AllLabel.Caption := TmpQuery.Fields[0].AsString;
Выскакивает - ... EListError ... "List index out of bounds (0)"
Во втором варианте пишет, что поле не найдено.
← →
Соловьев (2003-04-02 11:03) [7]
> TmpQuery.ExecSQL;
TmpQuery.Open;
← →
Rol (2003-04-02 11:03) [8]не ExecSQL, а Open
← →
ЮЮ (2003-04-03 03:53) [9]>Вопрос ламерский.
>Как забрать из TQuery результат запроса
>SELECT COUNT(*) FROM MyTable
>или любого, не возвращающего набор данных.
SELECT всегда возвращает набор данных, даже если нет записей, удовлетворяющих запросу.
Не возвращают НД запросы INSERT, DELETE, UPDATE, CREATE и т.д.
Вот их результаты ты не заберешь, потому и говорят, что они не возвращают НД
← →
Anatoly Podgoretsky (2003-04-03 08:58) [10]Klim Samgin (02.04.03 10:20)
или любого, не возвращающего набор данных.
Чего нет, того нет, если не возвращается то выбирать нечего, но к SELECT такое не относится, оно и переводится так ВЫБРАТЬ
← →
Stas (2003-04-03 09:07) [11]SELECT не всегда взвращает набор данных !!!
Короче пиши так
SELECT :PAR=Count(*) From my table
В коде пиши EXECSQL, потом I:=Query1.params[0].asInteger
← →
Klim Samgin (2003-04-03 09:09) [12]Всем спасибо.
← →
Stas (2003-04-03 09:12) [13]Только нужно параметр настроить на Output, а тип Integer, и в SQL перед после ":PAR" должен быть пробел.
← →
stranger71 (2003-04-03 09:32) [14]Я давно уже написал себе и пользуюсь такой процедуркой
Function TDM.GetSQLResult(const s:String):Variant;
Begin
With TIBQuery.Create(nil) Do
try
Database:=IB_DB;
SQL.Add(s);
Open;
GetSQLResult:=Fields[0].AsVariant;
Close;
finally
Free;
end;
End;
← →
Johnmen (2003-04-03 09:46) [15]>Stas © (03.04.03 09:07)
Белая горячка ? :)))
← →
Соловьев (2003-04-03 09:52) [16]
> Stas © (03.04.03 09:07)
> SELECT не всегда взвращает набор данных !!!
> Короче пиши так
> SELECT :PAR=Count(*) From my table
> В коде пиши EXECSQL, потом I:=Query1.params[0].asInteger
бред севой кобылы....
Open и только Open
← →
Stas (2003-04-03 09:57) [17]Не мужики вы перед тем как спорить пробуйте !!!
А потом начинайте БРЕДИТЬ !!!
И БЕЛУЮ ГОРЯЧКУ ПОРОТЬ !!!
To Соловьев
Я с тобой уже спорил на какую-то тему. Но перед тем как что-то советовать я всегда моделирую ситуацию у себя.
Помести запрос на форму брось кнопочку и сделай все так как я сказал. А потом напиши получилось или нет.
А если ты сделаешь OPEN, у тебя система будет ругаться.
← →
Stas (2003-04-03 10:02) [18]Конечно я не знаю будет ли оно работать на парадоксине или *.DBF, я моделировал MS SQL SERVER. Поэтому не спорю если у Вас не получилась на локальной базе
← →
Соловьев (2003-04-03 10:06) [19]
SELECT Count(*) as Par From my table
в проге пишу:
with query do
begin
Close;
Open;
I := FieldByName("Par").AsInteger;
end;
не ругается...
а на счетSELECT :PAR=Count(*) From my table
что это такое и зачем не очень то и понятно...
← →
Anatoly Podgoretsky (2003-04-03 10:09) [20]Stas © (03.04.03 10:02)
Интересно какое отношение это имеет к вопросу, нраницы которого весь ма четко описаны - BDE + TQuery + Paradox
← →
Johnmen (2003-04-03 10:10) [21]"И незачем так орать" (c) Сова
BDE одназначно такой изврат не пропустит !
← →
Stas (2003-04-03 10:14) [22]SELECT :PAR=Count(*) From my table
А это данные ты записываешь в параметр, не открвая запроса.
Этот запрос будет работать быстрее.
Но это не работает с локальной базой, я только что проверил. Так что в какой-то степени я не прав, но это не бред и не белка, если учесть что в вопросе не указана определенная база...
← →
Соловьев (2003-04-03 10:17) [23]
> SELECT :PAR=Count(*) From my table
> А это данные ты записываешь в параметр, не открвая запроса
этого не знал, извини тогда.
а вот
> что в вопросе не указана определенная база...
> Delphi + BDE + TQuary [D6, Paradox]
в самом начале....
← →
Stas (2003-04-03 10:18) [24]TO Anatoly Podgoretsky & т.д.
ВСЕ!!! Я ИЗВЕНЯЮСЬ НЕ ДОСМОТРЕЛ ЧТО ЭТО ПАРАДОКС !!!
НО ЭТО НЕ ИЗВРАТ. ИЗВРАТ ЭТО BDE + TQuery + Paradox
← →
Anatoly Podgoretsky (2003-04-03 10:19) [25]Stas © (03.04.03 10:14)
В вопросе указана определенная база...
И даже компоненты доступа.
← →
Johnmen (2003-04-03 10:21) [26]>...если учесть что в вопросе не указана определенная база...
Да что ты ? Разве ?
← →
Stas (2003-04-03 10:22) [27]to Johmen & Anatoly Podgoretsky
См. Stas © (03.04.03 10:18)
← →
Johnmen (2003-04-03 10:26) [28]Если это действительно работает, действительно через BDE и действительно для MSSQL сервера, то это лишнее подтверждение того, как далеко мелкомягкие зашли в своих бредовых извращениях...:)
← →
Stas (2003-04-03 10:35) [29]Johnmen © (03.04.03 10:26), Я не знаю как через BDE, но через OLE DB, работает. Но ты же не хочешь сказать, что BDE чем-то превосходит MSSQL SERVER. А то, что я написал, лишний раз доказывает на сколько эта система гибкая, и позволяет выполнять такие операции.
← →
Izverg (2003-04-03 10:52) [30]Можно вообже не делать такого запроса. Просто когда делаешь select по базе воспользваться свойством MyTable.RecordCount
и получишь свое кол-во записей.
Можно явно объявить поле где будет собираться ко-во записей.
Например select count(*) as MyCount from MyTable.
Если поле явно не указывается, то Microsoft SQL возвращает поле с названием Column1. У других баз свои примабасы. Поэтому можешь пользоваться способами указанными выше
← →
Андрю-ХА! (2003-04-03 11:16) [31]2 Stas © (03.04.03 10:35)
сам давно использую данный способ на MS SQL 2000
работает на все 100%
← →
kkot (2003-04-03 11:23) [32]2 Anatoly Podgoretsky
Уважаемый, вы хоть один пост по существу вопроса можете поместить? А то Вас тут кто-то корифеем назвал...
2 All
Сорри за оффтоп.
← →
Stas (2003-04-03 11:27) [33]Андрю-ХА! (03.04.03 11:16)
Ну, вот хоть один человек поддержал, а то все попривыкали к "деревянному" парадоксу и шум подняли и от темы отклонились...
← →
Mike Kouzmine (2003-04-03 11:34) [34]Деревянный не парадокс (хотя кто не без недостатков?), а тот кто слишком уверен в своей правоте.
Страницы: 1 вся ветка
Текущий архив: 2003.04.21;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.068 c