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

Вниз

Как узнать, сколько строк вернул запрос?   Найти похожие ветки 

 
tria   (2003-10-02 10:27) [0]

Использую TIBSql. Можно ли узнать, сколько строк вернул запрос? До того, как пройдусь по всем строкам?


 
mfender   (2003-10-02 10:28) [1]

property RecordCount: Integer;


 
Johnmen   (2003-10-02 10:35) [2]

TIBSQL не предназначен для возвращения НД !


 
tria   (2003-10-02 10:37) [3]

Johnmen> Если можно, расшифруй, что значит НД?


 
mfender   (2003-10-02 10:40) [4]

набор данных.


 
tria   (2003-10-02 10:49) [5]

Не, что то вы не правы.
При открытии RecordCount всегда 0 или 1. При каждом Next он увеличивается на 1, пока не считаешь все строки.
А данные он возвращает, только не в привычном TField а TIBXSQLVAR.


 
Vlad   (2003-10-02 11:01) [6]

Думаю что никак. В IBSQL нельзя получить сразу все данные, т.к. он фетчит их сам, по мере необходимости.
Дружеский совет: используй для таких целей IBQuery или IBDataSet. Там есть метод FetchAll


 
Johnmen   (2003-10-02 11:03) [7]

Ответы на твои вопросы и сомнения:
TIBSQL+F1
RecordCount+F1
:)


 
tria   (2003-10-02 11:18) [8]

Johnmen> Вопросы то и возникли после F1.
Vlad>Вопрос встал такой: я делаю запрос, после этого результаты отражаю в обычном гриде, буфер данных в виде TFields мне вроде как и не нужен. Но думаю, что много времени теряю при увеличении количества строк в гриде на 1 при каждом Next. Хочется как-то оптимизировать данную процедуру.


 
Vlad   (2003-10-02 11:25) [9]

>tria © (02.10.03 11:18) [8]
Если ты уж настаиваешь на использовании IBSQL, тогда делай 2 компонента. Один тебе будет возвращать основной набор данных, а другой - count(*). Так должно быть быстрее.


 
tria   (2003-10-02 11:28) [10]

В смысле два последовательных запроса в пределах одной транзакции SnapShot?


 
Vlad   (2003-10-02 11:29) [11]

Ну да, чем не вариант ?


 
tria   (2003-10-02 11:33) [12]

Дело в том, что транзакция чтения у меня не SnapShot, а "read_committed","rec_version","nowait"
Делать ее SnapShot - лишняя нагрузка на сервер.
И опять же, для запроса, вернувшего 5 строк, выгоднее работать одним запросом. Для случая 500 - наверное вторым. А у меня есть и такие, и такие. И заранее знать сколько приблизительно строк вернет запрос я не могу.
Все равно большое спасибо за обсуждение.


 
Johnmen   (2003-10-02 11:35) [13]

>tria © (02.10.03 11:18)

Не верю :) Не верю, что ты смог отобразить в "обычном гриде" НД, полученный с пом. TIBSQL ! Он же однонаправленный !


 
tria   (2003-10-02 11:39) [14]

Все очень просто: использую не TDbGrid, а потомок от TDrawgrid для простого отображения данных.
Считал строку запроса, добавил в грид строку,перенес значения.


 
Sergey13   (2003-10-02 11:46) [15]

2tria © (02.10.03 11:39) [14]
>Все очень просто: использую не TDbGrid, а потомок от TDrawgrid для простого отображения данных.
Считал строку запроса, добавил в грид строку,перенес значения.

Задача становится все более интересной. 8-)


 
tria   (2003-10-02 11:51) [16]

Sergey13>Offtop. Классная у тебя анкета... Оценил.


 
Sergey13   (2003-10-02 11:54) [17]

2tria © (02.10.03 11:51) [16]
>Offtop
А че такое? Я даже сам перечитал, чего не делал мимимум год. 8-)


 
Жук   (2003-10-02 11:56) [18]


> Sergey13 © (02.10.03 11:54) [17]

:-)))


 
tria   (2003-10-02 11:58) [19]

Sergey13>Offtop Последние данные: увлечение/хобби + интересное о себе. Вызвало улыбку и у соседей по кабинету. Ладно, закрыли эту тему. Лучше скажи, чем же так интересна задача?


 
Sergey13   (2003-10-02 11:58) [20]

А че вы так ржете то? Там только правда и ничего кроме правды. 8-)
Я обиделся и ушел. 8-(


 
tria   (2003-10-02 12:02) [21]

Sergey13>Offtop Блин, да юмор твой понравился. Я бы сам такое написал, если бы додумался. Мы тебя хвалим, а ты обижаешься. Все, хватит об этом.


 
Vlad   (2003-10-02 12:03) [22]

Лично для меня задачка интересна тем, почему такие хитрости - премудрости ? Чем обычная связка DBGrid-DataSource-IBDataSet не устраивает ? Из соображений экономии памяти ? Сомневаюсь...


 
tria   (2003-10-02 12:50) [23]

Прошу прощения за отсутствие.

Попробую по пунктам некоторые особенности:
1. Грид с возможностью объединения ячееек.
2. Одна запись может соответствовать нескольким строкам грида. Таких ДБГридов я не встречал. Может вы знаете.
3. Корректировка записи происходит не в гриде, а в открывающемся окне.


 
Vlad   (2003-10-02 12:53) [24]

Ну тогда всё круто :)


 
MsGuns   (2003-10-02 13:17) [25]

>tria © (02.10.03 12:50) [23]
>Попробую по пунктам некоторые особенности:

>1. Грид с возможностью объединения ячееек.
Без проблем на обычном гриде с написанием, ессно, кое-какого кода

>. Одна запись может соответствовать нескольким строкам грида.
OnDawColumnCll - и что душе угодно, хотб голых девок в ячейках.

>. Корректировка записи происходит не в гриде, а в открывающемся окне.
А причем здесь грид ?

Вообще же, ИМХО, присутствует некоторое умничание, т.е. попытка простое сделать сложным ;)))


 
stud   (2003-10-02 13:22) [26]

тебе поможет quantumgrid!))


 
tria   (2003-10-02 14:06) [27]

>MsGuns А я не умничаю. Я специалист по 1С, а Делфи - больше для души.
>1. Грид с возможностью объединения ячееек.
>Без проблем на обычном гриде с написанием, ессно, кое-какого кода
Не знаю, у меня до сих пор проблемы. Хоть и мелкие. И пусть мне многоуважаемый MsGuns кинет в меня исходником, где бы он реализовал зачатки такого грида. Иначе при всем уважении - "ИМХО, присутствует некоторое умничание". Докажи обратное.

stud> Слышал, но не рассматривал. Но как-то в форуме было обсуждение, в котором было сказано об отсутсвии гридов, в которых одна запись представлялась бы несколькими строками. Но как я уже говорил, могу сильно ошибаться.

Хотя поздно, много чего уже работает, в откате назад не вижу смысла.


 
VAleksey   (2003-10-02 14:43) [28]

Можно я подведу итог?
По сабжу:
Либо отдельный запрос с count, либо FetchAll + RecordCount.
По вопросу в теле сообщения:
Только предварительный count запроса. Иначе никак.


 
tria   (2003-10-02 14:47) [29]

>VAleksey
Спасибо за внесенную ясность. Я с тобой согласен. Просто надеялся, что может есть какая-то возможность.


 
MsGuns   (2003-10-02 16:40) [30]

>tria © (02.10.03 14:06) [27]
Не для того, чтобы что-то тебе доказать - мне это абсолютно не надо, а токмо ради пользы дела - получай "зачатки"

procedure TfrmOut.grOutProdDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
BkgColor: TColor;
begin
if gdSelected in State then OutRect := Rect;
if not (gdSelected in State) then
BkgColor := TDBGrid(Sender).Color
else
if TDBGrid(Sender).Focused then
BkgColor := clActiveCaption // Синий для текущей строки
else
BkgColor := clMedGray; // Серый для текущей строки
TDBGrid(Sender).Canvas.Brush.Color:=BkgColor;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;


В этом примере красится вся строка, но если надо только некоторые ячейки, делай анализ на принадлежность прорисовываемой ячейке этим некоторым..
У класса TColumn есть св-во Field, через которое можно выйти на значение поля



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

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

Наверх




Память: 0.51 MB
Время: 0.012 c
1-74149
AlexanderSK
2003-10-10 15:01
2003.10.23
Varian - массив в массиве


1-74286
Kiril
2003-10-12 21:18
2003.10.23
(на 2 сек.) Как проинициализировать переменную?


1-74229
Raptorus
2003-10-09 15:51
2003.10.23
Уважаемые, Мастера. Подскажите как из TList записать в TListBox


3-74074
dgs
2003-10-01 17:54
2003.10.23
Использование в DLL соединения из вызывающего приложения


3-73966
Caesar
2003-09-24 15:36
2003.10.23
группировка в QReport





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