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

Вниз

TQuery.FieldCount   Найти похожие ветки 

 
Новачок   (2003-05-23 15:55) [0]

Всем привет!

Скажите плиз, почему не показывается количество полей?

Var
i: integer;
qr: TQuery;

Begin
... //Здесь выполнился запрос. Там три поля.
i:=qr.Fields.Count;
... //значение i - ноль. ?!
End.


 
Новачок   (2003-05-23 15:57) [1]

Извиняюсь за различие между заголовком сообщения и текстом сообщения.

Дело в том, что я пробовал получить количество полей различными способами:

i:=qr.FieldCount;
i:=qr.Fields.Count;

оба варианта показывают ноль.


 
Johnmen   (2003-05-23 16:00) [2]

А так i:=qr.FieldCount; ?


 
Новачок   (2003-05-23 16:02) [3]

> Johnmen ©
Новачок (23.05.03 15:57)


 
Johnmen   (2003-05-23 16:08) [4]

Как выполняется запрос ?


 
Соловьев   (2003-05-23 16:13) [5]


> Новачок (23.05.03 15:55)

а зачем такая задача, когда известно сколько полей?



 
Новачок   (2003-05-23 16:18) [6]

> Johnmen
qr.ExecSQL;


 
Соловьев   (2003-05-23 16:21) [7]


> qr.ExecSQL;

прикольно :))) он набор данных не возвращает!!!
Хелп:
procedure ExecSQL;

Description

Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).



 
fool   (2003-05-23 16:23) [8]

>Новачок (23.05.03 16:18)
какие же здесь поля, ты же не запрос делаешь


 
Новачок   (2003-05-23 16:23) [9]

> Соловьев

Набор данных он возвращает.


 
Johnmen   (2003-05-23 16:24) [10]

Надо Open


 
fool   (2003-05-23 16:26) [11]

если ты пишешь gr.SQL.Text := "select...";
то пиши gr.Open и получишь FieldCount
иначе, как ты и делаешь qr.ExecSQL но полей не жди


 
Новачок   (2003-05-23 16:29) [12]

Странно... ведь сайт называется МАСТЕРА Delphi.

Текст SQL-запроса формируется в зависимости от различных условий.
Формируется именно список полей после оператора select:

declare @CntAllSymb int -- количество всех символов
declare @NumCurrSymb int -- номер текущего символа
declare @CurrSymb int -- текущий символ

declare @SH01 varchar(255)
declare @SH02 varchar(255)
declare @SH03 varchar(255)
declare @SH04 varchar(255)
declare @SH05 varchar(255)
declare @SH06 varchar(255)
declare @SH07 varchar(255)
declare @SH08 varchar(255)
declare @SH09 varchar(255)
declare @SH10 varchar(255)
declare @SH11 varchar(255)
declare @SH12 varchar(255)
declare @SH13 varchar(255)

declare @SG1 varchar(255)
declare @SG2 varchar(255)

declare @ST1 varchar(255)
declare @ST2 varchar(255)

declare @SM varchar(4)
declare @SC varchar(1000)

select @CntAllSymb = (select count(*) from garbage..C_ClnSymb)
select @NumCurrSymb = 0

select @SH01 = "select "
select @SH02 = "case "
select @SH03 = "when CRS.CID = 0 then "Чужой клиент" "
select @SH04 = "else (select CLN.CLN_FNAM "
select @SH05 = " from vicont..CLN CLN "
select @SH06 = " where CLN.CLN_ID = CRS.CID) "
select @SH07 = " end CLNNAME, "

select @SG1 = @SH01+@SH02+@SH03+@SH04+@SH05+@SH06+@SH07

select @SH08 = "case "
select @SH09 = "when CRS.CID = 0 then 99 "
select @SH10 = "else (select CLN.CLN_JP "
select @SH11 = " from vicont..CLN CLN "
select @SH12 = " where CLN.CLN_ID = CRS.CID) "
select @SH13 = " end CLNJP, CRS.CID"

select @SG2 = @SH08+@SH09+@SH10+@SH11+@SH12+@SH13

select @ST1 = " from garbage..C_ClnResSymb CRS"
select @ST2 = " order by 3"

select @SC = ""
while @NumCurrSymb < @CntAllSymb
begin
select @NumCurrSymb=@NumCurrSymb+1
select @CurrSymb = (select CS.SIMB from garbage..C_ClnSymb CS
where CS.ID = @NumCurrSymb)

select @SM = convert(varchar(4), @CurrSymb)
select @SC = @SC+", CRS.S"+@SM
end

execute(@SG1+@SG2+@SC+@ST1+@ST2)


Вот такой текст присваивается свойству qr.SQL
после чего я выполняю запрос qr.ExecSQL.


 
Новачок   (2003-05-23 16:32) [13]

>Johnmen © (23.05.03 16:24)
> Надо Open

а если ExecSQL - решений никаких нет?


 
sniknik   (2003-05-23 16:38) [14]

Новачок (23.05.03 16:32)
если ExecSQL то рекордсета в кверях просто нет, какие у него тогда поля?

Надо Open


 
Новачок   (2003-05-23 16:42) [15]

Вообщем, я думаю, необходимо все запихивать во временную таблицу с помощью ExecSQL, а потом открывать с помощью Open - и получать поля.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
3-34750
___esso
2003-05-23 20:45
2003.06.12
Значение поля


14-35056
Fuinadan
2003-05-27 20:31
2003.06.12
Машина Тьюринга!


3-34704
Nikos
2003-05-22 21:27
2003.06.12
Как продолжить поиск при использовании Lookup


14-34992
etem
2003-05-26 14:55
2003.06.12
При создании индекса по строковому полю трабл...


1-34797
Dush
2003-06-02 11:54
2003.06.12
Word





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский