MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access - Code Archiv
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 12.03.2004, 12:26   #1
TommyK
MOF Meister
MOF Meister
Tipp Grundlagen - SQL-Anweisungen in Visual Basic

Hallo,

hier ein weiteres Tutorial von smaug zum Thema: SQL-Anweisungen in Visual Basic.

Das gesamte Tutorial ist im Dateianhang als Worddatei enthalten.


Download (84kb): Tutorial-SQL-Anweisungen in Visual Basic

__________________

Gruss TommyK

TKSoft-Online | Beispiele im MOF Code-Archiv
Meine Software:Windows 10 Pro 64Bit, Windows 7 Ultimate 64Bit, Office 2007 Pro SP2, Office 2010 Pro, Office 2013 Pro, Office 2016 Pro, Office 2019 Pro, VB6 Pro SP6, VS2017

Geändert von TommyK (28.03.2007 um 12:29 Uhr).
TommyK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.03.2007, 11:40   #2
Klaus B aus D
MOF User
MOF User
Standard

Hallo Tommy,

ich habe mir als Forum-Mitglied deinen interessanten Beitrag heruntergeladen und darin nachvollziehbare Beispiele für meine bescheidenen Anwendungen gefunden.

Mir sind allerdings ein paar Kleinigkeiten aufgefallen:

Auf der 3. Seite steht im Textfeld: "Zeilen beginnen mit Verknüpfungsoperator und Anführungszeichen." Aber bereits im Beispiel danach ("Übergabe von Zahlen-, Datumswerten ...) und weiteren ist das innerhalb deiner Dokumentation nicht der Fall.

Auf der 4. Seite heißt es: "Will man ... Zeichenkette ... muss nach dem Ausdruck SET Feldname = ein Hochkomma (') folgen - gefolgt von einem Anführungszeichen...". Du erklärst weiter, dass Char(34) für das Anführungszeichen (") und Char(39) für das Hochkomma (') steht.
Im folgenden Beispiel mit Verwendung von ASCII-Codes lese ich dann "strSQLExe = "Update tblFall Set BAKRechnNr = " & Char(39) & strNeueNummer & Char(39) & " where ...". Damit ist nach meiner Meinung die Reihenfolge vertauscht - oder ist das egal?

Im Code auf der 6. Seite fehlt in der 3. If-Zeile ein "l" hinter "EMai". Das ist sicher das, welches in der Kommentarzeile darüber beim Wort "MailInfo" hinten dran klebt? (Scherz).

Kann es sein, dass auf der 9. Seite in der Zeile "lChange = .RecordsAffected" vor dem Punkt der Begriff "db" fehlt?

Gruß aus Dorsten
Klaus Bojert

__________________

Q2Access
Klaus B aus D ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.03.2007, 13:58   #3
TommyK
Threadstarter Threadstarter
MOF Meister
MOF Meister
Standard

Hallo Klaus,

ich bin nicht der Urheber des Beitrages. Die Datei stammt von Smaug.
Ich war nur derjenige der den Thread hier im Code Archiv eingestellt hat.
Vielleicht kann Dir Smaug das erklären?

__________________

Gruss TommyK

TKSoft-Online | Beispiele im MOF Code-Archiv
Meine Software:Windows 10 Pro 64Bit, Windows 7 Ultimate 64Bit, Office 2007 Pro SP2, Office 2010 Pro, Office 2013 Pro, Office 2016 Pro, Office 2019 Pro, VB6 Pro SP6, VS2017
TommyK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 24.03.2007, 16:40   #4
Smaug
MOF Guru
MOF Guru
Standard

@Klaus: Danke für Deine Infos. Ich habe mir sowieso schon vorgenommen einige der Dokus mal zu überarbeiten und neu ins Netz zu stellen. Ich werde dann Deine Hinweise bei dieser Gelegenheit gleich mit einpflegen. Vielleicht können die fleissigen Moderatoren dann die alten Dinger vom Netz nehmen.

__________________

Gruß Smaug
---------------------------------
Office 2003/2010 / Win XP/7
Donkarl - DBWiki - Relationale Datenbanken
Smaug ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 24.03.2007, 17:14   #5
TommyK
Threadstarter Threadstarter
MOF Meister
MOF Meister
Standard

@Smaug

Zitat:

Vielleicht können die fleissigen Moderatoren dann die alten Dinger vom Netz nehmen.

Sag dann nur Bescheid. Lösche sie dann auf dem FTP.
Die neuen kannst Du dann direkt einstellen. bzw. wir als Mods können die
alten Beiträge edtieren und die Anhänge dort dann anhängen.

__________________

Gruss TommyK

TKSoft-Online | Beispiele im MOF Code-Archiv
Meine Software:Windows 10 Pro 64Bit, Windows 7 Ultimate 64Bit, Office 2007 Pro SP2, Office 2010 Pro, Office 2013 Pro, Office 2016 Pro, Office 2019 Pro, VB6 Pro SP6, VS2017
TommyK ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 27.03.2007, 13:37   #6
Smaug
MOF Guru
MOF Guru
Standard

Zitat:

Auf der 3. Seite steht im Textfeld: "Zeilen beginnen mit Verknüpfungsoperator und Anführungszeichen." Aber bereits im Beispiel danach ("Übergabe von Zahlen-, Datumswerten ...) und weiteren ist das innerhalb deiner Dokumentation nicht der Fall.

Da gibt es verschiedene Möglichkeiten. Ich denke das kommt in der neuen Lerndoku besser raus.

Zitat:

Auf der 4. Seite...

Hoffe dass auch dies in der neuen Lerndoku etwas besser herausgestellt ist, hier ist ein weites Experimentierfeld für eigene Versuche mit debug.print Stringvariable wo man sich die Strings anschauen kann

Zitat:

Verwendung von ASCII-Codes lese ich dann "strSQLExe = "Update tblFall Set BAKRechnNr = " & Char(39) & strNeueNummer & Char(39) & " where ...". Damit ist nach meiner Meinung die Reihenfolge vertauscht - oder ist das egal?

Sollte AFAIK so korrekt sein nach dem Motto "Update Tabelle Set Feld = NeuerFeldwert und das Ganze als Stringkette

Der Scherz auf Seite 6 dürfte ein Volltreffer sein

Zitat:

9. Seite in der Zeile "lChange = .RecordsAffected" vor dem Punkt der Begriff "db" fehlt?

Nein der Punkt vor RecordsAffected verweist auf den Inhalt der With-Anweisung, z.B. auch bei Formularen:
Anstelle:
Forms!FormularXY.Eigenschaft1 = Wert
Forms!FormularXY.Eigenschaft2 = Wert
geht besser:
Code:

With Forms!FormularXY
   .Eigenschaft1 = Wert
   .Eigenschaft2 = Wert
End With
Auf jeden Fall ein herzliches Dankeschön für Dein Feedback, ein Dank schon mal auch an unsere fleissigen Moderatoren für den Austausch
Angehängte Dateien
Dateityp: zip SQLAnweisungenInVBA.zip (83,8 KB, 653x aufgerufen)

__________________

Gruß Smaug
---------------------------------
Office 2003/2010 / Win XP/7
Donkarl - DBWiki - Relationale Datenbanken
Smaug ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 28.03.2007, 00:39   #7
Klaus B aus D
MOF User
MOF User
Standard

Hi Smaug,

ich habe mir dein überarbeitetes Dokument heruntergeladen, da du es ja sicher aus diesem Grund dem Forum zur Verfügung stellst, und freue mich, dass Anregungen von mir eingeflossen sind. So macht das Forum für mich einen Sinn!

Gruß aus Dorsten

Klaus B.

__________________

Q2Access
Klaus B aus D ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 01.05.2007, 22:54   #8
Klaus B aus D
MOF User
MOF User
Standard

Hallo Smaug,

ich habe deine überarbeitete Version "Einsatz von SQL-Anweisungen in Visual Basic" heruntergeladen und stolpere über dieselbe Stelle, weshalb ich mich im Forum dazu gemeldet habe!
Dieses Mal zwar nicht mehr auf der Seite 4 (nach eigener Anpassung auf S. 7):
Im Erläuterungstext steht "... muss nach dem Ausdruck SET Feldname = ein Hochkomma (’) folgen – gefolgt von einem Anführungszeichen. ...".
Im Beispiel danach (Set RechNr= " & Chr(39) & strNeueNummer ..) kommt aber erst das Anführungszeichen und anschließend das Hochkomma bzw. Char(39).

Somit erneut die Frage: ist die Reihenfolge egal?

Gruß aus Dorsten
Klaus Bojert

__________________

Q2Access
Klaus B aus D ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 02.05.2007, 06:30   #9
Smaug
MOF Guru
MOF Guru
Standard

Hallo Klaus. Durch Deine Aufmerksamkeit merke ich erst wie nachlässig ich bin. Dafür erst mal ein grosses Danke schön. Ich hätte mehr auf diese spezielle Thematik eingehen müssen die für mich zu selbstverständlich war.
Die beiden Ausdrücke:
Code:

s = "Update Tabelle Set Feldname=' " & Stringvariable & " ' where ......
s = "Update Tabelle Set KdName=" & Chr(39) & Stringvariable & Chr(39) & " where...
sind gleichwertig da das Zeichen Chr(39) das Hochkomma ersetzt.
Wenn Du Dir beide Varianten im Testfenster ausgibst dann wirst Du feststellen, dass in beiden Fällen der gleiche String als Ergebnis ausgegeben wird:
Update Tabelle Set Feldname = 'Fritz' where Feldname = 'Andreas'
Chr(39) setzt innerhalb der SQL-Anweisung die Hochkommas. Du könntest auch Chr(34) verwenden wodurch Anführungszeichen gesetzt würden mit folgendem Resultat:
Update Tabelle Set Feldname = "Fritz" where Feldname = 'Andreas'
Die Reihenfolge Anführungszeichen und Chr(39) ist nicht egal. Wenn Du mit Chr(39) oder Chr(34) arbeitest, dann zerlegst Du den String ja in mehrere Teile. Nach jedem Teil muss wie bei jeder Stringverkettung ein Anführungszeichen stehen; also:
sResultat = "Dies ist der erste String" & " nun folgt der zweite Teil"
Nach dem Verknüpfungsoperator kann anstelle eines Strings - wie im Beispiel auch eine Variable folgen. Um VBA mitzuteilen dass der 1.String abgeschlossen ist, muss das Anführungszeichen folgen, danach die Variable oder der 2.String. Wenn dann wieder ein Verknüpfungsoperator folgt müssen immer wenn ein String folgt wieder Anführungszeichen folgen:
sResultat = "Erster String" & sStringvariable & "Text nach Variable" & ....
Ich hoffe ich konnte das so einigermassen erklären. Falls es noch nicht klar ist dann frag ruhig wieder nach. Ich stehe Dir gern zur Verfügung und danke auch nochmal für Deine Aufmerksamkeit

__________________

Gruß Smaug
---------------------------------
Office 2003/2010 / Win XP/7
Donkarl - DBWiki - Relationale Datenbanken
Smaug ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.05.2007, 19:14   #10
usa1119
Standard

Hallo Zusammen,

ich hätte noch eine Frage zu den QueryDef und hoffe es kann mir jemand dabei helfen.
Die Frage bezieht sich auf den von Smaug erstellen Code:


Code:

Sub Test_QueryDef()

'Test eine QueryDef mit SQL weiterverarbeiten

Dim db As Database
Dim qdf As QueryDef
Dim strSQL As String
Dim strUpdate As String

Set db = OpenDatabase("U:\Daten\Echt\Entwicklungsumgebung\Win\DB_WC6uWC7.mdb", False, False)
    
    strSQL = "SELECT tab_QueryDefTest.tbl_002_Obj_AbzgVSt, tab_QueryDefTest.tbl_002_TestUpdate " & _
                    "FROM tab_QueryDefTest " & _
                    "WHERE (((tab_QueryDefTest.tbl_002_Obj_AbzgVSt)>0<100) AND ((tab_QueryDefTest.tbl_002_TestUpdate)=False));"
    
Set qdf = db.CreateQueryDef("", strSQL)
DoCmd.OpenQuery qdf '<======     Hier erscheint ein Laufzeitfehler 2498
strUpdate = "UPDATE tab_QueryDefTest SET tab_QueryDefTest.tbl_002_TestUpdate = True"
qdf.Execute strUpdate               '<======     Hier erscheint ein Laufzeitfehler 3421
Set qdf = Nothing
db.Close
Set db = Nothing
End Sub
Es erscheinen beim Ausführen o. g. Fehlermeldungen in den Zeilen.
Wenn ich die Zeile: DoCmd.OpenQuery qdf auskommentiere, erscheint ein weiterer Fehler
in der weiter unten gekennzeichneten Zeile

Würde mich freuen, wenn mir hierbei jemand Hilfestellung geben könnte.

Viele Grüße
Uwe
 
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.05.2007, 09:35   #11
Anne Berg
MOF Guru
MOF Guru
Standard

Code:

Set qdf = db.CreateQueryDef("", strSQL)
DoCmd.OpenQuery qdf '<======     Hier erscheint ein Laufzeitfehler 2498
Die OpenQuery-Methode erwartet den Namen einer gespeicherten Abfrage als String, kein Objekt.
Aber auch wenn du qdf.Name hier einsetzt, funktioniert es nicht, da du dem neuen Objekt keinen Namen gegeben hast.
Code:

strUpdate = "UPDATE tab_QueryDefTest SET tab_QueryDefTest.tbl_002_TestUpdate = True"
qdf.Execute strUpdate               '<======     Hier erscheint ein Laufzeitfehler 3421
Was auch immer LZF 3421 sein mag (Der Text sagt mehr als eine Zahl), so wird es an der Zeichenkette TRUE liegen, die entweder außerhalb des Strings liegen (also verkettet) oder direkt mit ihrem Wert (0) eingegeben werden sollte.

@Smaug: wäre nett, wenn du Punkt 1 bei Gelegenheit in deiner Doku berücksichtigen könntest.

__________________

Liebe Grüße
Anne
Anne Berg ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.05.2007, 15:21   #12
Smaug
MOF Guru
MOF Guru
Standard

@Anne: herzlichen Dank, wird natürlich gemacht

__________________

Gruß Smaug
---------------------------------
Office 2003/2010 / Win XP/7
Donkarl - DBWiki - Relationale Datenbanken
Smaug ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 28.05.2007, 15:38   #13
Anne Berg
MOF Guru
MOF Guru
Standard

Sorry, sehe gerade dass ich einen Fehler gemacht habe: True ist natürlich -1, False ist 0!

__________________

Liebe Grüße
Anne
Anne Berg ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.