Вверх ↑
Ответов: 698
Рейтинг: 143
#1: 2020-05-11 09:19:30 ЛС | профиль | цитата
Здравствуйте. При работе с действующей базой Firebird столкнулся с «неприятной» проблемой.
Компоненты ODBC и DS_ODBC на один и тот же запрос выдают очень разные результаты.
ODBC and DS_ODBC.png
Вверху ODBC внизу DS_ODBC.
Было замечено что ошибки выдают оба компонента.
ODBC:
- Вместо значения “null” выдаёт “Error”
- Некорректно отображает некоторые столбцы с датами (большинство правильно)
DS_ODBC:
- В большинстве случае выдает какой-то “мусор”, но некоторые столбцы отображает правильно.
Схема
Add(MainForm,2953706,56,63)
{
Width=746
Height=466
Point(onClose)
link(onCreate,15147289:doExecute,[])
link(onClose,1343427:doEvent1,[(116,90)(116,132)])
}
Add(DS_ODBC,5175017,308,77)
{
Name="saturnus2"
Point(onError)
}
Add(DSC_Query,2854535,308,350)
{
DSManager="saturnus2"
link(onQuery,7100258:doAddRow,[])
link(onColumns,7100258:doAddCols,[])
}
Add(MTStrTbl,9872097,483,350)
{
Width=730
Height=195
Align=4
Name="tabl"
}
Add(MST_DB,7100258,364,350)
{
MSTControl="tabl"
}
Add(InfoTip,1192744,462,56)
{
Info=#42:http://www.firebirdsql.org/en/odbc-driver/|0:|
Width=239
Height=18
}
Add(ODBC,1585281,308,266)
{
Driver="Firebird/InterBase(r) driver"
Exclusive=1
Point(ColumnsCount)
Point(doConnectDrv)
Point(ConnectionDrv)
Point(onColumnsInfo)
Point(FieldName)
Point(FieldType)
Point(FieldSize)
link(onStreamString,12021712:doConvert,[])
link(ConnectionDrv,10289808:Value,[])
link(onColumnsInfo,16719132:doAddColumn,[])
}
Add(FormatStr,15707348,189,273)
{
Mask="SELECT FIRST 50 * FROM "TBL_ANIMAL"\r\n"
link(onFString,8088289:doEvent1,[])
}
Add(Menu,8896884,56,266)
{
Menu=#5:start|4:test|
Point(onSelectNum)
link(onSelectNum,13964963:doEvent,[])
}
Add(StringTable,16719132,483,266)
{
Top=195
Width=730
Height=232
Align=5
ClearAll=0
Point(doAddColumn)
}
Add(InlineCode,11414078,420,266)
{
@Hint=#45:Формирует строку для добавления в StringTable|
WorkPoints=#53:doString=Формирование строки для вывода в StringTable|
EventPoints=#74:onEvent=Происходит когда все поля строки заполнены и выдаёт строку в поток|
DataPoints=#45:Fields=Количество полей для заполнения строки|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|23:uses kol, Share, Debug;|0:|4:type|30: THiAsmClass = class( TDebug )|10: private|9: public|26: _data_Data: THI_Event;|22: Fields: THI_Event;|23: onEvent: THI_Event;|16: Count: Word;|19: StrOut: String;|53: procedure doString( var _Data:TData; Index:word );|5: end;|0:|14:implementation|0:|62:procedure THiAsmClass.doString( var _Data:TData; Index:word );|5: var|17: Data : TData;|15: i: Integer;|20: strTemp: String;|7: begin|31: Data.Data_type := data_str;|21: Data.sdata := '';|51: strTemp := ReadString( _data, _data_Data, '' );|31: Data.Data_type := data_int;|20: Data.idata := 0;|41: i := ReadInteger( _data, Fields, 0 );|38: strOut := strOut + strTemp + ';' ;|17: Inc( Count );|27: if Count = i then begin|36: _hi_onEvent( onEvent, strOut );|16: Count := 0;|18: strOut := '';|15: end; { If }|6: end;|0:|4:end.|
link(onEvent,16719132:doAdd,[])
link(Fields,1585281:ColumnsCount,[(426,257)(412,257)(412,313)(314,313)])
}
Add(Hub,1343427,245,126)
{
link(onEvent1,5175017:doClose,[(291,132)(291,90)])
link(onEvent2,1585281:doDisconnect,[(277,139)(277,293)])
}
Add(Hub,10831191,245,77)
{
link(onEvent1,5175017:doOpen,[])
link(onEvent2,10289808:doValue,[(284,90)(284,216)])
}
Add(Memory,10289808,315,210)
{
link(onData,1585281:doConnectDrv,[(354,216)(354,251)(298,251)(298,300)])
}
Add(Hub,8088289,238,273)
{
link(onEvent1,1585281:doQuery,[])
link(onEvent2,2854535:doQuery,[(270,286)(270,356)])
}
Add(IndexToChanel,13964963,112,273)
{
link(onEvent1,15707348:doString,[])
}
Add(StreamConvertor,12021712,364,266)
{
Mode=6
link(onResult,11414078:doString,[])
}
Add(Convertor,14140405,371,210)
{
Mode=11
}
Add(ODialog,15147289,126,77)
{
Filter="fdb|*.fdb"
link(onExecute,14538752:doString,[])
}
Add(FormatStr,14538752,182,77)
{
Mask="DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=localhost:%1;"
link(onFString,10831191:doEvent1,[])
}

База (около 23 мб)
https://yadi.sk/d/aphZ9JNOKOdjEw
карма: 15

0
Редактировалось 2 раз(а), последний 2020-05-11 12:45:29