Ver Fonte

odbc: use ftBlob only for VARBINARY(MAX) fields

git-svn-id: trunk@44531 -
ondrej há 5 anos atrás
pai
commit
7cecc87441
1 ficheiros alterados com 8 adições e 1 exclusões
  1. 8 1
      packages/fcl-db/src/sqldb/odbc/odbcconn.pas

+ 8 - 1
packages/fcl-db/src/sqldb/odbc/odbcconn.pas

@@ -999,7 +999,14 @@ begin
       SQL_TINYINT:       begin FieldType:=ftSmallint;   FieldSize:=0; end;
       SQL_BIGINT:        begin FieldType:=ftLargeint;   FieldSize:=0; end;
       SQL_BINARY:        begin FieldType:=ftBytes;      FieldSize:=ColumnSize; end;
-      SQL_VARBINARY:     begin FieldType:=ftBlob;       FieldSize:=BLOB_BUF_SIZE; end; // the "SQL Server Native Client 11.0" reports SQL_VARBINARY for binary fields with data size bigger than High(Word), which only ftBlob can handle and not ftVarBytes
+      SQL_VARBINARY:
+      begin
+        FieldSize:=ColumnSize;
+        if FieldSize=BLOB_BUF_SIZE then // SQL_VARBINARY declared as VARBINARY(MAX) must be ftBlob - variable data size
+          FieldType:=ftBlob
+        else
+          FieldType:=ftVarBytes;
+      end;
       SQL_LONGVARBINARY: begin FieldType:=ftBlob;       FieldSize:=BLOB_BUF_SIZE; end; // is a blob
       SQL_TYPE_DATE:     begin FieldType:=ftDate;       FieldSize:=0; end;
       SQL_SS_TIME2,