Avatar billede mrosing Novice
17. december 2003 - 16:05 Der er 3 kommentarer

gemme GUID og bruge den igen

Jeg har en database hvor to tabeller er linkede med en GUID. Jeg skal oprette en linie i undertabellen inde fra en formular.

En af de ting der skal skrives ned i undertabellen er naturligvis nøglefeltet. Følgende virker ikke:

Private Function SampleID(Key As Variant, SampleType, Conservation, Purpose, Recipient)
Dim cn As Connection
Dim rs As ADODB.Recordset
Dim temp As Integer

Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset


    rs.Open SQLStringIndividualSample(StringFromGUID(Key)), cn, adOpenDynamic, adLockPessimistic

        rs.AddNew
        rs!IndividualSampleType = SampleType
        rs!individualsampleship = "PA"
        rs!ConservationMethod = Conservation
        rs!Purpose = Purpose
        rs!Recipient = Recipient
      rs!KeyIndividualMeasure = Key
    rs.Update
    temp = rs!IndividualSampleID
rs.Close
Set rs = Nothing


SampleID = temp
End Function

Grunden til at det ikke virker er at formatet på Key er forkert. Jeg har også prøvet at skrive

      rs!KeyIndividualMeasure = Me!txtKeyIndividualMeasure

for på den måde at læse nøglefeltet fra formularen.

Den Key der bruges som variable i funktionen er fundet som Me!txtKeyIndividualMeasure, altså læst fra formularen.

Hvad der derimod virker er følgende:

Private Function SampleID(Key As Variant, SampleType, Conservation, Purpose, Recipient)
Dim cn, cn2 As Connection
Dim rs, rs2 As ADODB.Recordset
Dim temp As Integer

Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
Set cn2 = CurrentProject.Connection
Set rs2 = New ADODB.Recordset


    rs.Open SQLStringIndividualSample(StringFromGUID(Key)), cn, adOpenDynamic, adLockPessimistic
    rs2.Open SQLStringIndividualMeasure(StringFromGUID(Key)), cn2, adOpenStatic, adLockReadOnly

        rs.AddNew
        rs!IndividualSampleType = SampleType
        rs!individualsampleship = "PA"
        rs!ConservationMethod = Conservation
        rs!Purpose = Purpose
        rs!Recipient = Recipient
      rs!KeyIndividualMeasure = rs2!KeyIndividualMeasure
    rs.Update
    temp = rs!IndividualSampleID
rs.Close
Set rs = Nothing

rs2.Close
Set rs2 = Nothing

SampleID = temp
End Function

Er der nogen der kender en måde at holde en GUID nøgle på så den kan skrives direkte ind i en tabel i stedet for at skulle lave det nummer.
Avatar billede trer Nybegynder
17. december 2003 - 16:28 #1
Har du ikke en variabel af typen BINARY ?  GUID burde passe ned i én BINARY(16)
Avatar billede mrosing Novice
17. december 2003 - 16:37 #2
Nej det har jeg ikke, den ser ikke ud til at findes i den version jeg bruger, til gengæld skulle man tro at typen Variant der også er 16 bits og burde kunne rumme en GUID, men det ser ikke ud til at fungere
Avatar billede trer Nybegynder
17. december 2003 - 16:46 #3
Eh - 16 bytes, ikke bit :-)

I stedet for at læse nøglefeltet fra formularen, så prøv at aflæse fra dit recordset. Mener den hedder rs.field[name].datatype
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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