Avatar billede 1ersen Nybegynder
08. april 2003 - 15:01 Der er 3 kommentarer og
1 løsning

Find primary key i field collection

Hej

ok første forsøg på at benytte dette forum, så jeg venter spændt på responsen.

Jeg har brug for at finde hvilke Fields i et recordset der er primary key.
jeg benytter ADO 2.7 og har allerede forøgt med:

Function GetPrimaryKey(db As ADODB.Connection, sTableName As String) As String

Dim fldLoop As ADODB.field
Dim rs As New ADODB.RecordSet

rs.Open "select * from " & sTableName, db, 3, 3

For Each fldLoop In rs.Fields
    If CBool(fldLoop.Attributes And adFldKeyColumn) Then
        Debug.Print "  " & fldLoop.Name
      End If
Next fldLoop

End function

det virker som om adFldKeyColumn ikke er med i attributes samlingen.
kan nogen hjælpe?
Avatar billede venne Nybegynder
08. april 2003 - 15:16 #1
Du er nødt til at bruge ADOX til at finde metadata - det er beskrevet i ADO-hjælpen.

Jeg kan kaste et eksempel sammen hvis du er interesseret?

/venne
Avatar billede 1ersen Nybegynder
08. april 2003 - 15:30 #2
suk, havde håbet at undgå ADOX.
:)

jeg er meget interesseret i et eksempel.
Såfremt der ikke straks dukker en op med løsningen i AD0, er pointene dine
Avatar billede venne Nybegynder
08. april 2003 - 15:47 #3
Det er slet ikke så svært med ADOX. Jeg har ændret funktionen til at returnere Columns-collection'en fra ADOX, da en PK kan være sammensat af flere kolonner. Hvis det ikke er relevant for dig kan du jo nøjes med at returnere første element fra Columns.

Der skal selvfølgelig også være en reference til ADOX-komponenten i dit projekt.

Function GetPrimaryKey(db As ADODB.Connection, sTableName As String) As Columns
  Dim cat As Catalog
  Dim tb As Table
  Dim ky As Key
 
  Set cat = New Catalog
  Set cat.ActiveConnection = db
 
  Set tb = cat.Tables(sTableName)
  For Each ky In tb.Keys
    If ky.Type = adKeyPrimary Then
      Set GetPrimaryKey = ky.Columns
      Exit Function
    End If
  Next
End Function

/venne
Avatar billede 1ersen Nybegynder
08. april 2003 - 15:52 #4
det er bare perfekt.
pointene er dine

tak !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester