Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / QUERY / 13 сообщений из 13, страница 1 из 1
23.12.2002, 09:34
    #32082857
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
HELLO

Есть база в paradox требуется посчитать расход кВт/ч. по вводимым показаниям для этого нужно отыскать запись по следующим параметрам : Base_id - Ключик абонента с основной таблицы, Date_nper - дата конца периода платежа.

в Query пишу запрос:
Код: plaintext
1.
2.
3.
4.
SELECT max(Date_nper) , pkz_n
FROM Account
WHERE Date_nper<:Date_nper
and Base_id=:Base_id
GROUP BY pkz_n

он проходит - параметры (params)
Date_nper -Date
Base_id -Float
а если пишу в коде программы не проходит ругается
'List index out of bounds (1)'
Что посмотреть??
...
Рейтинг: 0 / 0
23.12.2002, 09:40
    #32082860
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
P.S.

к коде пишу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
procedure TFrmOsn.QAccBeforePost(DataSet: TDataSet);
var
  Date_nper_0, Date_nper, Days : TDate;
  Pkz_n_0, Pkz_n, Pkz, Base : Double;
begin
  Date_nper := QAcc.FieldValues['Date_nper'];
  Base := QAcc.FieldValues['Base_id'];
  Q5.SQL.Clear;
  Q5.SQL.Add('select max(Date_nper) from ''Account'' where Date_nper < :Date_nper and''Base_id=:Base');
  Q5.Params[ 0 ].AsDate := Date_nper;
  Q5.Params[ 1 ].AsFloat := Base;
  Q5.Open;
  Date_nper_0 := Query1.Fields[ 0 ].AsDateTime;

  if Date_nper_0 <>  0  then begin
    Pkz_n := QAcc.FieldValues['Pkz_n'];
    Base := QAcc.FieldValues['Base_id'];
    Q5.SQL.Clear;
    Q5.SQL.Add('select Pkz_n from ''Account'' where Date_nper = :Date_nper and''Base_id=:Base');
    Q5.Params[ 0 ].AsDate := Date_nper_0;
    Q5.Params[ 1 ].AsFloat := Base;
    Q5.Open;
    Pkz_n_0 := Query1.Fields[ 0 ].AsFloat;

//    Days := Date_nper - Date_nper_0;
    Pkz := Pkz_n - Pkz_n_0;
  end else
    Pkz :=  0 ;

  QAcc.FieldValues['Pkz'] := Pkz;

  {ShowMessage(Format('%.f êÂò çà %d äíåé', [Pkz, Trunc(Days)]));}
  Q5.Close;
end;
...
Рейтинг: 0 / 0
23.12.2002, 10:27
    #32082882
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
Закрой кавычки за наименованием второго поля
у тебя так
Q5.SQL.Add('select max(Date_nper) from ''Account'' where Date_nper < :Date_nper and''Base_id=:Base');
а нужно
Q5.SQL.Add('select max(Date_nper) from ''Account'' where Date_nper < :Date_nper and ''Base_id''=:Base');
...
Рейтинг: 0 / 0
23.12.2002, 11:37
    #32082936
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
LexusR

Последовал твоему совету:
Код: plaintext
Q5.SQL.Add('select max(Date_nper) from ''Account'' where Date_nper < :Date_nper and ''Base_id''=:Base');


при попытке сохранить изменения в базе пишет:

'Invalid variant type conversion'
...
Рейтинг: 0 / 0
23.12.2002, 11:53
    #32082953
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
Тогда убери их совсем из наименовании поля
...
Рейтинг: 0 / 0
23.12.2002, 11:57
    #32082961
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
Q5.SQL.Add('select max(Date_nper) from Account where Date_nper < :Date_nper and Base_id =:Base');
...
Рейтинг: 0 / 0
23.12.2002, 13:25
    #32083040
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
LexusR

вариант
Код: plaintext
Q5.SQL.Add('select max(Date_nper) from Account where Date_nper < :Date_nper and Base_id =:Base');

возвращает аналогичный результат:
'Invalid variant type conversion'

Я думаю тут заморочка в типах т.к. в базе у меня Base_id + AutoIncrement
но когда в Query запрос пишу? - проходит!!
В чём дело не пойму??...
...
Рейтинг: 0 / 0
23.12.2002, 13:38
    #32083049
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
А может параметрам типы присвоить?
...
Рейтинг: 0 / 0
23.12.2002, 13:46
    #32083055
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
tygra

Дык вроде как есть...

Код: plaintext
1.
2.
var
  Date_nper_0, Date_nper, Days : TDate;
  Pkz_n_0, Pkz_n, Pkz, Base : Double;



Код: plaintext
1.
  Q5.Params[ 0 ].AsDate := Date_nper;
  Q5.Params[ 1 ].AsFloat := Base;


Код: plaintext
1.
   Q5.Params[ 0 ].AsDate := Date_nper_0;
   Q5.Params[ 1 ].AsFloat := Base;


Или я опять туплю??... вразумите??....
...
Рейтинг: 0 / 0
23.12.2002, 14:42
    #32083113
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
добавить

Q5.Params[0].DataType := ftDate; (ftDateTime)
Q5.Params.DataType := ftFloat;
...
Рейтинг: 0 / 0
23.12.2002, 14:48
    #32083119
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
имелось ввиду во 2й строке
Q5.Params[ 1 ].DataType := ftFloat;
...
Рейтинг: 0 / 0
23.12.2002, 15:14
    #32083137
balbes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
hDrummer

ОК thank you!!!!

ВСЕ покатило...
ВСЕМ СПАСИБО....
Чтоб я без ВАС делал?!?!?!.....
...
Рейтинг: 0 / 0
23.12.2002, 15:20
    #32083143
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QUERY
жил бы весело и здорово
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / QUERY / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]