Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Textmarken in Excel

Begonnen von Salvation, Juni 27, 2011, 08:44:21

⏪ vorheriges - nächstes ⏩

Salvation

Einmal das Modul:

Option Compare Database
Option Explicit

Public Function ExportDelim(
  Optional FName As String = "C:\Temp\Temp.csv", _
  Optional HasFieldNames As Boolean = True, _
  Optional Delim As String = ";", Optional Quote As String = """")

Dim C As Long, Tmp As String
Dim RS As DAO.Recordset, Fld As DAO.Field
  Set RS = DB.OpenRecordset(SQL, dbOpenSnapshot, dbForwardOnly)
  C = FreeFile
  Open FName For Output As #C
  If Not RS.EOF And HasFieldNames Then
    Tmp = ""
    For Each Fld In RS.Fields
      Tmp = Tmp & Delim & Quote & Fld.Name & Quote
    Next Fld
    Print #C, Mid(Tmp, Len(Delim) + 1)
  End If
'  Do While Not RS.EOF
'    Tmp = ""
'    For Each Fld In RS.Fields
'      Tmp = Tmp & Delim & Quote & Fld.Value & Quote
'    Next Fld
'    Print #C, Mid(Tmp, Len(Delim) + 1)
'    RS.MoveNext
'  Loop
  Close #C
 
Set RS = Nothing

End Function



Der Aufruf:

Option Compare Database

Private Sub Befehl8_Click()

    ExportDelim "C:\Dokumente und Einstellungen\Reaver\Desktop\Testumgebung - database\Test.CSV"

End Sub



Beim Ausführen bekomme ich nun folgende Meldung - ich hab beide Beispiele mal in getrennte Testumgebungen gelegt, damit da nichts zusammen gemischt wird:

Fehler beim Kompilieren
Erwartet: Bezeichner


Rot unterlegt ist dann folgender Teil:

Public Function ExportDelim(
  Optional FName As String = "C:\Temp\Temp.csv", _
  Optional HasFieldNames As Boolean = True, _
  Optional Delim As String = ";", Optional Quote As String = """")


Wobei der Curse - falls es auch was zu bedeuten haben könnte - am Ende der Zeile steht.



@ DF6GL:
Dein Beispiel funktiniert. Nun muss ich nur noch hinbekommen, dass die neuen Datensätze, welche ebenfalls exportiert werden, angehängt werden und nicht überschrieben. Enenso schön wäre es, wenn die erste Zeile, in der Vorname, Nachname und Eintrittsdatum weg sind, also nur die Daten es Datensatzes drin stehen. Gibt es da noch eine Möglichkeit?

DF6GL

Hallo,

bin gleich offline..  ;)



"Gibt es da noch eine Möglichkeit?"
Hab ich doch vorhin gesagt....

database

Hallo,

nur noch ein kleiner Einwurf:

Wenn du das .....

Public Function ExportDelim(
 Optional FName As String = "C:\Temp\Temp.csv", _
 Optional HasFieldNames As Boolean = True, _
 Optional Delim As String = ";", Optional Quote As String = """")


... mit dem oben gepostetem Code der Function ExportDelim verwendest, kracht es unweigerlich
weil dieses Zeile ...

Set RS = DB.OpenRecordset(SQL, dbOpenSnapshot, dbForwardOnly)

...die Übergabe des SQL-Strings erwartet hätte - der aber im Prozedurkopf rausgenommen wurde.

Um die Verwirrung nicht weiter zu schüren .... bleib' beim Beispiel von Franz!   ;)

Salvation

Hi,

@ DF6GL
Args, grade wohl ein wenig in den Hintergrund verdrängt. Danke, werds gleich mal ein wenig weiter versuchen.


@ database:
Okay, wieder was gelernt. Vielleicht mach ich mich da i-wann nochmal ran. Dennoch Danke für deine Hilfe :)

Salvation

database

Hi,

aber bitte, keine Ursache - gute Idee, schau dir das mal an wenn du leicht Zeit findest ;)

Salvation

Hi,

auf jeden Fall :) Habs ja nun schonmal auf meinem Rechner, da muss ich dann nur noch weiter machen :)

Aber erstmal mach ich das andere Beispiel weiter und da hänge ich auch gleich schon wieder.

Hab nun meinen Abruf erweitert, damit das Programm die Datensätze anhängt. Jedoch werden sie weiterhin überschrieben.

Wie folgt schaut es nun aus:

Private Sub Befehl8_Click()

Nr = FreeFile
Open "C:\Dokumente und Einstellungen\Reaver\Desktop\Testumgebung - DF6GL\Test.CSV" For Append As #1
     Print #Nr, "Hier kommt der Inhalt was geschrieben werden soll"
Close #Nr

ExportDelim "SELECT Vorname, Nachname, Einstelungsdatum FROM Daten where PersNr= '" & Me!PersNr & "'", "C:\Dokumente und Einstellungen\Reaver\Desktop\Testumgebung - DF6GL\Test.CSV"

End Sub


Salvation

DF6GL

Hallo,

aber doch kein Open vor dem Aufruf der Funktion..


IN der FUNKTION das "For output" durch "For Append" ersetzen.

Salvation

Hi,

args, okay, voll verpeilt. *schäm* Kappt nun aber.
Das einzige was nun noch stört, dass der Kopf mit Exportiert wird.

Vorname Nachname Einstelungsdatum
Autumn Hokee         01.07.2011
Vorname Nachname Einstelungsdatum
Embry Call         03.07.2011


Wenn dass nun noch raus ist, dann bin ich Wunschlos glücklich. Ich denke aber mal dass es was mit diesem Codeteil zu tun hat:

   For Each Fld In RS.Fields
      Tmp = Tmp & Delim & Quote & Fld.Name & Quote
    Next Fld


Bin mir da nur nicht so sicher.

Salvation



database

Hallo,

versuch mal

Optional HasFieldNames As Boolean = False

im Prozedurkopf

und hier ...   If Not RS.EOF And HasFieldNames = False Then

bzw. überhaupt weglassen der FieldNames-Geschichte in dieser Bedingung

ungetestet!

HTH

Salvation

Huhu,

angepasst, behält aber bei, dass die Kopfzeile mit exportiert wird.

Salvation

database

AHA...

dann nimm hier mal statt Fld.Name  Fld.Value

Tmp = Tmp & Delim & Quote & Fld.Name & Quote

... so wie es im auskommentierten Bereich ja richtig eingetragen war.

Salvation

Hi,

Ich habs angepasst und dabei wurde nun der Datensatz doppelt ausgegeben. Dafür hab ich dann diesen Teil:

  'Do While Not RS.EOF
  '  Tmp = ""
  '  For Each Fld In RS.Fields
  '    Tmp = Tmp & Delim & Quote & Fld.Value & Quote
  '  Next Fld
  '  Print #C, Mid(Tmp, Len(Delim) + 1)
  '  RS.MoveNext
  'Loop


auskommentiert. Das wurde ja schonmal auskommentiert, bei deinem Beispiel.

Nun funktioniert es so, wie ich es haben wollte.

Vielen lieben Dank.

Salvation

database

Hallo,

na schön, dass es leztendlich läuft.

Bei den vielen Variationen von auskommentiert und nicht auskommentiert ....

LG

Salvation

Hi,
irgendwann muss es ja mal funktionieren. Notfalls wäre ich nochmal alles durchgegangen und dann irgendwann sicherlich dahinter gekommen.
Vielen lieben Dank nochmal, vorallem für die Geduld.

Salvation