Liebe Spezialisten,
habe sicherlich zu wenig VBA Grundkenntnisse :'(
Möchte ein Unterformular mit Daten einer Abfrage füllen.
Kriterium für Firma (aus Combobox) ' 'Wie "*" & [Formulare]![frm_Projekt]![cbxFirma] & "*"
Kriterium für Gewerk(aus Combobox) ' 'Wie "*" & [Formulare]![frm_Projekt]![cbxGewerk] & "*"
Kriterium für Belegtyp (aus Listenfeld) siehe Code.
Leider wird nach dem Ausführen die grundlegende Abfrage reduziert und nur noch die Spalte mit dem erzeugten Kriterium gefiltert?!
Wie bekomme ich es hin, damit alle 3 Kriterien abgefragt werden und wie kann ich den Belegtyp auch wieder entsprechen 'Wie "*" & [Formulare]![frm_Projekt]![lbxBelegtyp] & "*" leeren.
Vielen Dank für eine Lösung.
Gruß OttoPrivate Sub Befehl98_Click()
'Meine Variablen
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim varItem As Variant
Dim strCriteria As String
Dim strSQL As String
'Abrufen der Datenbank und der gespeicherten Abfrage
Set db = CurrentDb()
Set qdf = db.QueryDefs("qry_Belege")
' Durchlaufen der ausgewählten Elemente im Listenfeld und Erstellen einer Textzeichenfolge
For Each varItem In Me!lbxBelegtyp.ItemsSelected
strCriteria = strCriteria & "," & Me!lbxBelegtyp.ItemData(varItem) & ""
Next varItem
'Überprüfen ob ich etwas ausgewählt habe
If Len(strCriteria) = 0 Then
MsgBox "Es wurde kein Belegtyp ausgewählt" _
, vbExclamation, "Pauli!"
Exit Sub
End If
'Entfernen des führenden Kommas aus der Zeichenfolge
strCriteria = Right(strCriteria, Len(strCriteria) - 1)
'Erstellen der newSQL-Anweisung mit der Zeichenfolge
strSQL = "SELECT * FROM tbl_Belege " & _
"WHERE tbl_Belege.Typ_Nr IN(" & strCriteria & ");"
Debug.Print strSQL
' Anwenden der neuen SQL-Anweisung auf die Abfrage
qdf.SQL = strSQL
'Aktualisieren Abfrage
'Me.Requery '"qry_Belege"
'Leeren Sie den Speicher
Set db = Nothing
Set qdf = Nothing
End Sub
' 'Wie "*" & [Formulare]![frm_Projekt]![cbxFirma] & "*"
Private Sub cbxFirma_AfterUpdate()
PID2 = Me!P_ID
DoCmd.Requery
DoCmd.GoToControl "P_ID"
DoCmd.FindRecord PID2, , , , , , True
End Sub
Private Sub cbxFirma_DblClick(Cancel As Integer)
PID2 = Me!P_ID
Me.cbxBelegtyp = ""
Me.cbxFirma = ""
Me.cbxGewerk = ""
'Me.Requery
DoCmd.Requery
DoCmd.GoToControl "P_ID"
DoCmd.FindRecord PID2, , , , , , True
End Sub
Hallo Paul,
Zunächst mal gibt ein Kombi immer den ganzen Feldinhalt der
ausgewählten Spalte zurück,- da braucht es kein LIKE (Wie)
und das ganze Joker-Geraffel, ein einfaches "=" genügt.
Die Kriterien für Firma und Gewerk sind vermutlich in der
Abfrage fest hintelegt. Wenn du nun den SQL-String der
Abfrage änderst, überschreibst du diese Kriterien. die müssen
also wieder rein (oder gleich rauslassen)
(Luftcode)
strSQL = "SELECT * FROM tbl_Belege " & _
"WHERE Firma = [Forms]![frm_Projekt]![cbxFirma] " & _
" AND Gewerk = [Forms]![frm_Projekt]![cbxGewerk] " &
" AND Typ_Nr IN(" & strCriteria & ")"
gruss ekkehard
Hi Ekkehard,
vielen Dank, könnte dich "knutschen" :)
Musste erstmals noch bei deinem Code den & _ in der zweiten Zeile setzen, aber soweit reichen meine Kenntnisse.
Das "Joker-Geraffel" war angedacht Wie "*" um wieder Alle Datensätze anzuzeigen, bzw. falls ich nur ein Kriterium abfragen will, vom Rest alles angezeigt wird.
Bei Wie "*" bekomme ich, da ich jeweils die X_Nr abfrage, auch mehrfache Werte z.B. 1,11,21... überall wo eine 1(Zahl) drin ist, hierfür habe ich auch noch keine Lösung :'(
Die PID Funktion benötige ich auch, da es mehre Projekt gibt und ich wieder zum aktuellem Projekt kommen muss.
Wie könnte ich das hinbekommen?
Könntest mich nochmal glücklich machen und mir viel Zeit sparen, vielen Dank im Voraus.
Beste Grüße Paul
strSQL = "SELECT * FROM tbl_Belege " & _
"WHERE F_Nr = [Forms]![frm_Projekt]![cbxFirma] " & _
" AND G_Nr = [Forms]![frm_Projekt]![cbxGewerk] " & _
" AND Typ_Nr IN(" & strCriteria & ")"
Debug.Print strSQL
' Anwenden der neuen SQL-Anweisung auf die Abfrage
qdf.SQL = strSQL
'Öffnender Abfrage
PID2 = Me!P_ID
DoCmd.Requery
DoCmd.GoToControl "P_ID"
DoCmd.FindRecord PID2, , , , , , True
Hallo!
strSQL = "SELECT * FROM tbl_Belege " & _
"WHERE F_Nr = [Forms]![frm_Projekt]![cbxFirma] " & _
" AND G_Nr = [Forms]![frm_Projekt]![cbxGewerk] " & _
" AND Typ_Nr IN(" & strCriteria & ")"In diesem Code mischt du einen dynamisch generierten SQL-Filterausdruck (strCriteria) mit einem direkten Zugriff auf Formular-Steuerelemente.
In Zusammenhang mit
ZitatDas "Joker-Geraffel" war angedacht Wie "*" um wieder Alle Datensätze anzuzeigen, bzw. falls ich nur ein Kriterium abfragen will, vom Rest alles angezeigt wird.
schlage ich vor, dass du nur einen dynamisch zusammengesetzte Filterausdruck verwendest, dann kannst du die Filterbedingungen weg lassen, wenn in cbxFirma oder cbxGewerk nichts ausgewählt ist.
Prinzip
dim FilterString as String
dim SqlText as String
with [Forms]![frm_Projekt] ' oder Me falls [Forms]![frm_Projekt] das Formular von diesem Code ist
if !cbxFirma.Value > 0 then
FilterString = "F_Nr = " & !cbxFirma.Value
end if
if !cbxGewerk.Value > 0 then
if len(FilterString) > 0 then
FilterString = FilterString & " AND "
end if
FilterString = FilterString & "G_Nr = " & !cbxGewerk.Value
end if
if len(strCriteria) > 0 then
if len(FilterString) > 0 then
FilterString = FilterString & " AND "
end if
FilterString = FilterString & "Typ_Nr IN (" & strCriteria & ")"
end if
strSQL = "SELECT * FROM tbl_Belege"
if len(FilterString) then
strSQL = strSQL & " where " & FilterString
end if
qdf.SQL = strSQL
end withBei Änderung von cbxFirma oder cbxGewerk muss die Abfrage neu geschrieben werden.
Alternative:
Statt die Abfrage des Unterformulars zu ändern, die Filterbedingungen an das Unterformular weitergeben (Filter-Eigenschaft des Formulars verwenden) und dafür eine ungefilterte Datenquelle einsetzen.
Zum Setzen von Filterwerten für eine Formular sollten einige Beispiele zu finden sein.
Gruß
Josef
Hallo,
@Josef ZitatIn diesem Code mischt du einen dynamisch generierten SQL-Filterausdruck (strCriteria) mit einem direkten Zugriff auf Formular-Steuerelemente.
Mein Fehler :( ; - frag mich nicht, wie ich das verbrochen habe.
@PaulJosefs Vorschlag mit einem Filter ist auf jeden Fall dynamischer,
und zum Anzeigen aller DS musst du den Filter nur löschen.
Moin, Moin
Erstmal Danke, bin wirklich positiv überrascht, wie schnell und freundlich in diesem Forum reagiert wird!
Melde mich erst heute, da ich gestern den ganzen Tag versucht habe den Code von Josef einzubauen, musste weinend abbrechen, da ich schlicht und ergreifend zu "doof" bin diesen irgendwie hinzubekommen :'(
Dynamisch kenne ich nur aus meinem Statik Programm und direkten Zugriff von irgendwelchen Polizeieinsätzen ;)
War vorher mit "Excel" unterwegs, da gibt es eine wunderbare Funktion "Datenschnitt", eine oder mehrere Felder auswählen, anschauen/bearbeiten, Filter löschen und gut iss :) das wäre das was ich brauche.
Hatte jedoch keine Ahnung wie schwierig das ist in ACCESS umzusetzen, jedoch habe ich jetzt "Lunte" geschnuppert, was hier alles möglich wäre/ist, wenn man weiß wies geht (gilt ja für viele Dinge :) )
Prinzip, eine Firma kann mehrere Gewerke ausführen, dazu gibt es Beleg mit verschiedenen Typen.
Ein Gewerk kann von mehreren Firmen ausgeführt werden, meine Idee mit der Abfrage war, das ich aus der aktuell gefilterte Anzeige im Formular sofort einen Bericht (Belegliste...) abrufen kann.
[code]
Private Sub Befehl120_Click()
'Deklarieren von Variablen
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim varItem As Variant
Dim strCriteria As String
Dim strSQL As String
'Abrufen der Datenbank und der gespeicherten Abfrage
Set db = CurrentDb()
Set qdf = db.QueryDefs("qry_Belege")
' Durchlaufen der ausgewählten Elemente im Listenfeld und Erstellen einer Textzeichenfolge
For Each varItem In Me!lbxBelegtyp.ItemsSelected
strCriteria = strCriteria & "," & Me!lbxBelegtyp.ItemData(varItem) & ""
Next varItem
'Überprüfen Sie, ob der Benutzer etwas ausgewählt hat
If Len(strCriteria) = 0 Then
MsgBox "Es wurde kein Belegtyp ausgewählt" _
, vbExclamation, "Pauli!"
Exit Sub
End If
'Entfernen des führenden Kommas aus der Zeichenfolge
strCriteria = Right(strCriteria, Len(strCriteria) - 1)
Dim FilterString As String
Dim SqlText As String
With [Forms]![frmProjekt] ' oder Me falls [Forms]![frmProjekt] das Formular von diesem Code ist
If !cbxFirma.Value > 0 Then
FilterString = "F_Nr = " & !cbxFirma.Value
End If
If !cbxGewerk.Value > 0 Then
If Len(FilterString) > 0 Then
FilterString = FilterString & " AND "
End If
FilterString = FilterString & "G_Nr = " & !cbxGewerk.Value
End If
If Len(strCriteria) > 0 Then
If Len(FilterString) > 0 Then
FilterString = FilterString & " AND "
End If
FilterString = FilterString & "Typ_Nr IN (" & strCriteria & ")"
End If
strSQL = "SELECT * FROM tbl_Belege"
If Len(FilterString) Then
strSQL = strSQL & " where " & FilterString
End If
Debug.Print strSQL
qdf.SQL = strSQL
End With
Me.Requery
End Sub
Private Sub Befehl98_Click()
'Deklarieren von Variablen
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim varItem As Variant
Dim strCriteria As String
Dim strSQL As String
'Abrufen der Datenbank und der gespeicherten Abfrage
Set db = CurrentDb()
Set qdf = db.QueryDefs("qry_Belege")
' Durchlaufen der ausgewählten Elemente im Listenfeld und Erstellen einer Textzeichenfolge
For Each varItem In Me!lbxBelegtyp.ItemsSelected
strCriteria = strCriteria & "," & Me!lbxBelegtyp.ItemData(varItem) & ""
Next varItem
'Überprüfen Sie, ob der Benutzer etwas ausgewählt hat
If Len(strCriteria) = 0 Then
MsgBox "Es wurde kein Belegtyp ausgewählt" _
, vbExclamation, "Pauli!"
Exit Sub
End If
'Entfernen des führenden Kommas aus der Zeichenfolge
strCriteria = Right(strCriteria, Len(strCriteria) - 1)
'Erstellen der newSQL-Anweisung mit der Zeichenfolge
strSQL = "SELECT * FROM tbl_Belege " & _
"WHERE F_Nr = [Forms]![frmProjekt]![cbxFirma] " & _
" AND G_Nr = [Forms]![frmProjekt]![cbxGewerk] " & _
" AND Typ_Nr IN(" & strCriteria & ")"
Debug.Print strSQL
' Anwenden der neuen SQL-Anweisung auf die Abfrage
qdf.SQL = strSQL
'Öffnender Abfrage
PID2 = Me!P_ID 'Projektnummer zwischenspeicher
DoCmd.Requery
DoCmd.GoToControl "P_ID"
DoCmd.FindRecord PID2, , , , , , True
'Leeren Sie den Speicher
'Set db = Nothing
'Set qdf = Nothing
End Sub
' 'Wie "*" & [Formulare]![frmProjekt]![qryBelegtyp] & "*"
Private Sub cbxBelegtyp_AfterUpdate()
PID2 = Me!P_ID
DoCmd.Requery
DoCmd.GoToControl "P_ID"
DoCmd.FindRecord PID2, , , , , , True
End Sub
Private Sub cbxBelegtyp_DblClick(Cancel As Integer)
PID2 = Me!P_ID
Me.lbxBelegtyp = ""
DoCmd.Requery
DoCmd.GoToControl "P_ID"
DoCmd.FindRecord PID2, , , , , , True
End Sub
Private Sub cbxFirma_AfterUpdate()
Dim FilterString As String
Dim SqlText As String
With [Forms]![frmProjekt] ' oder Me falls [Forms]![frmProjekt] das Formular von diesem Code ist
If !cbxFirma.Value > 0 Then
FilterString = "F_Nr = " & !cbxFirma.Value
End If
strSQL = "SELECT * FROM tbl_Belege"
If Len(FilterString) Then
strSQL = strSQL & " where " & FilterString
End If
Debug.Print strSQL
qdf.SQL = strSQL
End With
Me.Requery
' PID2 = Me!P_ID
' DoCmd.Requery
' DoCmd.GoToControl "P_ID"
' DoCmd.FindRecord PID2, , , , , , True
End Sub
Private Sub cbxFirma_DblClick(Cancel As Integer)
PID2 = Me!P_ID
Me.lbxBelegtyp = ""
Me.cbxFirma = ""
Me.cbxGewerk = ""
DoCmd.Requery
DoCmd.GoToControl "P_ID"
DoCmd.FindRecord PID2, , , , , , True
End Sub
Private Sub cbxGewerk_AfterUpdate()
PID2 = Me!P_ID
DoCmd.Requery
DoCmd.GoToControl "P_ID"
DoCmd.FindRecord PID2, , , , , , True
End Sub
Private Sub cbxGewerk_DblClick(Cancel As Integer)
PID2 = Me!P_ID
Me.cbxGewerk = ""
'Me.Requery
DoCmd.Requery
DoCmd.GoToControl "P_ID"
DoCmd.FindRecord PID2, , , , , , True
End Sub
@ Ekkehard und Josef, evtl. könnt ihr mir nochmal unter die Arme greifen?
Anbei nochmal mein aktueller Code.
Mein Dank wir euch ewig nachschleichen.
Beste Grüße Paul
Hallo!
Vorab ein Tipp: wenn du den Code in mehre Prozeduren aufteilst, wird er meiner Meinung nach verständlicher.
Ich lasse einmal den Inhalt deines Filter-Codes (fast) gleich (den Rest habe ich nicht übernommen) und strukturiere ihn nur etwas um und ergänze ihn mit Kommentaren.
Private Sub Befehl120_Click()
' Name des CommandButtons ist ursuper, da weiß man gleich welcher das ist. ;)
' Prüfung, ob etwas ausgewählt wurde, bereits vor dem Erstellen des Filters durchführen
' .. falls das überhaupt notwendig ist (eventuell diese Prüfung in die Prozedur ApplyFilter verschieben)
If Me!lbxBelegtyp.ItemsSelected.Count = 0 Then
MsgBox "Es wurde kein Belegtyp ausgewählt" _
, vbExclamation, "Pauli!"
Exit Sub
End If
ApplyFilter
End Sub
Private Sub ApplyFilter()
' Diese Prozedur überall dort aufrufen, wo Filterwerte geändert werden
'Deklarieren von Variablen
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim strSQL As String
'Abrufen der Datenbank und der gespeicherten Abfrage
Set db = CurrentDb()
Set qdf = db.QueryDefs("qry_Belege")
' FilterString holen:
Dim FilterString As String
FilterString = CreateFilterString()
' SQL-Text zusammenstellen:
Dim SqlText As String
strSQL = "SELECT * FROM tbl_Belege"
If Len(FilterString) Then
strSQL = strSQL & " where " & FilterString
End If
Debug.Print strSQL
qdf.SQL = strSQL
Me.Requery
End Sub
Private Function CreateFilterString() As String
Dim FilterString As String
Dim BelegtypFilterString As String
With Me
If !cbxFirma.Value > 0 Then
FilterString = "F_Nr = " & !cbxFirma.Value
End If
If !cbxGewerk.Value > 0 Then
If Len(FilterString) > 0 Then
FilterString = FilterString & " AND "
End If
FilterString = FilterString & "G_Nr = " & !cbxGewerk.Value
End If
BelegtypFilterString = CreateBelegtypFilterString()
If Len(BelegtypFilterString) > 0 Then
If Len(FilterString) > 0 Then
FilterString = FilterString & " AND "
End If
FilterString = FilterString & BelegtypFilterString
End If
End With
CreateFilterString = FilterString
End Function
Private Function CreateBelegtypFilterString() As String
Dim varItem As Variant
Dim strCriteria As String
' Durchlaufen der ausgewählten Elemente im Listenfeld und Erstellen einer Textzeichenfolge
For Each varItem In Me!lbxBelegtyp.ItemsSelected
strCriteria = strCriteria & "," & Me!lbxBelegtyp.ItemData(varItem) & ""
Next varItem
'Überprüfen Sie, ob der Benutzer etwas ausgewählt hat
If Len(strCriteria) = 0 Then
MsgBox "Es wurde kein Belegtyp ausgewählt" _
, vbExclamation, "Pauli!"
Exit Function
End If
'Entfernen des führenden Kommas aus der Zeichenfolge
strCriteria = Right(strCriteria, Len(strCriteria) - 1)
CreateBelegtypFilterString = "Typ_Nr IN (" & strCriteria & ")"
End Function
Gruß
Josef
Hi Josef, Danke für die schnelle Antwort.
Ich check es einfach nicht :'(
Habe deine Code eingebaut, der Stoppt nach Private Sub ApplyFilter() bei qdf.SQL = strSQL, Anzeige im Direktbereich SELECT * FROM tbl_Belege where F_Nr = 33 AND G_Nr = AND Typ_Nr IN (1)
Komme da nicht weiter zu den nächsten Funktionen Private Function CreateFilterString() As String
Teile das ganze gerne auf, aber wie?
' .. falls das überhaupt notwendig ist (eventuell diese Prüfung in die Prozedur ApplyFilter verschieben) die Abfrage benötige ich eigentlich nicht, wenn ich Firma oder/und Gewerk gewählt habe sollten eigentlich dementsprechend alle Belege erscheinen.
Vielen Dank wenn du mir nochmal auf die Sprünge helfen könntest.
Name des CommandButtons ist ursuper, da weiß man gleich welcher das ist, da hast Du recht, habe schon soviel Kopien der Testdatenbanken auf dem Computer, das meine Festplatte fast voll ist ;), wenn ich mal einen Stand habe der funktioniert, werde ich die Befehle gut Beschriften. Möchte eh immer lieber "After Update" verwenden...
Beste Grüße Paul
Vielleicht führst du statt
Private Sub Befehl120_Click()diese Prozedur aus:
Private Sub Befehl98_Click()
...
strSQL = "SELECT * FROM tbl_Belege " & _
"WHERE F_Nr = [Forms]![frmProjekt]![cbxFirma] " & _
" AND G_Nr = [Forms]![frmProjekt]![cbxGewerk] " & _
" AND Typ_Nr IN(" & strCriteria & ")"
Debug.Print strSQL
... Da fehlt die Prüfung ob in cbxFirma ein Wert enthalten ist.
Zitatwenn ich mal einen Stand habe der funktioniert, werde ich die Befehle gut Beschriften.
Möglicherweise würdest du einen funktionierenden Stand früher schaffen, wenn der Code übersichtlich wäre - und da gehören verständliche Steuerelementnamen dazu.
Gruß
Josef
Servus Josef,
dein Code funktioniert vom "Feinsten" 8)
Wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht :(
Die qry_Belege wird richtig gefiltert :) aber das Unterformular wird nicht aktualisiert, wenn ich das Formular Projekt schließe und wieder öffne wird es perfekt angezeigt.
Kannst du mir bitte noch mitteilen was ich als Datenquelle für das Unterformular angeben muss, bzw. gibt es einen Requery Befehl der das richtig stellt?
Befehl198 war noch für den Code von Ekkehard.
Dann wäre mein Wochenende gerettet und Du der Retter ;)
Beste Grüße Paul
Servus Josef und Ekkehard,
nochmal vielen Dank, habe das jetzt irgendwie hinbekommen.
Noch eine Frage, obwohl ich damit Leben könnte, gibt es für die Funktion PID PID2 = Me!P_ID
DoCmd.Requery
DoCmd.GoToControl "P_ID"
DoCmd.FindRecord PID2, , , , , , True irgend was anderes, damit ich im Hauptformular im aktuellem Projekt bleibe?
Beste Grüße Paul
DoCmd.Requery
DoCmd.GoToControl "P_ID"Das sind zwei Aktionen zum Verlassen des aktuellen Datensatzes. Was könnte einem da einfallen?
Hi Eberhard,
geht so nicht.
Hauptformular besteht aus mehreren Projekten, wenn ich Requery anleiere ohne mir vorher die Projektnummer (P_Nr) zu merken, wird das erste Projekt geöffnet und nicht das in dem ich gearbeitet habe.
Schönen Sonntag, Gruß Paul
Hallo!
Das nutze ich:
Prinzip:
1. ID wie in deinem Code merken
2. Requery
3. Im RecordsetClone zum gewünschten Datensatz gehen
4. Bookmarks gleichsetzen
Der Aufruf würde bei mir so aussehen:
FormTools.RequeryData Me, "P_ID"
Code siehe Klasse FormTools (https://github.com/AccessCodeLib/AccessCodeLib/blob/master/form/FormTools.cls)
Gruß
Josef
Hallo Josef,
Nettes Tool.
Ich hätte da noch eine Function, die da gut reinpassen würde.
Kannst du sicher noch verbessern (den Namen wahrscheinlich zuerst ;) ),
- du bist mir da ja um einige Schritte voraus.
Public Function NotInListControls( _
sTableName As String, _
sFieldName As String, _
vNewData As Variant) As Integer
Dim rst As DAO.Recordset
If MsgBox(Prompt:="Möchten sie den Eintrag übernehmen?", _
Buttons:=vbOKCancel, _
Title:="Eintrag noch nicht vorhanden ...") = vbOK Then
Set rst = CurrentDbC.OpenRecordset(sTableName)
With rst
.AddNew
.FIELDS(sFieldName) = vNewData
.Update
End With
NotInListControls = acDataErrAdded
Else
NotInListControls = acDataErrContinue
End If
rst.Close
Set rst = Nothing
End FunctionAufruf
Private Sub EinKombi_NotInList(NewData As String, Response As Integer)
Response = NotInListControls("Tabelle", "Feld", NewData)
End Sub
gruss ekkehard
Servus meine zwei "Retter"
@ Josef
Zitat von: Josef P. am Januar 15, 2023, 17:03:02Der Aufruf würde bei mir so aussehen:
FormTools.RequeryData Me, "P_ID"
Wenn ich deinen Code aufrufe, passiert nichts?
Muss ich bei Me noch irgendetwas angeben?
Bei meinem PID Aufruf, ruckelt die ganze Sache, deshalb würde ich gerne deine Funktion benüten.
Gruß Paul
Hallo!
Wenn ich deinen Code aufrufe, passiert nichts? Ich hätte erwartet, dass eine Fehlermeldung kommt. ;)
Der gezeigte Aufruf ist nur als Beispiel zu sehen, wie man das gekapselt nutzen könnte.
Der funktioniert so nur, wenn die FormTools-Klasse über den Dateiimport importiert wird (oder mit dem ImportWizard).
Du kannst den Code aber auch einfach in ein Standardmodul kopieren und verwenden.
Muss ich bei Me noch irgendetwas angeben?Der erste Parameter ist die Refernz zum Formular, das aktualisiert werden soll. Me wäre das formular, in dem der Code steht.
Du könntest auch schreiben:
FormTools.RequeryData Me.DeinSubFormControl, "P_ID"falls du ein Unterformular aktualisieren willst.
Wenn du eine Beispiel-DB bereitstellst, baue ich dir das gerne ein.
Gruß
Josef
Servus Josef,
für PID habe ich was gefunden, das wenigstens nicht so ruckelt.
Meine Euphorie ist mittlerweile weit Unten :'(
Hab noch einige "Schmerzen" mit meiner begonnenen Datenbank und der Weg ist noch weit, scheitere schon an vielen Kleinigkeiten.
Habe bereits ein schlechtes Gewissen mit meiner Unkenntnis.
Wenn du aber willst, sende ich dir meinen Stand der Dinge, und beschreibe mein ganzen Schmerzen.
Bin aber nicht böse wenn du keine Zeit hast, dann werde ich die Sache erstmal so lassen.
Beste Grüß Paul