Hallo Access Profies.
Ich habe eine Frage zum Endlosformular und Datensätze.
Ich habe eine Abfrage erstellt und mit einem Formular verbunden. Wenn ich das Endlos Formular starte bekomme ich 6 Datensätze angezeigt. So weit alles gut und richtig.
Nun wollte ich aber das über VBA alles machen und scheitere an folgenden Punkt - Vielleicht sehe ich vor lauter Bäumen den Wald nicht mehr.
Hier mein Code für den Event "Formular beim Laden"
**********************
Private Sub Form_Load()
Dim strSQL As String
Dim rs As DAO.Recordset
strSQL = "SELECT Activities.Id, Activities.Artikelnummer, Activities.Artikelbez, Activities.z_CustomerName, Activities.Id_assembly, Activities.LieferWunsch," _
& " Activities.Lieferdatum From Activities WHERE ((Activities.LieferWunsch) < (Date()-5))"
Set rs = CurrentDb.OpenRecordset(strSQL)
If rs.RecordCount > 0 Then
Do While Not rs.EOF
Me.ArtikelNr = rs(1) 'meine Textfelder
Me.ArtikelBz = rs(2) 'meine Textfelder
Me.Kunde = rs(3) 'meine Textfelder
Me.Maschine = rs(4) 'meine Textfelder
Me.LieferW = rs(5) 'meine Textfelder
Me.Lieferdate = rs(6) 'meine Textfelder
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
End If
End Sub
*********************************
Alles funktioniert so weit aber ich bekomme nur einen Datensatz anstatt 6 - und zwar immer den letzen, ist ja logisch beim Loop und MoveNext.
Wie kann ich alle 6 Datensätze angezeigt bekommen (wie wenn ich es über ein "Standard Abfrage" einrichte).
Ich habe auch die Abfrage nicht mehr dem Formular zugewiesen.
Übersehe ich etwas?
Was mache ich falsch?
Bitte um Hilfe
Danke :)
Das ist einfach so mit Endlosformularen.
Hallo,
warum gehst Du hier den deutlich komplizierteren Weg über ein Recorset das Formular zu füllen ?
Was gefällt Dir nicht an dem gebundenen Formular ?
Der Programmieraufwand ist um ein vielfaches höher als mit einem gebunden Formular. Die Daten müssen ja bei Änderung auch wieder zurückgeschrieben werden. Was auch Aufwand ist.
Ehrlich gesagt, weiß ich auch gar nicht wie das geht ein Endlosformular so zu füllen. Ich habe auch gerade Zweifel, ob das mit einem Endlosform überhaupt so geht.
Nachtrag:
Habe gerade den Beitrag von Lachtaube gelesen. Es geht also nicht, wie ich mir dachte.
Ein gebundenes Formular hat dieses Problem erst gar nicht.
Hallo Lachtaube
hallo MzKIMu
das habe ich vermutet. Ich dachte ich komm ohne dem gebundenen Formular aus.
Na dann muss ich das wohl akzeptieren das es nicht geht. Ein Versuch war es wert.
Vielen dank somit brauche ich mich damit nicht auf zu halten um eine Lösung zu finden.
Auch ein großer Wert.
Danke ;)
Hallo,
ZitatIch dachte ich komm ohne dem gebundenen Formular aus.
Na dann muss ich das wohl akzeptieren das es nicht geht. Ein Versuch war es wert.
Es würde mich jetzt doch mal interessieren, warum Du um ein gebundenes Formular herumkommen willst. Nichts ist einfacher als ein gebundenes Formular.
Ich glaube Du unterschätzt auch den Aufwand der nötig ist mit ungebundenen Formularen zu arbeiten erheblich. Die bieten meist keine Vorteile, im Gegenteil.
Hallo,
Ungeachtet der Vorteile gebundener Formulare, geht das schon; - so zu
sagen "Late Binding" (ungetestet).
Set rs = CurrentDb.OpenRecordset(strSQL)
If Not rs.EOF Then 'ist IMO sicherer als .RecordCount
Me.ArtikelNr.ControlSource = rs(1).Name 'meine Textfelder
Me.ArtikelBz.ControlSource = rs(2).Name 'meine Textfelder
Me.Kunde.ControlSource = rs(3).Name 'meine Textfelder
Me.Maschine.ControlSource = rs(4).Name 'meine Textfelder
Me.LieferW.ControlSource = rs(5).Name 'meine Textfelder
Me.Lieferdate.ControlSource = rs(6).Name 'meine Textfelder
Me.RecordSource = strSQL
rs.Close
Set rs = Nothing
gruss ekkehard
Ekkehard, man kann die Fragestellung natürlich verschieden interpretieren. :)
Und ja, man kann auch ein geöffnetes Recordset einem (Endlos-)Formular zuweisen. Nur ein ungebundenes Endlosformular - so habe ich die Anforderung (vielleicht miss)verstanden, gibt es nicht.
PS: Um Feldnamen eines Recordsets auszulesen, muss dieses keine Datensätze enthalten.
[edit]da war ein Wort im Eifer des Schreibgefechts verloren gegangen[/edit]
Zitat von: Schakal am November 16, 2017, 16:07:51Na dann muss ich das wohl akzeptieren das es nicht geht. Ein Versuch war es wert.
Die Frage ist hier:
Warum möchtest du ein ungebundenes Formular?
Ein komplett ungebundenes Endlosform ist nicht möglich, aber vielleicht lässt sich was immer du erreichen möchtest auch auf anderem Weg erreichen.
Hallo,
Nochmal vorweg, - ungeachtet der Vorteile gebundener Formulare ...
ZitatEin komplett ungebundenes Endlosform ist nicht möglich,
Hm, vielleicht habe ich euch falsch verstanden, aber bei mir (A2010) geht das.
Ein
ungebundenes Form (alle Steuerelementinhalte leer) wird bei mir mit einem
leeren "DS" angezeigt.
Mit dem gezeigten Code "Beim Laden" werden alle DS des RS angezeigt. Es lassen
sich sogar DS anfügen.
gruss ekkehard
Hallo,
der gezeigte Code macht aus dem ungebundenen Form ein gebundenes:
--Datenherkunft wird gesetzt.
--Steuerelementinhalte werden auf die Datenherkunft-Felder gesetzt.
Hallo,
um in die gleiche Kerbe zu hauen: ;D
Der gezeigte Code macht sonst nix wie ein gebundenes Formular, da ist nix mehr ungebunden. Du bindest halt per VBA. Daher kannst Du auch neue DS anlegen und bestehende DS ändern. Dass es gebunden ist, erkennst Du auch daran, dass nicht extra gespeichert werden muss. Was bei einem ungebunden Formular notwendig wäre.
Da kannst Du Dir den Code auch sparen und das Formular gleich gebunden erstellen.
Ein ungebundenes Formular kann nicht endlos sein.
Hallo Franz, hallo Klaus,
Ist mir alles klar, deshalb sprach ich ja
Zitat- so zu sagen "Late Binding"
Und
ZitatDu bindest halt per VBA
Was ja vom TS so gewollt war
ZitatNun wollte ich aber das über VBA alles machen
Das ich das auch für überflüssig halte habe ich zweimal erwähnt
Zitatungeachtet der Vorteile gebundener Formulare
gruss ekkehard
edit:
Ich kann's mir nicht verkneifen ;)
ZitatEin ungebundenes Formular kann nicht endlos sein.
Doch, es zeigt nur nix an.