PDA

Vollständige Version anzeigen : .txt einfügen


Gernot
09.10.2017, 17:17
Hi,
hab eine .txt , aber das einlesen in eine tab will nicht gelingen.

ich hab zunächst die .txt importiert um eine neue tab zu erstellen. Dann geleert und will jetzt anfügen
105533
105534
105535

wenn es allerdings per vba gehen soll, bleibt die Tabelle leer
CurrentDb.Execute ("DELETE *FROM StKN")
DoCmd.TransferText acImportDelim, "StKN Importspezifikation", "StKN", "D:VerlagKundenImportStKN.txt", True

und ich weiß nicht warum.

lg
Gernot

hcscherzer
09.10.2017, 18:36
Wenn es interaktiv - über das Menü "Externe Daten" - klappt und per VBA nicht ... dann würde ich stark vermuten, dass die Importspezifikation nicht in Ordnung ist.

Gernot
09.10.2017, 19:08
ich auch :-)

aber was bloß. Kann man da bei 3 Parametern so viel falsch machen?
ich hab das zu letzten mal vor ~10 Jahren gebraucht, kann mich aber erinnern, dass es da genauso Troubles gegeben hat

markusxy
09.10.2017, 19:37
Setz mal zum Testen den HasFieldNames Parameter auf False, falls es keine Überschriften gibt.

Paulinchen
10.10.2017, 06:11
Ha! Das war der Grund.
Eigenartig ist nur folgendes: ich hab das von einer anderen DB übernommen, wo es problemlos funktioniert und es im txt-file auch keine Überschriften gibt.

Auf jeden Fall vielen Dank.

MisterBurns
10.10.2017, 08:07
Arbeitet hier jemand mit 2 verschiedenen Usernamen - oder versteh ich da was nicht?

Paulinchen
10.10.2017, 09:08
Ja! Ist eine komplizierte Geschichte, da in der Arbeit die mail adressen vor jahren geändert wurden und ich mich wo anders nicht mehr mit Paulinchen einloggen kann, da ich das PW nicht mehr weiß und die mailadresse zu m Ändern nicht mehr existiert. Daher in der Arbeit Paulinchen, überall sonst Gernot. Ich sags aber meist dazu. Gestern hab ichs vergessen. Sorry.

Paulinchen
10.10.2017, 09:14
... aber jetzt weiter zu einem nächsten Problem:
So ist der string von gestern eingebunden:
Private Sub Form_Open(Cancel As Integer)

DoCmd.GoToRecord , , acNewRec
Me.DatumAnmeldung = Date
Me.Titel.SetFocus
Me.Art = 1
Dim Vpfad As String
Vpfad = DLookup("Bez", "EigenTAB", "ID = 10")
strVerzeichnis = Vpfad & "KundenImport"

CurrentDb.Execute ("DELETE *FROM StKN_ImportTAB")
DoCmd.TransferText acImportDelim, "StKNi", "StKN_ImportTAB", strVerzeichnis & "StKN_Import.txt", False
Dim Ikunde As String
Dim Ibuch As Long
Dim Ianz As Long
Ikunde = DFirst("StKN", "StKN_ImportTAB")
Ibuch = DFirst("Buch", "StKN_ImportTAB")
Ianz = DFirst("Anzahlstk", "StKN_ImportTAB")

Dim rs As DAO.Recordset
Dim sea As String
sea = Ikunde
Set rs = CurrentDb.OpenRecordset("KundenQRY")
rs.FindFirst "[StKN]='" & sea & "'"
Me.AnRed.Visible = False
Me.Anrede = rs!Anrede
Me.Titel = rs!Titel
Me.Vorname = rs!Vorname
Me.Nachname = rs!Nachname
Me.eAddi = rs!eAddi
Me.Land = rs!Land
Me.PLZ = rs!PLZ
Me.Ort = rs!Ort
Me.Adresse = rs!Adresse
Me.Land = rs!Land
Me.LieferPLZ = rs!LieferPLZ
Me.LieferOrt = rs!LieferOrt
Me.Lieferadresse = rs!Lieferadresse
Me.StFeld = Ikunde
Me.StKN = rs!StKN
Me.Auftrag = Year(Date) & Format(Me.AutoKu, "000000")
Me.Rabatt = 3
Me.Position = 1
Me.Art = 1
Me.Newsletter = rs!Newsletter
Me.Buch = Ibuch
Me.AnzahlSTK = Ianz
Dim TG As Double
TG = DLookup("Gewicht", "BuchTAB", "AutoBu =" & [Buch])
Me.TransGew = TG * Me.AnzahlSTK
Dim ESu As Double
ESu = DLookup("Preis_je_Stueck", "BuchTAB", "AutoBu =" & [Buch])
Me.PreisOhnePorto = ESu * Me.AnzahlSTK
Me.Porto = DLookup("PortoPreis", "VersandQRY", "StkZahl <=" & [AnzahlSTK] & " AND VGewichtVon <=" & [TransGew] & " AND VGewichtBis >=" & [TransGew] & " AND LandKennung ='" & [Land] & "'")

Me.Restbestand = "noch auf Lager: " & DLookup("Bestand", "BuchTAB", "AutoBu =" & [Buch]) - Me.AnzahlSTK
Dim Farb As Single
Farb = DLookup("Bestand", "BuchTAB", "AutoBu =" & [Buch])
If Farb - Me.AnzahlSTK < 11 Then
Me.Restbestand.BackColor = 255
Me.Restbestand.ForeColor = 0
End If


rs.Close
Set rs = Nothing


End Sub

Damit lese ich den ersten DS ein, mit einem Button wir dann eine Aktion ausgeführt, geht auch. Aber wie komm ich dann zum nächsten DS in StKN_ImportTAB? Plumperwiese würde ich den ersten DS aus der Tabelle löschen und die Prozedur erneut ablaufen lassen, aber gehts auch eleganter?

lg
Paulinchen/Gernot

maikek
11.10.2017, 10:23
Moin,
ich denke, eine Abfrage über die gesamten Daten sollte auch möglich sein (statt der ganzen DLookups, DFirsts etc).
Ansonsten brauchst du eine Schleife über die Tabelle StKN_ImportTAB. Das funktioniert aber nur, wenn du die Daten in einer Tabelle ablegst, im Moment schreibst du sie ja scheinbar nur in ein ungebundenes Formular.
maike

Beaker s.a.
11.10.2017, 12:53
Hallo,

@Maike
Tabelle(n) hat er ja
CurrentDb.Execute ("DELETE *FROM StKN_ImportTAB")
DoCmd.TransferText acImportDelim, "StKNi", "StKN_ImportTAB", strVerzeichnis & "StKN_Import.txt", False
'und
Set rs = CurrentDb.OpenRecordset("KundenQRY")


Meine spontane Idee wäre, die .txt nur zu verknüpfen und einen RS auf diese
Tabelle als öffentliche Property zur Verfügung zu stellen.

gruss ekkehard

maikek
11.10.2017, 13:20
@Ekkehard
Tabellen aus denen etwas kommt gibt es, ich sehe aber nicht, ob die Werte dann gespeichert werden (Zuweisung an ungebundene? Formularfelder).
Die Aktion, die per Button ausgelöst wird, kann ja auch ein Druck oder eine Email sein ...
maike

Beaker s.a.
11.10.2017, 13:28
Hallo Maike,
, ob die Werte dann gespeichert werden
Das hat meine Zauberkugel hier gesehen
mit einem Button wir dann eine Aktion ausgeführt
gruss ekkehard

Paulinchen
11.10.2017, 13:44
Bin mit meinen Problemen schon viel weiter!
siehe Hier:http://www.ms-office-forum.net/forum/showthread.php?t=346534

maikek
11.10.2017, 14:30
Na toll.
Bitte mach in Zukunft für ein neues Problem einen neuen Thread auf - und zwar nur einen.
maike