Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.54 MB
Время: 0.023 c
14-67521
mazepa
2003-04-02 16:53
2003.04.21
dcu


14-67463
kofman
2003-04-03 21:42
2003.04.21
Помогите с AdWare-проектом


7-67598
Seldon
2003-03-04 21:47
2003.04.21
Завершение работы


14-67501
Sheng
2003-04-03 17:27
2003.04.21
TreeView


1-67223
Checist[root]
2003-04-10 22:22
2003.04.21
Немного на СИ