Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Datensatz nach Anzahl vervielfältigen

Frage Microsoft Microsoft Office

Mitglied: lsckronach

lsckronach (Level 1) - Jetzt verbinden

25.07.2012 um 14:47 Uhr, 2922 Aufrufe, 5 Kommentare

Hallo zus.,
ich habe folgende Rohdaten (Eingang) zu einer Bestellung. Diese müssen wenn die Anzahl des Datensatzes (z.B. 5 Stück) sind,
ausgelesen und einzeln in eine andere Datei (Lagerbuchung) geschrieben werden. Wie kann dies am einfachsten gelöst werden ? Die Datenstruktur ist immer gleich. Wenn diese Daten einzeln (Menge 1 Stück) zur Verfügung stehen werden Etiketten über einen Drucker erzeugt. Diesen Druckjob wollte ich über eine kleine Abfrage mit MS Access lösen. Die Abfrage greift schon, ich scheitere nur an der vervielfältigung der Datensätze.


Rohdaten (Eingang):

97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000010;70905001;580;Bezeichnung; 1,000;ST;HRL;20120723
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000020;90456976;190;Bezeichnung; 1,000;ST;3/12/10/06;20120723
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000030;34018;440;Bezeichnung; 5,000;ST;3/21/11/04;20120723

Zieldatei (Lagerbuchung):

97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000010;70905001;580;Bezeichnung; 1,000;ST;HRL;20120723
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000020;90456976;190;Bezeichnung; 1,000;ST;3/12/10/06;20120723
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000030;34018;440;Bezeichnung; 1,000;ST;3/21/11/04;20120723;1/5
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000030;34018;440;Bezeichnung; 1,000;ST;3/21/11/04;20120723;2/5
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000030;34018;440;Bezeichnung; 1,000;ST;3/21/11/04;20120723;3/5
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000030;34018;440;Bezeichnung; 1,000;ST;3/21/11/04;20120723;4/5
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000030;34018;440;Bezeichnung; 1,000;ST;3/21/11/04;20120723;5/5


Vielen Dank für eure Unterstützung

Gruß Dirk
Mitglied: NetWolf
25.07.2012 um 16:00 Uhr
Moin Moin,

ich gehe davon aus, dass die Informationen in Felder geschrieben werden. D.h. meine Annahme: Rohdaten ist eine Tabelle.

Baue in VBA ein Schleife, die die Rohdaten durchgeht.
Wenn dann bei Anzahl ein 5 steht sind folgende Schritte notwendig:

1- Anzahl merken
2- Datensatz ändern: Anzahl = 1 / Teilvon = 1/5
3- Datensatz kopieren
4- Schleife bis Anzahl-1 erreicht wird
4- kopierten Datensatz als neuen einfügen
5- neuen Datensatz ändern: Teilvon = 2/5
usw.
6- Ende Schleife bis Anzahl erreicht wird

Grüße aus Rostock
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: lsckronach
26.07.2012 um 07:29 Uhr
Moing Wolfgang,

diesen gedanken habe ich auch schon gefasst.

Ich habe ein Problem mit der Schleife wie der Code aussehen soll ?

In der Tab. Komm_tmp befinden sich die Rohdaten und sollen nach der Schleife
in die tblVerarbeitung eigefügt werden. Im Feld FMenge ist die Anzahl (Stück).
In der Tabelle "Faktura" (97806850) befindet sich der Datensatz welcher gedruckt bzw. geprüft werden soll.
Es sollen alle Felder nach der Prüfung aus der Tab. "Komm_tmp" in die "tblVerarbeitung" (einzeln) eingefügt werden.

Private Sub Befehl21_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim lngCounter As Long
Dim strSQL As String

Set db = CurrentDb()
Set rs = db.OpenRecordset("SELECT * FROM Komm_tmp")
If rs.RecordCount > 0 Then
rs.MoveFirst
Do Until rs.EOF
If Nz(rs.Fields("Fmenge"), "") <> "" Then

*da is der Wurm drin**

For lngCounter = 1 To FMenge

strSQL = "INSERT INTO tblVerarbeitung (Faktura)" _
& " values (Me!Faktura.Text)"

db.Execute strSQL, 128 'dbFailOnError ', 128 'dbFailOnError hinzugefuegt

Next lngCounter
Else
MsgBox "Fehler in Datensatz, keine Datensätze vorhanden"
End If
'Wenn die Sollkopienzahl in die neue Tabelle geschrieben wurde,
'weiter mit dem nächsten rs der Herkunftstabelle... und loop
rs.MoveNext
Loop
End If
Bitte warten ..
Mitglied: NetWolf
27.07.2012 um 20:50 Uhr
Hi,

du solltest auch 2 Tabellen/Abfragen öffnen, wenn du beide bearbeiten willst. Oder wenn du eine ID hast, kann man das auch per SQL lösen.

Also poste hier mal bitte die Struktur beider Tabellen mit Feldnamen und Feldtypen.

Grüße aus München
Wolfgang
(Networlf)
Bitte warten ..
Mitglied: lsckronach
31.07.2012 um 13:42 Uhr
Hallo Wolfgang,

es sind 3 Tabellen welche ich eingerichtet habe.

Tabelle "Faktura" (Textfelder)
Faktura / Datum

Tabelle "Import" (alles Textfelder, Menge als Integer)
Faktura / Name / Strasse / Land / PLZ / Ort / Kunde /Pos / Bezeichnung / Menge / Stellplatz /

97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000010;70905001;580;Bezeichnung; 1,000;ST;HRL;20120723
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000020;90456976;190;Bezeichnung; 1,000;ST;3/12/10/06;20120723
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000030;34018;440;Bezeichnung; 5,000;ST;3/21/11/04;20120723


Tabelle "Lager" (alles Textfelder, Menge als Integer)
Faktura / Name / Strasse / Land / PLZ / Ort / Kunde /Pos / Bezeichnung / Menge / Stellplatz /

97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000010;70905001;580;Bezeichnung; 1,000;ST;HRL;20120723
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000020;90456976;190;Bezeichnung; 1,000;ST;3/12/10/06;20120723
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000030;34018;440;Bezeichnung; 1,000;ST;3/21/11/04;20120723;1/5
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000030;34018;440;Bezeichnung; 1,000;ST;3/21/11/04;20120723;2/5
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000030;34018;440;Bezeichnung; 1,000;ST;3/21/11/04;20120723;3/5
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000030;34018;440;Bezeichnung; 1,000;ST;3/21/11/04;20120723;4/5
97806850;Name;;Strasse;Land;PLZ;Ort;000030001;000000030;34018;440;Bezeichnung; 1,000;ST;3/21/11/04;20120723;5/5

In der Tabelle "Fakura" befindet sich 1 Datensatz welcher aus der Tabelle "Import" vervielfältigt werden muss und in dieser Beziehung in der Tabelle "Lager" abgelegt werden. Wenn die Anzahl z.B. 5 Stück ist, so muss die 1/5 -5/5 mit ausgegeben werden.

Wenn Du mir die emailadresse gibts, kann ich Dir auch die Tabelle zusenden

Gruß Dirk
Bitte warten ..
Mitglied: lsckronach
10.08.2012 um 07:44 Uhr
Hallo Wolfgang,

bin schon etwas weiter, jetzt wird aber nur die erste bzw. aktuelle Zeile vervielfältigt.
Mit welchen Befehl wir die schleife mit allen Feldern durchsucht ?


Private Sub Befehl15_Click()

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Komm_Import_tmp")
For i = 1 To Me![Menge]
' With rst
With CurrentDb().OpenRecordset("tblVerarbeitung", dbOpenDynaset, dbAppendOnly)

.AddNew
!Faktura = Me![Faktura]
!Name1 = Me![Name1]
!Pos = Me![Pos]
!Mat = Me![Mat]
!Code = Me![Code]
!MatBez = Me![MatBez]
!Menge = 1
'...
.Update
.Close
End With
Next i

End Sub
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
C und C++
gelöst Anzahl der Buchstaben in einem String Element Array C++ (3)

Frage von Protected zum Thema C und C ...

Zusammenarbeit
Minimale Anzahl Admins? (6)

Frage von 1410640014 zum Thema Zusammenarbeit ...

Batch & Shell
gelöst 1 PDF entsprechend der Anzahl duplizieren (5)

Frage von Kalisser zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...