[DUG] MSSQL ID field binary(8)

John Bird johnkbird at paradise.net.nz
Fri Aug 6 13:10:53 NZST 2010


MessageDealing with index/ID field that is set as binary - here is the solution that worked in case any one else comes across same....

Note for MSSQL using such a field in a JOIN SQL statement would be perfectly fine as normal, as MSSQL has a native binary type.   Delphi ADO however does not, so this is the hoops I had to jump through when its two different datasets and I needed to get the value in order to open the other with SQL or as a parameter....

example - using a Company_ID from Comp table to open Contacts that belong to that Company...

Comments from friends who know MSSQL - their opinion is that an ID/index field that is binary is unusual practice - restricts what kind to indexes can be made for instance.  Anyone here have opinion on this?   have others come across ID/Index that is Binary often?

Step 1:

  ADOQueryComp.SQL.Text:='select *, Cast(Company_ID as VARCHAR(10)) as ACompID, CAST(Company_ID as INT) as DCOMPID from Company '+
    'where Company_Name like '+likestr;

Note - Casting binary to string/Varchar does not work, but to integer does.   Go figure!


Step 2:

  iCompanyID:=cdsComp.FieldbyName('DCompID').asinteger;

  ADOQueryContact.SQL.Text:='select * from Contact '+
    'where Company_ID = CAST('+inttostr(iCompanyID)+' AS BINARY(8))';

John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserver.123.net.nz/pipermail/delphi/attachments/20100806/27bbc707/attachment.html 


More information about the Delphi mailing list