online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon Peter3011 vom 01.07.2021, 19:08 Options

Lösung

Abfrage mit ADO VBA manipulieren und in Unterformular anzeigen

Hallo zusammen,

ich bräuchte mal wieder Euren intelektuellen Rat.

Und zwar habe ich in einem Unterformular eine Abfrage mit dem Namen Qry_Financial_Payment_Data, die ich nach nach den 3 Kriterien Projekt, Annex, Bestnr anpassen will.

Es soll aber immer nur ein Kriterium gelten, also nur Project oder nur Annex oder nur Bestnr.

Die Abfrage müsste also bspw. die Spalten PROJECT, Payment_received_on, Payment_covered_by enthalten, wenn ich ein bestimmtes Project Test01 abrufe.

Will ich jedoch einen Annex sehen, dann müsste das Unterformular so aussehen: ANNEX, Payment_received_on, Payment_covered_by

Für jedes Kriterium gibt es je ein eigenes Textfeld mit den Namen txt_Project_DP, txt_Annex_DP und txt_Bestnr_DP.

Für alle 3 Kriterien habe ich bspw. folgendes Makro geschrieben:

Private Sub txt_Project_PD_LostFocus()

On Error GoTo Err_Command10_Click

'Declarations
Dim strsql As String
Dim rst As ADODB.Recordset

Set rst = New ADODB.Recordset

'Check, if project is contained in textfield
If IsNull(txt_Project_PD) Then
GoTo Exit_Command10_Click
End If

'Check, if project is there
If IsNull(DLookup("[Project]", "Tbl_Financial_Data", "[Project]= '" & Me!txt_Project_PD & "'")) Then
MsgBox ("This project in textfield Project is not listed!")
GoTo Exit_Command10_Click

'Manipulate query
Else

strsql = "SELECT Tbl_Financial_Data.Project, Tbl_Financial_Data.Down_payment_received_on, " & _
"Tbl_Financial_Data.Down_payment_covered_by, Tbl_Financial_Data.Rest_payment_received_on, " & _
"Tbl_Financial_Data.Rest_payment_covered_by, Tbl_Financial_Data.Allowed_Credit_Code, " & _
"Sum(Tbl_Financial_Data.Down_payment_received_USD) AS Down_payment_received_USD, " & _
"Sum(Tbl_Financial_Data.Rest_payment_received_USD) AS Rest_payment_received_USD, " & _
"Sum(Tbl_Financial_Data.Down_payment_received_EUR) AS Down_payment_received_EUR, " & _
"Sum(Tbl_Financial_Data.Rest_payment_received_EUR) AS Rest_payment_received_EUR, " & _
"Tbl_Financial_Data.Comments_Financials_Project" & " " & _
"FROM Tbl_Financial_Data" & " " & _
"GROUP BY Tbl_Financial_Data.Project, Tbl_Financial_Data.Down_payment_received_on, " & _
"Tbl_Financial_Data.Down_payment_covered_by, Tbl_Financial_Data.Rest_payment_received_on, " & _
"Tbl_Financial_Data.Rest_payment_covered_by, Tbl_Financial_Data.Allowed_Credit_Code, " & _
"Tbl_Financial_Data.Comments_Financials_Project HAVING (((Tbl_Financial_Data.Project) Is Not Null " & _
"And (Tbl_Financial_Data.Project)=[forms]![Frm_Financial_Payment_Dates_SFrm]![txt_Project_PD]));"

rst.Open strsql, CurrentProject.Connection, adOpenDynamic, adLockOptimistic

End If

'---------------------------------------------------------------------------------------------------------------------------
'Exit
'---------------------------------------------------------------------------------------------------------------------------

Exit_Command10_Click:
On Error Resume Next
rst.Close
Exit Sub

Err_Command10_Click:
MsgBox Err.Description
Resume Exit_Command10_Click

End Sub

Damit manipuliere ich den Query jedoch nicht und mit den Deklarationen QueryDef qdf.SQL bin ich auch nicht weiter gekommen.

Mir wurde gesagt, dass das auch DAO VBA ist und nicht ADO.

Könntet Ihr mich vielleicht erleuchten, dass es in ADO geht?

Gruß

Peter


Antwort schreiben

Antwort 1 von RaHi vom 13.07.2021, 22:54 OptionsLösung

Lösung
Hallo Peter,

wieso willst du ADO oder DAO verwenden? Nimm das alles raus und erzeuge nur den String "sqlstr". Danach setzt du die "RecordSource" des Unterformulars (Bsp hier: ufo) direkt auf den sqlstr. Bsp.:
me!ufo.form.RecordSource = sqlstr
IIm übrigen ist dein Code oben reinstes ADO.

Gruß
Ralf

Antwort 2 von Peter3011 vom 20.08.2021, 16:13 Options

Hallo Ralf,

habe endlich wieder mehr Zeit mich der Programmiererei zu widmen.

Deine Lösung hat gefunzt.

Danke und entschuldige für die späte Antwort, aber im Saisongeschäft geht es manchmal haarig zu.

Gruß

Peter

Ähnliche Themen

Abfrage in Access soll auch leere Felder anzeigen
maigansl  09.04.2008 - 114 Hits - 1 Antwort

unterformular datensatz anzeigen
gondi  23.07.2008 - 19 Hits - 5 Antworten

[Abfrage] Nur Werte mit dem jüngsten Datum anzeigen
hans_99  11.06.2009 - 324 Hits - 6 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026