The Oracle driver brings back Varchar2 as TWideStringField. The SQL Server driver brings back Varchars as TStringField.
Obviously this becomes a problem for our persistent fields.
I would like to find out if we are missing something or if this is really an inconsistency.
This can easily be reproduced by dropping a TSQLConnection and TSQLQuery component on a form. The TSQLQuery selects a table with a simple varchar/varchar2 column. Then you create a persistent field for that column and repeat for each database type.
Example of a SQL Server test case.
Code: Select all
object SQLConnection1: TSQLConnection
ConnectionName = 'Dev 6.7 (SqlServer)'
DriverName = 'DEVARTSQLSERVER'
GetDriverFunc = 'getSQLDriverSQLServer'
LibraryName = 'dbexpsda40.dll'
LoginPrompt = False
Params.Strings = (
'drivername=DEVARTSQLSERVER'
'blobsize=-1'
'productname=MSSQL'
'HostName=sql2k8'
'Database=v670_test'
'User_Name=test'
'Password=test'
'UseUnicode=True')
VendorLib = 'sqloledb.dll'
Connected = True
Left = 32
Top = 16
end
object SQLQuery1: TSQLQuery
MaxBlobSize = 1
Params =
SQL.Strings = (
'select * from ac_ids')
SQLConnection = SQLConnection1
Left = 32
Top = 64
object SQLQuery1LOGINID: TStringField
FieldName = 'LOGINID'
Size = 8
end
end
Where ac_ids.LOGINID varchar(8) not null
dbexpoda40.dll 4.50.0.21
dbexpsda40.dll 4.55.0.23
MS SQL Server 2000, 2005, 2008. Collated Latin
Oracle 10g, 11g NLS Characterset WE8ISO8859P1
Oracle Client 11.1.01
Windows 7 64bit
Thanks for any assistance.
Jeff