User Tools

Site Tools


vba:tutorials:debugquery

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vba:tutorials:debugquery [16.09.2014 16:12:16]
yaslaw [3) Testen mit Views]
vba:tutorials:debugquery [13.02.2019 09:24:39] (current)
yaslaw
Line 1: Line 1:
-======[VBA] [Access] Debug Queries======+======[VBA][Access] Debug Queries====== 
 +//Ein Tutorial zum Debuggen von SQL unter VBA in MS Access.//
  
-{{image class="​left"​ url="​images/​icons/​48/​gtk-go-back-rtl.png"​}}  ​ 
 =====Ausgangslage===== =====Ausgangslage=====
 Immer und immer wieder kommt man an den Punkt, dass ein in VBA zusammengesetztes Query nicht das macht was man will. Darum hier mal eine Anleitung, damit ich sie nicht immer wieder schreiben muss. Immer und immer wieder kommt man an den Punkt, dass ein in VBA zusammengesetztes Query nicht das macht was man will. Darum hier mal eine Anleitung, damit ich sie nicht immer wieder schreiben muss.
Line 13: Line 13:
  where = 15  where = 15
  sql = "​UPDATE myTable SET feld1 = " & value & " ​ WHERE id = " & where & ";"​  sql = "​UPDATE myTable SET feld1 = " & value & " ​ WHERE id = " & where & ";"​
- Call DoCmd.RunSQL(sql)+ CurrentDb.execute ​sql
 </​code>​ </​code>​
  
-{{image class="​left"​ url="​images/​icons/​48/​text-x-gtkrc.png"​}}  ​ 
 =====Lösung===== =====Lösung=====
-Um mit der Nummerierung der Schritte Parallel zu [[php:​tutorials:​debugmysqlqueries]] bleiben beginnt es hier mit Punkt 2)+ 
 +====1Report Error ==== 
 +Sicherstellen,​ dass ein Fehler generiert wird, wenn das sql ausgeführt wird. Dazu den execute durch den Parameter dbFailOnError ergänzen 
 +<code vb>​ CurrentDb.execute sql, dbFailOnError</​code>​
  
 ====2) Query-String ausgeben==== ====2) Query-String ausgeben====
 Wir können den generierten Query-String testen. Wir können den generierten Query-String testen.
-Dazu geben wir diesen mittels Debug:Print aus. Dies schreibt den SQL-String in das Direktfenster von VBA.+Dazu geben wir diesen mittels Debug.Print aus. Dies schreibt den SQL-String in das Direktfenster von VBA.
  
 <code vb> <code vb>
Line 32: Line 34:
  sql = "​UPDATE myTable SET feld1 = " & value & " ​ WHERE id = " & where & ";"​  sql = "​UPDATE myTable SET feld1 = " & value & " ​ WHERE id = " & where & ";"​
 Debug.Print sql Debug.Print sql
-' ​   ​Call DoCmd.RunSQL(sql)+' ​   ​CurrentDb.execute ​sql, dbFailOnError
 </​code>​ </​code>​
  
 In der Ausgabe erscheint dann etwa das Folgende In der Ausgabe erscheint dann etwa das Folgende
-<​code ​sql>UPDATE myTable SET feld1 = test  WHERE id = 15;</​code>​+<​code>​UPDATE myTable SET feld1 = test  WHERE id = 15;</​code>​
 Mit diesen Informationen können andere Programmierer in Foren etc. besser helfen als '​nur'​ mit der Meldung 'Es geht nicht'​. Mit diesen Informationen können andere Programmierer in Foren etc. besser helfen als '​nur'​ mit der Meldung 'Es geht nicht'​.
  
Line 42: Line 44:
  
 ====3) Testen mit Views==== ​ ====3) Testen mit Views==== ​
-Um das Sql zu verfeinern und zu testen kann man dieses nun aus der Ausgabe kopieren.Wechseln auf die Ansichten (Views) der Access-Datenbank. Dort erstellen wir eine neue Ansicht, wechseln auf die SQL-Ansicht und kopieren ​fügen unser SQL-Statement ein. Hier können wir testen und schauen was falsch ist.+Um das Sql zu verfeinern und zu testen kann man dieses nun aus der Ausgabe kopieren.Wechseln auf die Ansichten (Views/Abfragen) der Access-Datenbank. Dort erstellen wir eine neue Ansicht, wechseln auf die SQL-Ansicht und fügen unser SQL-Statement ein. Hier können wir testen und schauen was falsch ist.
 Anschliessend die Erkenntnisse im Code einpflegen. Anschliessend die Erkenntnisse im Code einpflegen.
 Unser korrigiertes und getestete SQL sieht dann so aus Unser korrigiertes und getestete SQL sieht dann so aus
Line 48: Line 50:
  
 ====4) Korrektur einpflegen==== ====4) Korrektur einpflegen====
-Zum Schluss müssen wir nur noch das error_reporting() sowie unser echo() ​wieder entfernen und unseren koriggiertes SQL in den Code einpflegen. Und so sieht dann der funktionierende Code aus+Zum Schluss müssen wir nur noch den debug.print ​wieder entfernen und unseren koriggiertes SQL in den Code einpflegen. Und so sieht dann der funktionierende Code aus
 <code vb> <code vb>
  Dim value, sql As String  Dim value, sql As String
Line 56: Line 58:
  where = 15  where = 15
  sql = "​UPDATE myTable SET feld1 = '"​ & value & "' ​ WHERE id = " & where & ";"​  sql = "​UPDATE myTable SET feld1 = '"​ & value & "' ​ WHERE id = " & where & ";"​
- Call DoCmd.RunSQL(sql)+ CurrentDb.execute ​sql, dbFailOnError
 </​code>​ </​code>​
 {{tag>​VBA MS_Access}} {{tag>​VBA MS_Access}}
vba/tutorials/debugquery.1410876736.txt.gz · Last modified: 16.09.2014 16:12:16 by yaslaw