ERLEDIGT
NEIN
NEIN
ANTWORTEN
14
14
ZUGRIFFE
783
783
EMPFEHLEN
-
Hallo,
ich würde gerne wissen wie ich in Access eine Abfrage per VBA erstellen kann und dann
zusätzlich noch ein Kriterium übergeben kann was variabel sein muss.
Also generel würde ich ja sowas machen
Code :1 2 3 4
Dim db As DAO.Database Dim rec_adr As DAO.Recordset Set rec_adr = db.OpenRecordset("SELECT * FROM Artikerl WHERE ArtikelNr = 1234")
Ich möchte das aber so haben, das wenn ich in meiner Artikelliste auf die ArtikelNr. doppleklicke sich die Abfrage öffnet und als Kriterium die angeklickte ArtikelNr übergeben wird. Wie kann man sowas machen?
-
Erstelle in Datasheet-Formular auf die Abfrage.
Dann kannst du dieses mit dem Filter öffnen
Code vb:1 2 3 4 5 6 7
Sub openFilteredDS(ByVal artikelNr As Long) Dim myFilterString As String myFilterString = "ArtikelNr = " & artikelNr Call DoCmd.OpenForm("myFormName", acFormDS, , myFilterString) End Sub
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Ok ich hab das mal gemacht aber ändert sich nichts. der Filter schaltet sich zwar ein aber es ändert sich halt nichts. es wäre glaube ich auch besser wenn sich das neue Formular oder die Abfrage in einem neuen Fenster öffnet. Was könnte man da tun?
-
Diese function öffnet das ganze in einem neuen Fenster.
Wie hast du es denn eingebaut?---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hier rein
Code :1 2
Private Sub PRDNO_DblClick(Cancel As Integer) End Sub
-
Ja, das ist leer. Da wird nix ausgeführt. Du musst schon mein Code anpassen und da reinkopieren. Ansonsten geht nix.
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Ich weiss das es leer ist, ich wollte nur zeigen wo ich es eingefügt habe. Allerdings hast du ja bei deiner Methode nen String Parameter als Argument, den kann ich doch hier gar nicht einfügen da schon was anderes als Parameter übergeben wurde
-
Hier mal wich es angepasst habe:
Code :1 2 3 4 5 6 7
Sub openFilteredDS(ByVal artikelNr As Sring) Dim myFilterString As String myFilterString = Me.artikelNr Call DoCmd.OpenForm("Artikel_Form", acFormDS, , myFilterString) End Sub
Nur da tut sich nichts.
-
Item: Wie nix? Es öffnet kein Fenster, es kommt keine ehlermeldung? Die Maus blockiert, er wie was wo?
Nebenbei, finde die 10 Unterschiede
Code vb:1 2 3 4 5
'Dein Code myFilterString = Me.artikelNr 'Mein Code myFilterString = "ArtikelNr = " & artikelNr
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Du hast aber auch oben die Variable artikelNr als Long zugewiesen, oder meinst du mit "ArtikelNr"
den Namen des Textfeldes?: Kurze andere Frage: Ich müsste das doch auch mit SQL ausführen können, so etwa:
Code :1 2 3 4 5 6 7 8 9 10
Private Sub PRDNO_DblClick(Cancel As Integer) Dim sqlstring As String sqlstring = "SELECT Master.ArtikelNr, Master.Artikel, Master.KundenNr, Master.Kunde, Master.Preis FROM Master" DoCmd.RunSQL sqlstring End Sub
Kommt aber immer ein Fehler und zwar: "Laufzeitfehler 3075 Syntaxfehler (fehlender Operator) in Abfrageasudruck Master.Preis".
Wieso ist das so?
-
RunSQL führt ein SQL aus. Sprich, ein INSERT, DELETE oder UPDATE. SELECT ohne INTO zählt da nicht dazu, da es keine Daten manipuliert.
Ein Auszug aus der F1-Hilfe auf runSQL
SQLStatement: A string expression that's a valid SQL statement for an action query or a data-definition query . It uses an INSERT INTO, DELETE, SELECT...INTO, UPDATE, CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, or DROP INDEX statement. Include an IN clause if you want to access another database.
Die ArtikelNr in meinem Beispiel war ein Beispiel. Nimm dein ArtikelNr-Feld oder was auch immer. Aber es muss immer vom Type 'Feld = Wert' sein und nicht nur 'Wert'---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Also ist es generell nicht möglich eine einfache Auswahlabfrage mit VBA zu erstellen?
-
Doch. Es ist nur die Frage was du damit willst.
Du kannst jederzeit eine Abfrage erstellen und öffnen. Doch dazu muss sie mindestens als Abfrage gespeichert sein.
Dazu eine kleine Funktion
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Public Sub openSqlAsQuery(ByVal sql As String) Const C_TEMP_QUERY_NAME = "vw_temp" 'Dein SQL sql = "SELECT * FROM " On Error Resume Next 'Versuchen das SQL hinter der Abfrage vw_temp zu ersetzen CurrentDb.QueryDefs(C_TEMP_QUERY_NAME).sql = sql If Err.Number <> 0 Then 'Falls das Query vw_temp noch nicht besteht, neu anlegen Call CurrentDb.CreateQueryDef(C_TEMP_QUERY_NAME, sql) Err.clear End If On Error GoTo 0 'Abfrage öffnen Call DoCmd.OpenQuery(C_TEMP_QUERY_NAME) End Sub
Diese kannst du dann so aufrufen
Code vb:1 2 3 4 5 6 7 8
Public Sub test() Dim SqlString As String SqlString = "SELECT Master.ArtikelNr, Master.Artikel, Master.KundenNr, Master.Kunde, Master.Preis FROM Master" Call openSqlAsQuery(SqlString) End Sub
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Code :
1 2 3 4 5
Public Sub openSqlAsQuery(ByVal sql As String) Const C_TEMP_QUERY_NAME = "vw_temp" 'Dein SQL sql = "SELECT * FROM "
Muss ich denn dann hier sql = SELECT Master.ArtikelNr, Master.Artikel......etc. eingeben?
Oder ist das irgendwie so eine Allgemeine Form. Weil bei dem Test Code würde ich es ja sonst nochmal engeben.
-
Nachtrag:
Sorry, hab ein Fehler in meinerm Script entdeckt!
das folgende muss gelöscht werden!
Code vb:1 2
'Dein SQL sql = "SELECT * FROM "
So sollte es aussehen
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Public Sub openSqlAsQuery(ByVal sql As String) Const C_TEMP_QUERY_NAME = "vw_temp" On Error Resume Next 'Versuchen das SQL hinter der Abfrage vw_temp zu ersetzen CurrentDb.QueryDefs(C_TEMP_QUERY_NAME).sql = sql If Err.Number <> 0 Then 'Falls das Query vw_temp noch nicht besteht, neu anlegen Call CurrentDb.CreateQueryDef(C_TEMP_QUERY_NAME, sql) Err.clear End If On Error GoTo 0 'Abfrage öffnen Call DoCmd.OpenQuery(C_TEMP_QUERY_NAME) End Sub
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
Ähnliche Themen
-
PHP und mysqli - Ergebnisarray einer Abfrage in zweiter Abfrage verwenden
Von TMM im Forum PHPAntworten: 3Letzter Beitrag: 10.11.11, 13:08 -
[MDX] Abfrage mit ähnlicher Semantik zu SQL Abfrage mit Group By und Where
Von Thomas Darimont im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 28.01.10, 18:56 -
Schleife zur abfrage des preises und alphabetische abfrage des namen
Von Johnny8519 im Forum JavaAntworten: 34Letzter Beitrag: 23.12.09, 20:56 -
SQL Abfrage: Abfrage nach ungleichen Variablen? ne -.-
Von Nilman im Forum Relationale DatenbanksystemeAntworten: 8Letzter Beitrag: 31.05.05, 13:24 -
sql server 2000 Abfrage einer Abfrage
Von supafunk im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 15.04.05, 18:20





Zitieren


Login





