IBE and Delphi проблемы с соеденеием
От: Lex82 Польша  
Дата: 08.06.07 11:24
Оценка:
Добрый день, ест такая проблемка:работаю на Delphi 6.0 c IBE, есть такая часть кода:

[pascal]
...
var
ClnBnk: tIBClientDataSet;
ClnNakl: tIBClientDataSet;
dtPlat, dtNakl: TDateTime;
N_A: string;
sDtn, sDtE : string;
sNomSh, dDtSHET : string;
....

dtNakl :=ClnNakl.FieldByName('DTSHET_D').AsDateTime;
dtPlat :=ClnBnk.FieldByName('DOCDATE').AsDateTime;
....
/pascal]

всё компилируется, но во время работы приложения, если попытаться включить данную процедуру
выскакивает сообщение о том, что поле 'DTDHT_D' не существует. В чём может быть замес?
Заранее благодарен за помощ.
Re: IBE and Delphi проблемы с соеденеием
От: Arioch  
Дата: 08.06.07 15:24
Оценка:
L>[pascal]
L> ...
L>var
L> ClnBnk: tIBClientDataSet;
L> ClnNakl: tIBClientDataSet;
L> dtPlat, dtNakl: TDateTime;
L> N_A: string;
L> sDtn, sDtE : string;
L> sNomSh, dDtSHET : string;
L> ....

L> dtNakl :=ClnNakl.FieldByName('DTSHET_D').AsDateTime;

L> dtPlat :=ClnBnk.FieldByName('DOCDATE').AsDateTime;
L> ....
L>/pascal]

L>всё компилируется, но во время работы приложения, если попытаться включить данную процедуру

L>выскакивает сообщение о том, что поле 'DTDHT_D' не существует. В чём может быть замес?
L>Заранее благодарен за помощ.


Как минимум не ясно
1) при вызове какой функции происходит ошибка (как следствие непонятно какой запрос)
2) какие SQL-запросы формируют датасеты
3) какими SQL-запросами созданы таблицы фигурирующие в запросах.


Как следствие угадать зхачем дергается поле, которое не указано в коде будет трудно.


Поэтому www.rsdn.ru/HowToAsk.htm


Также включить Debug DCUs и протрассировать к конкретной строчке вызывающей ошибку, это покажет причину ошибки.

Попробуйте напрямую выполнить азпросы в IBExpert

Попробуйте почитать документацию на www.iBase.ru
Re[2]: IBE and Delphi проблемы с соеденеием
От: Lex82 Польша  
Дата: 11.06.07 06:02
Оценка:
Здравствуйте, Arioch, Вы писали:

A>Как минимум не ясно

A>1) при вызове какой функции происходит ошибка (как следствие непонятно какой запрос)

Ошибка происходит привызове функции FieldByName, её исходник


function TDataSet.FieldByName(const FieldName: string): TField;
begin
  Result := FindField(FieldName);
  if Result = nil then DatabaseErrorFmt(SFieldNotFound, [FieldName], Self);
end;


A>2) какие SQL-запросы формируют датасеты


SQL запрос формирующий датасет выглядит следующе


SELECT  
   D_ORG.NAME,  W_PRINAKL.NNAKL, 
  W_PRINAKL.DTNAKL, W_PNAKLTOV.PRICEP,
  W_PNAKLTOV.QUANT_FAKT, W_PNAKLTOV.VEST,         
  W_PNAKLTOV.NSHET_D, W_PNAKLTOV.DTSHET_D,
  S_DOGTOV.NDS, 
  D_TOVAR.NAME as NMTOV 
FROM   S_GR2TOV  
  INNER JOIN D_TOVAR ON (S_GR2TOV.ID = D_TOVAR.ID_GR2TOV) 
  INNER JOIN S_DOGTOV ON (D_TOVAR.ID =      S_DOGTOV.ID_D_TOVAR)  
  INNER JOIN W_PNAKLTOV ON (S_DOGTOV.ID =     W_PNAKLTOV.ID_DTOV)  
  INNER JOIN W_PRINAKL ON (W_PNAKLTOV.ID_PRINAKL =      W_PRINAKL.ID) 
  INNER JOIN D_ORG ON (W_PRINAKL.ID_ORG = D_ORG.ID)        
  INNER JOIN D_DOGOVOR ON (S_DOGTOV.ID_D_DOGOVOR =       D_DOGOVOR.ID) 
WHERE (((W_PNAKLTOV.DTSHET_D >= :DtN) and (W_PNAKLTOV.DTSHET_D <= :DtE)) or 
   ((W_PNAKLTOV.DTSHET_D is null) and (W_PRINAKL.DTNAKL >= :DtN) and (W_PRINAKL.DTNAKL <= :DtE) ) ) and 
(S_GR2TOV.ID = :IDGR2) and (W_PNAKLTOV.VEST <> 0 )
 ORDER BY D_ORG.NAME, D_TOVAR.NAME, W_PRINAKL.DTNAKL  ;


A>3) какими SQL-запросами созданы таблицы фигурирующие в запросах.


Какими запросами создана таблица не знаю так как пришел в организацию не давно и работаю с готовой БД, но если вы имели в виду соответствие типов данных в БД и в запросе то оно полное.



A>Также включить Debug DCUs и протрассировать к конкретной строчке вызывающей ошибку, это покажет причину ошибки.


Дебагер пишет, что поле не найдено и указывает на функию, приведённую выше


A>Попробуйте напрямую выполнить азпросы в IBExpert


Запросы в IBExpert выполняются как положенно

A>Попробуйте почитать документацию на www.iBase.ru


Всё читаю , сначали читаю и ищу потом спрашиваю
Re[3]: IBE and Delphi проблемы с соеденеием
От: Lex82 Польша  
Дата: 11.06.07 12:10
Оценка:
Проблема решена, я просто забыл инициировать дата сеты

Извиняюсь перед всеми кто потратил время на решение этой задачи и спасибо за помощ.
Re[3]: IBE and Delphi проблемы с соеденеием
От: Danchik Украина  
Дата: 11.06.07 12:15
Оценка:
Здравствуйте, Lex82, Вы писали:

[Skip]

A>>Также включить Debug DCUs и протрассировать к конкретной строчке вызывающей ошибку, это покажет причину ошибки.

L> Дебагер пишет, что поле не найдено и указывает на функию, приведённую выше
Естественно!

[Skip]

Ваш диагноз — полхо понимаете суть DB компонент в Delphi
Два запроса два SQL, проверить оба.
Re[3]: IBE and Delphi проблемы с соеденеием
От: Arioch  
Дата: 13.06.07 09:20
Оценка:
L> Какими запросами создана таблица не знаю так как пришел в организацию не давно и работаю с готовой БД, но если вы имели в виду соответствие типов данных в БД и в запросе то оно полное.

С помощью. штатных средств firebird/yaffil/interbase этот SQL можно восстановить, тем более с помощью IBExpert
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.