Avatar billede steensommer Praktikant
22. januar 2005 - 15:19 Der er 24 kommentarer og
1 løsning

Excel og SQL

Hej

Jeg har en projektmappe med bla en userform der henter og sender data til/fra Access. Følgende kode fejler ved rs.EOF med: "Run-time error '91': Object variable or With block variable not set"

Er der en venlig sjæl der kan hjælpe?

vh Steen

Private Sub CPR_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
Dim rs As Recordset
Dim strSQL As String
Dim Cprnr As String
Cprnr = Me.CPR.Value

conn.Open "\\server\faelles\Lotte og Susanne\Registre\Patientregisteret.mdb"

    strSQL = "SELECT * FROM [EKKO] WHERE [CPR nr] = ('" & Cprnr & "')"
    conn.Execute (strSQL)

'If Not rs.EOF Then
If rs([CPR nr]).Value <> "' '" Then
    Me.FNavn.Text = rs([Fornavn]).Value
    Me.ENavn.Text = rs([Efternavn]).Value
    Me.Adr.Text = rs([Adresse]).Value
    Me.PostBy.Text = rs([Postnr og bynavn]).Value
    Me.Tlf.Text = rs([Telefon]).Value
    Me.El.Text = rs([Egen læge]).Value
    Me.ElAdr.Text = rs([Lægens adresse]).Value
    Me.ElPostBy.Text = rs([Lægens postnr og by]).Value
    Me.Sygehus.Text = rs([Henvisende sygehus]).Value
    Me.Dato.Text = rs([Indkaldelse dato]).Value
    Me.Kl.Text = rs([Klokkeslæt]).Value
Else
    strSQL = "INSERT INTO [EKKO][Cpr nr] Values ( '" & Cprnr & "')"
    conn.Execute (strSQL)
End If

Set rs = Nothing

End Sub
Avatar billede sjap Praktikant
22. januar 2005 - 15:48 #1
Så vidt jeg lige kan se, så har du ikke sat rs til at være noget (du har kun dim'et den som et recordset). Dvs. der mangler en sætning med

Set rs ...
Avatar billede sjap Praktikant
22. januar 2005 - 15:54 #2
Det er ikke lige min stærke side, at lave det her fra Excel, men det skal vist være noget i retning af:

Set rs = conn.Execute(strSQL)
Avatar billede steensommer Praktikant
22. januar 2005 - 16:04 #3
Så fik jeg en Type mismatch ud af det!
Avatar billede mugs Novice
22. januar 2005 - 16:06 #4
Type mismatch betyder normalt, at du prøver at sammenligne numeriske felter med alfanumeriske.
Avatar billede sjap Praktikant
22. januar 2005 - 16:12 #5
Ligger problemet i SQL-strengen? Er [CPR nr] en streng eller et tal?
Avatar billede steensommer Praktikant
22. januar 2005 - 16:13 #6
en streng
Avatar billede sjap Praktikant
22. januar 2005 - 16:14 #7
Den måde som du har lavet SQL strengen på, fortæller du faktisk at [CPR nr] er en streng. Passer det? Hvis ikke skal du i stedet prøve med:

strSQL = "SELECT * FROM [EKKO] WHERE [CPR nr] = " & Cprnr
Avatar billede sjap Praktikant
22. januar 2005 - 16:16 #8
Ok, så glem lige min sidste kommentar.

Jeg ved ikke om parentesen er et problem (kan ikke lige se hvorfor, men man ved jo aldrig). Prøv evt. med:

strSQL = "SELECT * FROM [EKKO] WHERE [CPR nr] = '" & Cprnr & "'"
Avatar billede mugs Novice
22. januar 2005 - 16:16 #9
Excel er ikke lige min boldgade, men normalt checker man om en streng indeholder Null (tom streng) således:

If rs([CPR nr]).Value <> "" Then

og ikke:

If rs([CPR nr]).Value <> "' '" Then

Men don't blame Me. Jeg har ikke forstand på det.
Avatar billede steensommer Praktikant
22. januar 2005 - 16:18 #10
Ja mugs du har ret men det første har jeg prøvet - uden held! ...og det med parenteserne fungerer desværre heller ikke :0(
Avatar billede mugs Novice
22. januar 2005 - 16:18 #11
Er der ikke noget galt her:

('" & Cprnr & "')

sammenlignet med dette:

If rs([CPR nr]).Value <> "' '" Then

Er gnyfferne sat korrekt?
Avatar billede sjap Praktikant
22. januar 2005 - 16:20 #12
steensommer > kan du fortælle hvilken linie programmet stopper i?

mugs > :0)
Avatar billede steensommer Praktikant
22. januar 2005 - 16:20 #13
Nej men at vende dem har heller ikke hjulpet (det var blot et forsøg)
Avatar billede steensommer Praktikant
22. januar 2005 - 16:21 #14
Conn.Execute (strSQL) - den første
Avatar billede sjap Praktikant
22. januar 2005 - 16:23 #15
Hvilken værdi har cprnr?
Avatar billede sjap Praktikant
22. januar 2005 - 16:24 #16
Eller endnu bedre hvilken værdi har strSQL?
Avatar billede steensommer Praktikant
22. januar 2005 - 16:28 #17
Undskyld forsinkelsen - jeg skulle lige prøve at ændre til følgende:
Den fejler også men når dog ned til sidste rs.Open med fejlen:    "Der er en syntaksfejl i INSERT INTO-sætningen.

'Dim conn As ADODB.Connection
'Set conn = New ADODB.Connection
Dim Conn As String
'conn.Provider = "Microsoft.Jet.OLEDB.4.0"
Dim rs As ADODB.Recordset
Dim strSQL As String
Dim Cprnr As String
Cprnr = Me.CPR.Text


    'conn.Open "\\server\faelles\Lotte og Susanne\Registre\Patientregisteret.mdb"
    Conn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=\\server\faelles\Lotte og Susanne\Registre\Patientregisteret.mdb;"

    strSQL = "SELECT * FROM [EKKO] WHERE [CPR nr] = ('" & Cprnr & "')"
   
    Set rs = New ADODB.Recordset
    rs.Open strSQL, Conn, adOpenForwardOnly, adLockReadOnly, adCmdText

If rs.EOF = False Then
    Me.FNavn.Text = rs([Fornavn]).Value
    Me.ENavn.Text = rs([Efternavn]).Value
    Me.Adr.Text = rs([Adresse]).Value
    Me.PostBy.Text = rs([Postnr og bynavn]).Value
    Me.Tlf.Text = rs([Telefon]).Value
    Me.El.Text = rs([Egen læge]).Value
    Me.ElAdr.Text = rs([Lægens adresse]).Value
    Me.ElPostBy.Text = rs([Lægens postnr og by]).Value
    Me.Sygehus.Text = rs([Henvisende sygehus]).Value
    Me.Dato.Text = rs([Indkaldelse dato]).Value
    Me.Kl.Text = rs([Klokkeslæt]).Value
Else
    Set rs = Nothing
   
    strSQL = "INSERT INTO EKKO[Cpr nr] Values  '" & Cprnr & "'"
    Set rs = New ADODB.Recordset
    rs.Open strSQL, Conn, adOpenForwardOnly, adCmdText
   
End If

Set rs = Nothing
Avatar billede sjap Praktikant
22. januar 2005 - 16:31 #18
Mangler måske mellemrum mellem EKKO og [Cpr nr]
Avatar billede steensommer Praktikant
22. januar 2005 - 16:32 #19
Det er da rigtigt men den laver samme fejl
Avatar billede sjap Praktikant
22. januar 2005 - 16:36 #20
Hvad er det præcist at sætningen skal gøre? Hvad er Values for en karl?
Avatar billede sjap Praktikant
22. januar 2005 - 16:38 #21
Nåh ja. Hvad med:

strSQL = "INSERT INTO EKKO ([Cpr nr]) Values ('" & Cprnr & "')"
Avatar billede steensommer Praktikant
22. januar 2005 - 16:41 #22
det der skal ske er følgende:

Først skal der checkes om Cpr-feltet i Access er tomt! Hvis det er IKKE er tilfældet skal resten af userformen udfyldes med data fra Access. Hvis Cpr-feltet er tomt skal Cpr indsættes!
Avatar billede sjap Praktikant
22. januar 2005 - 16:50 #23
steensommer > Kommer der stadig fejl med det sidste forslag?
Avatar billede steensommer Praktikant
22. januar 2005 - 16:53 #24
Nej sjap  Det hjalp inkl at fjerne Cpr-feltets Primær-nøgle. Det var dejling. Tak for hjælpen. Svar så får du point :0)
Avatar billede sjap Praktikant
22. januar 2005 - 17:05 #25
Det var så lidt :0)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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