collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 52
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14037
  • stats Beiträge insgesamt: 67217
  • stats Themen insgesamt: 9066
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Datensätze automatisch generieren  (Gelesen 121 mal)

Offline dolpho

  • Newbie
  • Beiträge: 5
Datensätze automatisch generieren
« am: September 02, 2018, 18:16:06 »
Hallo zusammen,
da ich in meiner Datenbank mal wieder an meine eigenen Grenzen stoße suche ich Unterstützung.
Es git eine Tabelle:
ID,Art,Nr1,Nr2,Gewicht1,Datum1, Gewicht2, Datum2
und ich möchte z.B. in einem Formular eine Start-Nr1 und eine Start-Nr2 und eine Anzahl der Datensätze eingeben, damit sich die Tabelle automatisch füllt. Andere Daten werden erst später ergänzt.
Muss ich das über ein Recordset machen und welchen Loop muss ich programmieren, damit dieser sich die entsprechenden Startdaten aus dem Formular holt und dann selsbstständig weiter ergänzt?
Am Ende sollte eine Tabelle entstehen, in der nach der vorgegeben Startzahl 2200 die Datensätze mit 2201, 2202, 2203 usw. entstehen. Die ID steht dabei auf Autowert.
Kann mir jemand behilflich sein?
Gruß Dolpho
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7375
Re: Datensätze automatisch generieren
« Antwort #1 am: September 02, 2018, 18:23:09 »
Hallo,
es soll also nur in das Feld ID der Autowert eingetragen werden ?
Wie viele DS willst Du da anfügen ?
Zitat
Nr1,Nr2,Gewicht1,Datum1, Gewicht2, Datum2
was hat es mit diesen Feldern auf sich, warum gibt es die je 2 fach ?
Geht das eventuell wieter mit ...3, ...4 usw. ?
Gruß
Klaus
 

Offline dolpho

  • Newbie
  • Beiträge: 5
Re: Datensätze automatisch generieren
« Antwort #2 am: September 02, 2018, 18:31:33 »
Hallo,
für die Arbeit muss ich Gasflaschen verwalten und zweimal wiegen (Waareneingang und -Ausgang). Dabei erhalte ich Flaschen von z.B 5000 bis 5160 und einer zweiten angegeben Kontrollnummer 70600 bis 70760 also konkret vorgegeben. Bisher habe ich es mir iimmer in einer Exceltabelle engegeben und importiert. Irgenwann muss es aber auch mal einer machen, der nicht die Kenntnisse hat wie ich und dafür möchte ich ein Formular erstellen.
War das verständlich?
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7375
Re: Datensätze automatisch generieren
« Antwort #3 am: September 02, 2018, 18:36:07 »
Hallo,
Zitat
5000 bis 5160 und einer zweiten angegeben Kontrollnummer 70600 bis 70760
was ist die kleinste und größte vorkommende jeweilige Nummer?
Wie viele kann es maximal geben ?
Soll dann Nr1 und Nr2 gefüllt werden ?
Gruß
Klaus
 

Offline dolpho

  • Newbie
  • Beiträge: 5
Re: Datensätze automatisch generieren
« Antwort #4 am: September 02, 2018, 18:42:19 »
Hallo Klaus,
es kommen im Schnitt zwischen 10 und 320 Flaschen an.
Wenn sich zum Bsp. Datum1 füllt und die beiden Spalten mit den Nummern, kann ich mir den Rest dann schon allein ableiten. Die Flaschennummern liegen etwa im 7-stelligen Bereich.
Gruß Dolpho
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23413
Re: Datensätze automatisch generieren
« Antwort #5 am: September 02, 2018, 19:20:26 »
Hallo,

wenn ich das richtig interpretiere, sind Nr1 und Nr2 in ihrer fortlaufenden Folge miteinander korreliert.
(In solchem Fall benötigte man die Nr2 gar nicht, lediglich den "Offset" zwischen beiden Zahlen)

Welche Bedeutung hat "Art"?

Sinnvollerweise sollte ein eindeutiger Index auf Nr1 und Nr2 gelegt werden.


Erstell ein Formular mit 3 Textfeldern ("txtStartNR12, "txtStartNr2", "txtAnzahl") und einer Schaltfläche ("btnGenerieren").


Als Klick-Ereignisprozedur des Buttons steht folgender Code (ohne weiteres Error-Handling):


Private Sub btnGenerieren_Click()
Dim rs As Dao.Recordset, i As Long
Set rs = CurrentDb.OpenRecordset("select * from tblTabelle", dbOpenDynaset)
For i = 0 To Nz(Me!txtAnzahl, 0)

  rs.AddNew
  rs!Nr1 = Nz(Me!txtStartNr1, 0) + i
  rs!Nr2 = Nz(Me!txtStartNr2, 0) + i
  rs.Update

Next

rs.Close: Set rs = Nothing
End Sub


Statt einem Recordset ist auch eine SQL-Lösung möglich:

Private Sub btnGenerieren_Click()
Dim rs As Dao.Recordset, i As Long, db as Database
Set rs = CurrentDb.OpenRecordset("select * from tblTabelle", dbOpenDynaset)

Set db=Currentdb

For i = 0 To Nz(Me!txtAnzahl, 0)

  db.Execute "Insert into tblTabelle (Nr1, Nr2) Values (" & Nz(Me!txtStartNr1, 0) + i & "," & Nz(Me!txtStartNr2, 0) + i & ")"   ',dbFailonError

Next

Set db=Nothing

End Sub


Imho ist eine solche Vorbelegung nicht nötig.  Die Nr1 (und ggfls. Nr2) kann auch beim Erfassen der anderen Daten eingegeben werden.

Offline dolpho

  • Newbie
  • Beiträge: 5
Re: Datensätze automatisch generieren
« Antwort #6 am: September 02, 2018, 19:40:53 »
Hallo Franz,

vielen Dank für deine ausführliche Antwort. Das ist ein guter Ansatz den ich morgen probieren werde. Das Formular gibt es schon. Nunn muss ich es nur noch mit den Befehlen hinterlegen.
Das mit dem gemeinsamen eingeben ist keine Alternative, da die Fehlerquote zu hoch wäre. So erzeuge ich erst die Nummern, drucke dann Etiketten, die nur noch auf die RICHTIGE Flasche geklebt werden müssen.
Die Art sind mehrere Fremd_ID die ich nur zur Anschauung mit angegeben habe. Hätte ich alle angegeben, wäre es zu viel geworden. Pro Lieferung sind es immer die selben, also "pflücke" ich mir die aus dem Formular.
Das erfassen der Gewichte miit dem jeweiligen Datumsstempel erfolgt dann über Scanner
Vielen Dank!
Gruß Dolpho
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7375
Re: Datensätze automatisch generieren
« Antwort #7 am: September 02, 2018, 23:50:17 »
Hallo,
ich bin ja ein großer Freund von Hilfstabellen.
Erstelle eine Hilfstabelle (Name:Hilfszahlen) mit einer Spalte (Name:Zahl).
Darin 201 Datensätze von 0-200 (ja, ab 0) als Zahl. Die Tabelle ist mit Excel blitzschnell gemacht und in Access importiert. Wenn mal mehr Flaschen kommen, muss der Zahlenbereich erweitert werden. Oder am Besten gleich mit 500 oder mehr anlegen.
Dann folgenden Code für den Button:
Private Sub btnGenerieren_Click()
    CurrentDb.Execute "INSERT INTO Daten ( Nr1, Nr2 ) SELECT [zahl]+" & Me.txtStartNR1 & _
                      " , [zahl]+" & Me.txtStartNR2 & " FROM Hilfszahlen " & _
                      " WHERE [Zahl]<=" & Me.txtAnzahl, dbFailOnError
End Sub
Namen für die Formularfelder und Button sind von Franz übernommen.
« Letzte Änderung: September 03, 2018, 09:16:30 von MzKlMu »
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: dolpho

Offline dolpho

  • Newbie
  • Beiträge: 5
Re: Datensätze automatisch generieren
« Antwort #8 am: September 03, 2018, 14:15:50 »
Nochmal Hallo an alle,
vielen Dank Franz, das hat mir gut geholfen. Allerdings musste ich ein paar kleine Fehler meinerseits bearbeiten und in Deiner Formel scheint auch ein Fehler zu stecken, da er mir immer einen Datensatz zu viel angelegt hat. Das habe ich aber mit
"For i = 0 To Nz(Me!txtAnzahl - 1, 0)" beheben können.
@MzKlMu, danke für den Vorschlag mit der Hilfstabelle. Weniger ist in diesem Fall jedoch mehr, da irgendwann andere ohne mich damit arbeiten müssen und dann muss sie einfach funktionieren.

Gruß Lutz
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7375
Re: Datensätze automatisch generieren
« Antwort #9 am: September 03, 2018, 14:44:24 »
Hallo,
andere haben mit der Hifstabelle nichts zu tun. Die Hilfstabelle wird einmalig von Dir angelegt. Andere User kriegen davon nichts mit und sehen das auch nicht.
« Letzte Änderung: September 03, 2018, 14:58:40 von MzKlMu »
Gruß
Klaus