Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизВычисляемое поле Найти похожие ветки
← →
Серый (2004-12-18 14:06) [0]Доброго времени суток.
Как мне посредствам SQL-запросов сделать так, что бы в вычисляемом поле поочереди фигурировала 1 и 2?
Например
----------- -----
|FirstField |Expr1|
|---------- |-----|
| xxx | 1 |
|---------- |-----|
| yyy | 2 |
|---------- |-----|
| zzz | 1 |
|---------- |-----|
....
← →
UVV © (2004-12-18 14:21) [1]А БД нужно угадать!
← →
Серый (2004-12-18 14:28) [2]Access.
← →
aus (2004-12-18 14:33) [3]Используй клиентский курсор, RecNo четный-нечетный.
← →
Серый (2004-12-18 14:34) [4]Qyery.RecNo - возвращает -1
← →
sniknik © (2004-12-18 14:41) [5]> Qyery.RecNo - возвращает -1
значит курсор серверный
← →
Серый (2004-12-18 14:42) [6]Значит и надо использовать вычисляемые поля. А вот как это сделать?
← →
aus (2004-12-18 14:43) [7]Это при серверном курсоре, а ты с помощью CursurLocation и CursorType выбери сочетание, при котором будет правильный RecNo.
← →
aus (2004-12-18 14:45) [8]>Как мне посредствам SQL-запросов сделать так, что бы в вычисляемом поле поочереди фигурировала 1 и 2?
Что сделать-то? Вычисляемое поле?
← →
Серый (2004-12-18 14:52) [9]>aus
>при котором будет правильный RecNo
Он не будет правильным в любом случае - так что нужно попробывать SQL-ом.
Вот ради интереса попробуйте
Query.SQL.Add("select * from <TableName>");
Query.Active := True;
и после этого проделать такое
showmessage(IntToStr(Query.RecNo));
ответ будет -1
← →
aus (2004-12-18 14:56) [10]Неправда!
Я же использовал RecNo и не раз, именно с Access, что-то ты не так делаешь, или игнорируешь подсказки о типах курсора.
← →
Серый (2004-12-18 14:58) [11]>Что сделать-то? Вычисляемое поле?
Ну вот же я писал -
----------- -----
|FirstField |Expr1|
|---------- |-----|
| xxx | 1 |
|---------- |-----|
| yyy | 2 |
|---------- |-----|
| zzz | 1 |
|---------- |-----|
Приведу даже структуру таблици
id - (Счетчик)
FullNum - Integer
ShNum - Integer
Date - Date
и выбираю я полный номер газеты (FullNum) - и думаю сгенерить запросик, у которого будет еще и вычисляемое поле - для дальнейшего использования. Ну вот трудность в том как что бы числа были по очереди - 1-2-1-2-1-2...
← →
Серый (2004-12-18 15:04) [12]> что-то ты не так делаешь
С вами спорить не буду, я получаю постоянно -1
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(IntToStr(Query1.RecNo));
end;
Подскажите как правильно!
Заранее благодарен.
← →
aus (2004-12-18 15:06) [13]Боюсь, что в самом запросе не сделаешь, только Calculated Field на клиенте.
Хотя может и подскажет кто такие выкрутасы...
← →
aus (2004-12-18 15:08) [14]повторюсь:
или игнорируешь подсказки о типах курсора
← →
Серый (2004-12-18 15:15) [15]>или игнорируешь подсказки о типах курсора
Дело все в том, что это моя первая встреча с курсорами - и особыми навыками не блистаю.
Если вам не тяжело, вы не могли бы мне показать хоть пример, как это сделать.
>Ну вот трудность в том как что бы числа были по очереди - 1-2-1-2-1-2...
Числа могут не обязательно должны быть 1 и 2 - можно любые типа <парное>-<не парное>
← →
aus (2004-12-18 15:24) [16]В Object Inspector
CursorLocation = clUseClient
CursorType = ctStatic
← →
Серый (2004-12-18 15:29) [17]Если вы говорите о TQuery, то таких свойств, для данного элемента управления - я не нашел!
← →
aus (2004-12-18 15:58) [18]TADOQuery используй для доступа к Access.
как использовать ищи в поиске.
← →
Серый (2004-12-18 16:05) [19]Я понял, все дело в том, что мы говорим о разных вещах. Вы о TCustomADODataSet, а я о TQuery
← →
sniknik © (2004-12-18 16:13) [20]Серый (18.12.04 16:05) [19]
это надо бы в самом начале, т.к. основа, от нее все зависит, все меняется. а про курсоры, если было непонятно тоже надо было выяснить (спросить), а не игнорировать.
автоинкремент в таблице есть? от него можно считать.
← →
aus (2004-12-18 16:18) [21]>автоинкремент в таблице есть? от него можно считать.
Это в случае, если ни одна запись не была удалена.
← →
GonSales (2004-12-20 10:46) [22]в unit добавить var RecordCount: integer;
в DataSet.onBeforeOpen RecordCount:=1;
в DataSet.onCalcFields типа следующего
DataSet.FieldByName("MyCalcFields").Value := RecordCount;
if RecordCount = 1 then RecordCount:=2 else RecordCount:=1;
← →
Johnmen © (2004-12-20 10:54) [23]>GonSales (20.12.04 10:46) [22]
Есть предложение типа сначала опробовать самому...
← →
GonSales (2004-12-20 11:15) [24]>Johnmen
Ты хочешь сказать это не рабочий пример?
← →
Соловьев © (2004-12-20 11:17) [25]А зачем эта нумерация?
← →
Johnmen © (2004-12-20 11:22) [26]>GonSales (20.12.04 11:15) [24]
>Ты хочешь сказать это не рабочий пример?
Смотря что ты подразумеваешь под "рабочий".
Лично я - это когда работает, и работает, как ожидалось. В данном случае это не так...
← →
sniknik © (2004-12-20 11:25) [27]> Ты хочешь сказать это не рабочий пример?
вычисления не последовательны (от начала к концу) а по "требованию" по мере показа.
сам ответь. ;)
← →
msguns © (2004-12-20 11:49) [28]А нельзя использовать событие TField.OnGetText, а в нем, собственно, юзать RecNo ?
← →
GonSales (2004-12-21 07:02) [29]А если так
unit var RecordCount: integer;
onCalcFields ->
if RecordCount = 1 then RecordCount:=2 else RecordCount:=1;
DataSet.FieldByName("MyCalc").Value := RecordCount;
onBeforeOpen -> RecordCount:=2
onBeforeScroll ->
RecordCount := DataSet.FieldByName("MyCalc").Value;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.048 c