odbc: use ftMemo/ftWideMemo for SQL_VARCHAR/SQL_WVARCHAR declared as nvarchar(max)

git-svn-id: trunk@49470 -
This commit is contained in:
ondrej 2021-06-03 15:22:49 +00:00
parent e841e95390
commit 3fa35f258b

View File

@ -986,10 +986,24 @@ begin
// NOTE: I made some guesses here after I found only limited information about TFieldType; please report any problems
case DataType of
SQL_CHAR: begin FieldType:=ftFixedChar; FieldSize:=ColumnSize; end;
SQL_VARCHAR: begin FieldType:=ftString; FieldSize:=ColumnSize; end;
SQL_VARCHAR:
begin
FieldSize:=ColumnSize;
if FieldSize=BLOB_BUF_SIZE then // SQL_VARCHAR declared as NVARCHAR(MAX) must be ftBlob - variable data size
FieldType:=ftMemo
else
FieldType:=ftString;
end;
SQL_LONGVARCHAR: begin FieldType:=ftMemo; FieldSize:=BLOB_BUF_SIZE; end; // is a blob
SQL_WCHAR: begin FieldType:=ftFixedWideChar; FieldSize:=ColumnSize; end;
SQL_WVARCHAR: begin FieldType:=ftWideString; FieldSize:=ColumnSize; end;
SQL_WVARCHAR:
begin
FieldSize:=ColumnSize;
if FieldSize=BLOB_BUF_SIZE then // SQL_VARCHAR declared as NVARCHAR(MAX) must be ftBlob - variable data size
FieldType:=ftWideMemo
else
FieldType:=ftWideString;
end;
SQL_SS_XML,
SQL_WLONGVARCHAR: begin FieldType:=ftWideMemo; FieldSize:=BLOB_BUF_SIZE; end; // is a blob
SQL_DECIMAL: begin FieldType:=ftFloat; FieldSize:=0; end;