Avatar billede Morten Nybegynder
30. september 2003 - 11:21 Der er 7 kommentarer og
1 løsning

>BAK - Select sætning

Hej (BAK)

I går hjælp du mig med 3 sql sætninger - Men... jeg mangler hjælp til en Select sætning - følgende kode kommer og brokker sig over Excecute linien - hvad har jeg gjort forkert?

  Dim objCommand As ADODB.Command
  Dim rsData As ADODB.Recordset
  Dim lRecordsAffected As Long
  Dim szConnect As String
  Dim DBPath As String, DBName As String, DBTable As String
 
  DBPath = GetName("strPathDB")
  DBName = GetName("strMainDB")
  DBTable = GetName("strDefaultsTable")
 
  On Error GoTo ErrorHandler
 
    'Create the connection string
    szConnect = "Provider=Microsoft.jet.oledb.4.0;" & _
        "Data source=" & DBPath & DBName & ";" & _
        "Mode=Share Exclusive"
   
    'Create the Command object we´ll use
    Set objCommand = New ADODB.Command
    objCommand.ActiveConnection = szConnect
   
    'Load the SQL string into the Command object
    MsgBox "SELECT * FROM " & DBTable & " " '& _
              '"WHERE ID = " & CStr(ID) & ";"

    objCommand.CommandText = "SELECT * FROM " & DBTable & " " & _
              "WHERE ID = " & CStr(ID) & ";"
             
    'Execute the SQL statement
    objCommand.Execute recordsaffected:=lRecordsAffected, _
                Options:=adOptionUnspecified Or adExecuteNoRecords
    'Check for errors. Only one record should have been affected
    If lRecordsAffected <> 1 Then Err.Raise Number:=vbObjectError + 1024, _
        Description:="Error executing UPDATE statement."
30. september 2003 - 11:27 #1
Måske skal du have ' ' omkring dit ID således

objCommand.CommandText = "SELECT * FROM " & DBTable & " " & _
      "WHERE ID = '" & CStr(ID) & "';"

Måske er dit ID ikke af typen String, som du konverer den til.
30. september 2003 - 11:27 #2
håber du kan se ' efter ID = og lige før ;"
Avatar billede bak Forsker
30. september 2003 - 11:40 #3
Hejsa Flemming :-)
Det er et godt forsøg, for det kan nemlig drille en del.
En anden ting der kan drille er hvis man har et mellemrum i sit tabelnavn, så et par klammer kan måske også hjælpe.

objCommand.CommandText = "SELECT * FROM [" & DBTable & "] " & _
      "WHERE ID = '" & CStr(ID) & "';"
30. september 2003 - 11:46 #4
Mellemrum i tabelnavne....... hvad er det da for en navngivning bak *GG*
Avatar billede Morten Nybegynder
30. september 2003 - 12:10 #5
Hvis det ikke er en string skal udtrykket så ikke se anderledes ud?

Tænker på linien '" & CInt(ID) & "' ????
Avatar billede Morten Nybegynder
30. september 2003 - 12:18 #6
Dette er min SQL som "afsendes"

SELECT Værdi FROM Defaults WHERE Id = '66';

Id i min table Defaults er nu et tekst felt

Er det ikke i min Execute statement der er noget galt - den skal ikke ændres fordi jeg nu henter og ikke skriver i tabellen???
Jeg har kopieret direkte fra det du sendte i går Bak - men det var jo alle 3 sætninger hvor man arbejder i tabellen - nu vil jeg bare hente fra tabellen...

Jeg har ingen anelse selv.... ????????????????
Avatar billede Morten Nybegynder
30. september 2003 - 14:49 #7
Hmmmmmmmmmmmmmm.... har i været længe til frokost??? ;O)

Nå ja, men altså jeg var åbenbart helt på herrens mark - men har nu løst det ved (selvfølelig?) at sætte et recordsæt - tænkte nok at det var fordi den jeg havde kopieret fra var til at skrive i tabellen med - nå men hvor om alt er så er her koden som virker:

  Dim objCommand As ADODB.Command
  Dim rsData As ADODB.Recordset
  Dim lRecordsAffected As Long
  Dim szConnect As String
  Dim DBPath As String, DBName As String, DBTable As String
 
  DBPath = GetName("strPathDB")
  DBName = GetName("strMainDB")
  DBTable = GetName("strDefaultsTable")
 
  On Error GoTo ErrorHandler
 
    'Create the connection string
    szConnect = "Provider=Microsoft.jet.oledb.4.0;" & _
        "Data source=" & DBPath & DBName & ";" & _
        "Mode=Share Exclusive"
   
    'Create the Command object we´ll use
    Set objCommand = New ADODB.Command
    objCommand.ActiveConnection = szConnect
    objCommand.CommandText = "SELECT [Værdi] " & _
                              "FROM " & DBTable & " " & _
                              "WHERE [Id] ='" & CStr(IDC) & "';"
   
    Set rsData = objCommand.Execute(Options:=adCmdText)
   
    ReadSingleValue = rsData(0)
   
ErrorExit:
    'Destroy out ADO objects
    Set objCommand = Nothing
    Set rsData = Nothing
    Exit Function

ErrorHandler:
    MsgBox Err.Description, vbCritical
    Resume ErrorExit
End Function

Kommentar til koden er stadig meget velkommen.
01. oktober 2003 - 18:24 #8
Der findes jo mange mange måder at angribe det at hente data fra en Access database. Her findes et eksempel, som du kan lure lidt på, hvis du har lyst.

http://www.win-consult.com/Tips/LibrarySource.asp?App=Excel&Lib=ADO_AccessData
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