Avatar billede Voyager57 Nybegynder
10. februar 2012 - 20:39 Der er 9 kommentarer og
1 løsning

Fejl i SQL Str, hjælp !

Hej med jer eksperter.

Jeg sidder og leger med en applikation i VBA (Excel), hor jeg vil have den til at logge hvornår en bruger, bruger et excelark.

Jeg har følgende kode:



Option Explicit
Option Base 1

Sub excelTomysql()

'-------------------------------------------------------------------------
' Connection variables
Dim conn As New ADODB.Connection
Dim server_name As String
Dim database_name As String
Dim user_id As String
Dim password As String

' Table action variables
Dim sqlstr As String ' SQL to perform various actions
Dim table1 As String
Dim field1 As String, field2 As String
Dim Brugerdato, USDate As String
Dim Username As String
Dim rs As ADODB.Recordset

'----------------------------------------------------------------------
' Establish connection to the database
server_name = "127.0.0.1"
database_name = "Test"
user_id = "User"
password = "PWD"

Set conn = New ADODB.Connection
conn.Open "DRIVER={MySQL ODBC 3.51 Driver}" _
& ";SERVER=" & server_name & ";DATABASE=" & database_name _
& ";UID=" & user_id & ";PWD=" & password _
& ";OPTION=16427"

'-------------------------------------------------------------------------
' Various Actions

' Define variables (not all of the variables will be required for each action)

table1 = "table1"
field1 = "Dato"
field2 = "Brugernavn"

Set rs = New ADODB.Recordset

' Write new entries to a table from the first sheet of the workbook

Brugerdato = Date

USDate = Format(Brugerdato, "yyyy-mm-d")

Username = Range("Opsætning!I2").Value

    With rs

        sqlstr = "INSERT INTO '127.0.0.1'.'Test' ('" & field1 & "', '" & field2 & "') VALUES ('" & USDate & "','" & Username & "')"
        conn.Execute sqlstr
    End With

'-----------------------------------------------------------------------
' Close connections
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
On Error GoTo 0
End Sub


--

Nogen med ideer ? , jeg får fejlen, at der er fejl i SQLStr, hvad gør jeg forkert ?
Avatar billede tjp Mester
10. februar 2012 - 22:04 #1
Umiddelbart ser '127.0.0.1'.'Test' i sqlstr  lidt underligt ud, synes jeg. Mon ikke det skal erstattes med '" & table1 & "'?

Altså:
sqlstr = "INSERT INTO " & table1 & " ('" & field1 & "', '" & field2 & "') VALUES ('" & USDate & "','" & Username & "')"
Avatar billede Voyager57 Nybegynder
10. februar 2012 - 23:03 #2
Vil jeg da lige prøve....
Avatar billede Voyager57 Nybegynder
10. februar 2012 - 23:08 #3
Desværre ikke , er samme fejlmeddelse, med at der er fejl i SQL syntaxen. Pokkers, kan se at alle værdier er med over i variablerne.
Avatar billede kgkg Nybegynder
11. februar 2012 - 00:10 #4
Hvordan ser et dump af sqlstr ud?

Normalt ser syntaksten på en INSERT INTO  sætning ud som her:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)


og kan kun give tip ret i at din ser meget mærkelig ud.

Det ser ud som om at du blander dit server_name og database_name ind din sql sætning
Avatar billede Voyager57 Nybegynder
11. februar 2012 - 01:17 #5
Hmm, Dump ?

Har fjernet server navnet, så sætningen su ser således ud:



sqlstr = "INSERT INTO '" & table1 & "' ('" & field1 & "', '" & field2 & "'), VALUES ('" & USDate & "','" & Username & "')"



Men, kommer stadig med fejl i syntaksen, det skal huskes at det er VBA Excel, jeg "koder" (I anførselstegn, da meget er lånt).

Er det kommafejl, semikoloner eller lign?
Avatar billede Voyager57 Nybegynder
11. februar 2012 - 01:24 #6
Til KGKG :

Database 127.0.0.1
Struktur-dump for tabellen Test
Feltnavn    Datatype    Nulværdi    Standardværdi
ID    int(11)    Nej   
Brugernavn    text    Nej   
Dato    date    Nej   
Data dump for tabellen Test
2012    Brugertest    0000-00-00
Struktur-dump for tabellen Spar-Varme
Feltnavn    Datatype    Nulværdi    Standardværdi
ID    int(11)    Nej   
Brugernavn    text    Nej   
Dato    date    Nej

Var det, det du mente ?
Avatar billede Voyager57 Nybegynder
11. februar 2012 - 06:29 #7
Fandt selv løsningen, fejlen lå i brugen af ' og ` Den korrekte streng er :


sqlstr = "INSERT INTO `Test` (`Dato`, `Brugernavn`) VALUES ('" & USDate & "', '" & Username & "');"


Takker tjp og kgkg for info. kostede lidt sved...
Avatar billede kgkg Nybegynder
13. februar 2012 - 16:12 #8
Nej, du fandt ikke selv løsningen. Og du ønsker åbenbart ikke hjælp i fremtiden.
Avatar billede Voyager57 Nybegynder
13. februar 2012 - 16:32 #9
Kan ikke se du kom med løsningen, vidste jo godt at det lå i syntaksen, men hvis du mener du skal have point, så sæt det som svar, og ikke kommentar.
Avatar billede kgkg Nybegynder
13. februar 2012 - 16:52 #10
I #4 får du at vide at:

Det ser ud som om at du blander dit server_name og database_name ind din sql sætning

Hvilket resultere at du fjerner server_name fra din SQL.


I #7 takker du tjp og kgkg for tip

Det må da betyde at du har fået hjælp til at løse dit problem.

#9

Jeg skal ikke lave et svar, jeg skal kun komme med kommentarer, indtil man bliver bedt om at komme med et svar.

Behold du bare dine points, jeg samler ikke på dem.

Det der pisser mig lidt af. Er måden du lukker dit spørgsmål på. Nemlig at du takker for hjælp, men siger at du selv fandt ud af det.
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