Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.009 c
14-67488
psyho
2003-04-02 14:17
2003.04.21
программка записи cd


3-67125
Officeman
2003-04-01 20:48
2003.04.21
Использование текстовых таблиц


14-67545
CAMOBAP
2003-04-04 16:01
2003.04.21
i


6-67411
HDD
2003-02-27 16:41
2003.04.21
Помогите пожалуйста!


14-67558
RIMMER
2003-04-01 22:51
2003.04.21
Спасайте, горит автомат по биохимии!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский