Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.046 c
1-34848
JohnJ
2003-05-30 16:45
2003.06.12
Путь к проге...


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


14-35078
vidiv
2003-05-16 06:13
2003.06.12
#Письмо Пьера Безухова Наташе Ростовой.


4-35119
ККВ
2003-04-15 09:30
2003.06.12
Два приложения


8-34930
sndanil
2003-02-27 14:36
2003.06.12
Логарифмическая шкала