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 [17.04.2015 08:39:56]
yaslaw vba:access:debugquery renamed to vba:tutorial:debugquery
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====
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 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 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.1429252796.txt.gz · Last modified: 17.04.2015 08:39:56 by yaslaw