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

Вниз

Вычисляемое поле   Найти похожие ветки 

 
Серый   (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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.054 c
3-1103223521
Fin
2004-12-16 21:58
2005.01.23
Не понял, на счет транзакций


1-1105531585
SIG
2005-01-12 15:06
2005.01.23
Рисунок в поле DBGrid


14-1104986927
Чеширский_Кот
2005-01-06 07:48
2005.01.23
"Человек в лабиpинте" Роберта Силверберга


4-1101744745
vic_774N
2004-11-29 19:12
2005.01.23
странное поведение LoadLibrary ...


14-1105175772
Чеширский_Кот
2005-01-08 12:16
2005.01.23
Data Warehousing