vbsnoobdlu
Goto Top

Definierte Abfrage für VBA

HI,
Ich habe mal ne echt dumme Frage aber komme einfach nicht darauf.

Ich habe eine Datenbank die einige dinge tut (Sind für die Frage nicht wichtig ;) )
so nun habe ich eine Abfrage geschrieben und gespeichert (abf_ColB)
wie kann ich in VBA nun mit dem Ergebnis dieser Abfrage arbeiten?
Das Ergebnis sind einige Zeilen also muss in einem Object gespeichert werden nur wie führe ich die Abfrage in VBA aus??

habe bis dato immer folgendes gemacht:


Sub bla()
DIM SQLCB as String
DIM Rec as Object

SQLCB = "Select * from tbl_bla;"

Set Rec = CurrentDb.OpenRecordset(SQLCB)


So würde ich es so auch weitermachen, doch der SQL-Tag ist zu lang und hat zuviele Variablen die ich in VBS nicht mehr getrennt bekommen ;)

bsp:
SELECT tbl_Pressplan.F_Nummer AS [F-Nr], tbl_Pressplan.Kunde, tbl_Pressplan.Modell, tbl_Pressplan.Folie, tbl_Pressplan.Menge, [Hübe] & "/" & summ([Startdatum],[Startzeit],[Maschine]) AS Hub, [Startdatum] & " " & [Startzeit] AS Start, IIf([Gespritzt] Is Null,"","x") AS SP, tbl_Pressplan.Text AS Zusatz, tbl_produktion.Text AS Auftragstext FROM tbl_Pressplan LEFT JOIN tbl_produktion ON tbl_Pressplan.F_Nummer_Auswahl = tbl_produktion.z10_faufnr WHERE (((tbl_Pressplan.Maschine)="Col. B") AND ((tbl_Pressplan.Erledigt) Is Null)) ORDER BY tbl_Pressplan.Startdatum, tbl_Pressplan.Startzeit;


Also wie kann ich eine definierte Access-Abfrage (abf_ColB) in VBA ausführen und das Ergebnis bearbeiten?


Danke schon mal für die Hilfe

Daniel

Content-ID: 92247

Url: https://administrator.de/contentid/92247

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

Logan000
Logan000 17.07.2008 um 11:19:45 Uhr
Goto Top
Moin

..., doch der SQL-Tag ist zu lang und ...
Zu lang für was?

...hat zuviele Variablen die ich in VBS nicht mehr getrennt bekommen ;)
Welche Variablen und warum wist du diese trennen?

Vielleicht hilft Dir das weiter:
DIM SQLCB as String
DIM Rec as Object
SQLCB = "SELECT tbl_Pressplan.F_Nummer AS [F-Nr], tbl_Pressplan.Kunde, "  
SQLCB = SQLCB & "tbl_Pressplan.Modell, tbl_Pressplan.Folie, tbl_Pressplan.Menge, "  
SQLCB = SQLCB & "[Hübe] & "/" & summ([Startdatum],[Startzeit],[Maschine]) AS Hub, "  
SQLCB = SQLCB & "[Startdatum] & " " & [Startzeit] AS Start, IIf([Gespritzt] Is Null,"","x") AS SP, "   
SQLCB = SQLCB & "tbl_Pressplan.Text AS Zusatz, tbl_produktion.Text AS Auftragstext "  
SQLCB = SQLCB & "FROM tbl_Pressplan LEFT JOIN tbl_produktion ON "  
SQLCB = SQLCB & "tbl_Pressplan.F_Nummer_Auswahl = tbl_produktion.z10_faufnr "  
SQLCB = SQLCB & "WHERE (((tbl_Pressplan.Maschine)="Col. B") AND "  
SQLCB = SQLCB & "((tbl_Pressplan.Erledigt) Is Null)) "  
SQLCB = SQLCB & "ORDER BY tbl_Pressplan.Startdatum, tbl_Pressplan.Startzeit;"  

Set Rec = CurrentDb.OpenRecordset(SQLCB)

Gruß L.
VBSnoobDlu
VBSnoobDlu 17.07.2008 um 11:33:28 Uhr
Goto Top
Hi und Danke,
daher das ich den Tag ja in VBA verwenden würde müsste ich Ihn umbasteln, da ja jedes " bedeutet Befehl beendet.

habe schon raus wie ich weiter machen muss ist ja doch relative leicht ;)

stAbfName = "abf_ColB"
Set Rec = CurrentDb.OpenRecordset(stAbfName)


jetzt muss ich nur noch zusehen wie ich die einzelnen Antwortzeilen aus dem Rec Object bekomme.

aber wo ein Wille ist, ist auch ein weg face-smile

Danke für dein Post aber finde Ihn zu lang ... der SQL-Tag ist nun mal bissel länger und
das Problem ist eigentlich ja nur das wenn da mal jemand anderes reinschaut erst den kompletten Tag zusammen Sätzen muss um Ihn zu verstehen.


Wie heißt es so schön

quick and dirty

aber wenn du einen Anreiz hast wegen der sache mit dem Rec object bin ich ganz Ohr


Gruß
Logan000
Logan000 17.07.2008 um 12:09:42 Uhr
Goto Top
aber wenn du einen Anreiz hast wegen der sache mit dem Rec object bin ich ganz Ohr
Du arbeitest in VBA unter...
Access? Welche Version?

Hast du einen Verweis gesetzt auf Microsoft ActiveX Data Objects?

Probiers mal mit

...
DIM Rec as ADODB.Recordset
...
</code

Jetzt solten dir eigenlich alle Eigenschaften und Methoden angeboten werden sobald zu Rec. tippst.
Den Rest soltest Du in der Hilfe finden.

Gruß L.
VBSnoobDlu
VBSnoobDlu 17.07.2008 um 12:31:08 Uhr
Goto Top
es ist Access 2002

habe das mal getestet was du geschrieben hast:
DIM Rec as ADODB.Recordset

das Problem ist das ich Rec ja als Object deklariert habe,
nun bekomme ich die Fehlermeldung doppel deklaration.

Wenn ich die Object deklaration entferne bekomme ich eine Typenunverträglichkeit bei ausführen

Rec = currentDB.OpenRecordSet(SQL)

aber werde da mal ansetzen sollte machbar sein,

Ich bedanke mich für deine Hilfe.
Logan000
Logan000 17.07.2008 um 15:52:50 Uhr
Goto Top
Sorry da habe ich geschlafen.

So in etwa soltes du mit den Ergebnissen arbeiten können:
Dim rec As Recordset
Dim tAbfName As String

tAbfName = "abf_ColB"  
Set rec = CurrentDb.OpenRecordset(tAbfName )
rec.MoveFirst
While Not rec.EOF
    Debug.Print rec.Fields(0).Value   ' Inhalt 1. Feld  
    Debug.Print rec.Fields(1).Value   ' Inhalt 2. Feld usw.  
    rec.MoveNext
Wend

Gruß L.