<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
    <title></title>
  </head>
  <body bgcolor="#ffffff" text="#000000">
    John<br>
    <br>
    I work on systems where some idiot used a decimal(9,0) as a PK and
    mixed it with other tables with integers, I think with any PK the
    main thing is use the same otherwise you force the server to use
    hash joins (v slow) and secondly use the smallest key you can (I'm
    currently using a bigint derived from the server time) I really can
    see no reason for using anything larger than a bigint for a
    surrogate,&nbsp; you can use a generator (like I do) or identity for a
    client high/low, if you are going to cluster the pk you want it to
    be sequential<br>
    <br>
    MSSql 2008 offers a 'sequential guid' but that is 16 bytes versus 8
    for a bigint<br>
    <br>
    Neven<br>
    <blockquote cite="mid:DCC48DE031DC43EFB006AEFA1AEA68AB@JohnSony2"
      type="cite">
      <title>Message</title>
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      <meta name="GENERATOR" content="MSHTML 8.00.7600.16588">
      <style>@font-face {
        font-family: Calibri;
}
@font-face {
        font-family: Consolas;
}
@page WordSection1 {size: 8.5in 11.0in; margin: 1.0in 1.0in 1.0in 1.0in; }
P.MsoNormal {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Calibri","sans-serif"; FONT-SIZE: 11pt
}
LI.MsoNormal {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Calibri","sans-serif"; FONT-SIZE: 11pt
}
DIV.MsoNormal {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Calibri","sans-serif"; FONT-SIZE: 11pt
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.EmailStyle17 {
        FONT-FAMILY: "Calibri","sans-serif"; COLOR: windowtext; mso-style-type: personal-compose
}
..MsoChpDefault {
        mso-style-type: export-only
}
DIV.WordSection1 {
        page: WordSection1
}
</style>
      <div>
        <div><font size="2" face="Arial">Dealing with index/ID field
            that is set as binary - here is the solution that worked in
            case any one else comes across same....</font></div>
        <div>&nbsp;</div>
        <div><font size="2" face="Arial">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.&nbsp;&nbsp; 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....</font></div>
        <div>&nbsp;</div>
        <div><font size="2" face="Arial">example - using a Company_ID
            from Comp table to open Contacts that belong to that
            Company...</font></div>
        <div>&nbsp;</div>
        <div><font size="2" face="Arial">Comments from friends who know
            MSSQL&nbsp;- their opinion is that an ID/index field that is
            binary is unusual practice - restricts what kind to indexes
            can be made for instance.&nbsp; Anyone here have opinion on
            this?&nbsp;&nbsp; have others come across ID/Index that is Binary
            often?</font></div>
        <div>&nbsp;</div>
        <div><font size="2" face="Arial">Step 1:</font></div>
        <div>&nbsp;</div>
        <div><font size="2" face="Arial">&nbsp;
            ADOQueryComp.SQL.Text:='select *, Cast(Company_ID as
            VARCHAR(10)) as ACompID, CAST(Company_ID as INT) as DCOMPID
            from Company '+<br>
            &nbsp;&nbsp;&nbsp; 'where Company_Name like '+likestr;<br>
          </font></div>
        <div><font size="2" face="Arial">Note - Casting binary to
            string/Varchar does not work, but to integer does.&nbsp;&nbsp; Go
            figure!</font></div>
        <div>&nbsp;</div>
        <div>&nbsp;</div>
        <div><font size="2" face="Arial">Step 2:</font></div>
        <div>&nbsp;</div>
        <div><font size="2" face="Arial">&nbsp;
            iCompanyID:=cdsComp.FieldbyName('DCompID').asinteger;<br>
          </font></div>
        <div><font size="2" face="Arial">&nbsp;
            ADOQueryContact.SQL.Text:='select * from Contact '+<br>
            &nbsp;&nbsp;&nbsp; 'where Company_ID = CAST('+inttostr(iCompanyID)+' AS
            BINARY(8))';<br>
          </font></div>
      </div>
      <div><font size="2" face="Arial">John</font></div>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: <a class="moz-txt-link-abbreviated" href="mailto:delphi@delphi.org.nz">delphi@delphi.org.nz</a>
Admin: <a class="moz-txt-link-freetext" href="http://delphi.org.nz/mailman/listinfo/delphi">http://delphi.org.nz/mailman/listinfo/delphi</a>
Unsubscribe: send an email to <a class="moz-txt-link-abbreviated" href="mailto:delphi-request@delphi.org.nz">delphi-request@delphi.org.nz</a> with Subject: unsubscribe</pre>
    </blockquote>
    <br>
  </body>
</html>