ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
2342
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Merlin01 ist offline Mitglied
    Registriert seit
    Jan 2007
    Beiträge
    13
    Hallo
    Bin ein Anfänger in Mysql und habe da ein Problem.
    Es soll Eine Access DB in My Sqlumgestrickt werden.
    Dieses ist soweit mittels Dump geschehen.
    Die Verbindung ist hergestellt und kann von VB6 heraus auch schon die MySql DB
    auslesen, Comboboxen füllen ist auch OK.
    Nun möchte ich auch ein Datagrid mit Daten aus der DB füllen. Und da stoße Ich auf Probleme
    Vielleicht weiss von euch jemend Rat. Im folgendem Code ist ein Fehler in der Syntax, kann aber nicht lokalisieren wo, Es Kommt der Syntaxfehler in Line1. Allerdings ist der String recht lang.
    hier der Code

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    
    Private Sub TEST(Optional ByVal tDate As Date = 0)
     
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim Query As String
    Dim conf_DB_ConnectionString As String
     
    Const const_mySQLDriver = "{MySQL ODBC 3.51 Driver}"
    Const const_mySQLServer = "localhost"
    Const const_mySQLDatabase = "DB"
    Const const_mySQLUser = "root"
    Const const_mySQLPassword = ""
    Const const_mySQLOption = ""
     
    conf_DB_ConnectionString = "DRIVER=" & const_mySQLDriver & ";" & _
    "SERVER=" & const_mySQLServer & ";" & _
    "DATABASE=" & const_mySQLDatabase & ";" & _
    "USER=" & const_mySQLUser & ";" & _
    "PASSWORD=" & const_mySQLPassword & ";" & _
    "OPTION=" & const_mySQLOption & ";"
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    cn.Open ([conf_DB_ConnectionString]) 
     
     
      Query = " SELECT  eintraege.*, bezeichnungen.Text, bezeichnungen.Nummer, schichtname.ShiftName, kategorie.Text as C2Text"
      Query = " FROM eintraege LEFT OUTER JOIN bezeichnungen ON eintraege.KennungID = bezeichnungen.ID) LEFT OUTER JOIN schichtname ON eintraege.ShiftID = Schichtname.ID)"
      Query = " LEFT OUTER JOIN kategorie ON eintraege.Combo2ID = kategorie.ID"
      Query = " ORDER BY eintraege.BereichNr, Date"
      
      If tDate = 0 Then
           Query = " WHERE eintraege.Date > = " & ToSql(ToDate(DateAdd("d", -1, Now)))
             ElseIf cmbSchicht.ListIndex > 0 Then
           Query = " WHERE eintraege.Date > = " & ToSql(DateSerial(Year(tDate), Month(tDate), Day(tDate)))
               tDate = DateAdd("d", 1, tDate)
           Query = " AND eintraege.Date < " & ToSql(DateSerial(Year(tDate), Month(tDate), Day(tDate)))
           Query = " AND eintraege.ShiftID = " & ToSql(cmbSchicht.ItemData(cmbSchicht.ListIndex))
             Else
           Query = " WHERE eintraege.Date > = " & ToSql(DateSerial(Year(tDate), Month(tDate), Day(tDate)))
               tDate = DateAdd("d", 1, tDate)
           Query = " AND eintraege.Date < " & ToSql(DateSerial(Year(tDate), Month(tDate), Day(tDate)))
           Query = " ORDER BY eintraege.BereichNr, Date"
      End If
            rs.Open Query, cn
     

  2. #2
    Zvoni ist offline Mitglied Smaragd
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    1.031
    Der Aufbau deines Querys ist Murks.

    Code vb:
    1
    2
    3
    4
    
    Query = " SELECT  eintraege.*, bezeichnungen.Text, bezeichnungen.Nummer, schichtname.ShiftName, kategorie.Text as C2Text"
      Query = Query &  " FROM eintraege LEFT OUTER JOIN bezeichnungen ON eintraege.KennungID = bezeichnungen.ID) LEFT OUTER JOIN schichtname ON eintraege.ShiftID = Schichtname.ID)"
      Query = Query & " LEFT OUTER JOIN kategorie ON eintraege.Combo2ID = kategorie.ID"
      Query = Query & " ORDER BY eintraege.BereichNr, Date"

    In deiner Variante enthält Query nur die letzte Zuweisung ("ORDER BY blablaba")
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  3. #3
    Merlin01 ist offline Mitglied
    Registriert seit
    Jan 2007
    Beiträge
    13
    Danke für die schnelle Antwort.
    wie würde es denn richtig lauten ****
     

  4. #4
    Zvoni ist offline Mitglied Smaragd
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    1.031
    steht doch da.....
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  5. #5
    Merlin01 ist offline Mitglied
    Registriert seit
    Jan 2007
    Beiträge
    13
    Sorry, Habs so eingetragen aber leider immer noch Fehler in der Sytax
     

  6. #6
    Zvoni ist offline Mitglied Smaragd
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    1.031
    und wo genau?
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  7. #7
    Merlin01 ist offline Mitglied
    Registriert seit
    Jan 2007
    Beiträge
    13
    in der zweiten Zeile bei LEFT OUTER JOIN schichtname ON eintraege.ShiftID

    Query = Query & " FROM eintraege LEFT OUTER JOIN bezeichnungen ON eintraege.KennungID = bezeichnungen.ID) LEFT OUTER JOIN schichtname ON eintraege.ShiftID = Schichtname.ID)"
     

  8. #8
    Merlin01 ist offline Mitglied
    Registriert seit
    Jan 2007
    Beiträge
    13
    So der erste abschnitt läuft nun ohne Fehler es war noch eine Klammer offen.
    aber im zweiten abschnitt wird noch über das Datum gemeckert
    eventuell muss es umformatiert werden ****

    in der Access DB stand das Datum im Format dd.mm.yyyy
    in der Mysql DB im Format mm.dd.yyyy

    If tDate = 0 Then
    Query = " WHERE eintraege.Date > = " & ToSql(ToDate(DateAdd("d", -1, Now)))
    ElseIf cmbSchicht.ListIndex > 0 Then
    Query = Query & " WHERE eintraege.Date > = " & ToSql(DateSerial(Year(tDate), Month(tDate), Day(tDate)))
    tDate = DateAdd("d", 1, tDate)
    Query =Query & " AND eintraege.Date < " & ToSql(DateSerial(Year(tDate), Month(tDate), Day(tDate)))
    Query =Query & " AND eintraege.ShiftID = " & ToSql(cmbSchicht.ItemData(cmbSchicht.ListIndex))
    Else
    Query =Query & " WHERE eintraege.Date > = " & ToSql(DateSerial(Year(tDate), Month(tDate), Day(tDate)))
    tDate = DateAdd("d", 1, tDate)
    Query =Query & " AND eintraege.Date < " & ToSql(DateSerial(Year(tDate), Month(tDate), Day(tDate)))
    Query =Query & " ORDER BY eintraege.BereichNr, Date"
    End If
     

  9. #9
    Zvoni ist offline Mitglied Smaragd
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    1.031
    Was isn "ToSQL" eine Funktion?
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  10. #10
    VScan Tutorials.de Gastzugang
    Hallo:

    Tipp am Rande, ein Debug.Print kann Wunder bewirken, da man die SQL-Anweisung komplett analysieren kann, mit etwaigen Variablen, die eingesetzt/ersetzt werden sollen, daher würde ich empfehlen, diese erst einmal auszugeben, und dann direkt im Sql-Fenster eingeben/bearbeiten und ausführen, anschließend kann man Diskrepanzen im Code ausbessern.

    @Zvoni: Schätze mal, dass in ToSql(...) das Datum in eine für MySql lesbare Form umgewandelt werden soll.

    Viele Grüße, ...
    Geändert von VScan (23.04.12 um 01:37 Uhr)
     

  11. #11
    DrMueller ist offline Mitglied Platin
    Registriert seit
    Aug 2006
    Beiträge
    549
    Einfachstes Vorgehen bei SQL-Fehlern:
    1. Wie VScan agt, den SQL in seiner Gesamtheit mit ausgefüllten Variablen ausgeben. Entweder per Debug.print oder im Direktfenster per debuggen.
    2. Diesen SQL per Management Consolidate im Direktfenster ausführen
    3. Fehlermeldung analysieren
    4. Profit
     

Thema nicht erledigt

Ähnliche Themen

  1. Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
    Von strandjunge im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 17.02.13, 08:46
  2. Antworten: 6
    Letzter Beitrag: 07.08.09, 22:12
  3. Antworten: 3
    Letzter Beitrag: 29.11.08, 20:08
  4. MySQL: ERROR 2013 (HY000): Lost connection to MySQL server during query
    Von blumshuett im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 07.06.06, 23:23
  5. mysql: mysql-server: mysql.sock fehlt (Suse 9.1)
    Von zappoth im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 08.05.06, 18:06