Re: Wie kann ich einen Daten mit Zeilenumbruch importieren - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Andreas (396 Beiträge) am Freitag, 21.März.2003, 01:19.
    Re: Wie kann ich einen Daten mit Zeilenumbruch importieren

      Direkt kannst Du Deine vbCrLf nicht importieren.

      Du benötigst eine Schema.ini-Datei für die csv-Definition (in MS Access), sofern Deine Ländereinstellungen von diesen Abweichen:

      [deintabellenname.csv]
      ColNameHeader = True
      CharacterSet = ANSI
      Format=Delimited(|)
      TextDelimiter = none
      MaxScanRows = 0
      DateTimeFormat=dd.mm.yyyy, hh:nn.ss
      DecimalSymbol=.

      Das Besondere hierbei ist das spezielle Datumsformat. Nur mit diesem Format kannst Du Datum und Zeit in baseportal importieren. Solltest Du mit der Schema.ini Probleme haben, dann gibts hier die richtige Antwort (Das Suchen nach dieser Lösung - speziell nach dem 'none' - hat mir fast einen Tag gekostet ;-( http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B241477

      Weiters wandle deine vbCrLf um in "\n" (also das NewLine in Perl). Das kannst Du zum Beispiel mit einer VB-Hilfsfunktion bewerkstelligen:

      Public Sub convcrlf(V As Variant) As Variant
      convcrlf = Null
      if isnull(V) then Exit Sub
      
      convcrlf = Replace(V, vbCrLf, "\n")
      End Sub

      Diese kannst Du dann in eine Abfrage packen und von dieser Abfrage dann die deintabellenname.csv erzeugen.
      Bewährt haben sich die oben angegebenen Steuerzeichen:
      Feldtrenner: |
      Texttrenner: Keines

      Dies erfordert jedoch, daß Du in keinem der Daten ein Pipe (|) enthalten hast (ist üblicherweise der Fall ;-)
      Mit allen anderen, allen voran die ", steigt baseportal letztendlich aus.

      Beim Importieren in baseportal mußt Du folgende Einstellungen wählen:
      Trenner Spalten: Pipe(|)
      Trenner Zeilen: Linefeed+Return
      Trenner Text: Keine
      Erste Zeile als Felder interpretieren: X

      Hä,hä; in baseportal sind die Namen für Cr und Lf vertauscht :-))))
      Unter Verwaltung / Daten importieren und - exportieren ist mit Return das Lf (0x0A) und mit Linefeed das Cr (0x0D) gemeint :-))))
      Daran hab' ich lange herumgerätselt!

      Wenn das ganze eine neue Datenbank ist, dann mußt Du sie 2 mal importieren (bei bestehender Datenbank kannst Du den ersten Durchgang auslassen):

      1. Durchgang:

      *) neue Datenbank erstellen
      *) ein beliebiges Feld erstellen (gleich mit richtigem Typ und Namen)
      *) csv importieren
      *) Feldnamen überprüfen und alle Typen korrigieren, weil bei neuen Feldern kein Typ erzeugt wird :-(
      *) Datenbank reorganisieren (erzeugt erst die neuen Indize!)

      2. Durchgang:

      *) Inhalt der Datenbank löschen (nicht die Datenbank selber;-)
      *) csv importieren

      Nun mußt Du noch Deine "\n" zurückwandeln mit z.B.: dem folgenden:

      <perl>
      get undef,'deinedatenbank','conv';
      while (get_next('conv')) {
        $_loop{'mehrzeilig'} =~ s/\\n/\n/g;
        mod "Id==$Id",['mehrzeilig'=>$_loop{'mehrzeilig'}],'deinedatenbank';
      }
      </perl>
      

      Na, hoffentlich hab ich mich da jetzt nicht irgendwo bei der Syntax geirrt.
      Ich hoffe, Du kriegst es hin, aber so gehts bei mir jetzt jedesmal auf Anhieb.

      Ursachen:
      baseportal versuch effizienter als Access zu sein un verwendet die "..." nur dann, wenn sie notwendig sind. Dafür kann es wiederum kein " innerhalb von "..." verarbeiten, denn in Access würde es so aussehen "...""..." weil die " innerhalb verdoppelt werden.
      Weiters ist das Datum ein großes Problem, weil in baseportal die Uhrzeit geschrieben wird als hh:nn.ss und speziell der Punkt vor den Sekunden bringt jedes andere System ins Schleudern ;-)


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Frank Junker (3 Beiträge) am Donnerstag, 20.März.2003, 07:59.
    Wie kann ich einen Daten mit Zeilenumbruch importieren

      Hallo,

      ich möchte eine CSV-Datei importieren. Dabei enthalten die Daten eines Feldes einen Zeilenumbruch.
      Beim import wird der Zeilenumbruch jedoch durch ein ";" ersetzt.

      Was mache ich da falsch ?

      Danke

      Frank

     Antworten

    Beitrag von till (1103 Beiträge) am Donnerstag, 20.März.2003, 08:32.
    Re: Wie kann ich einen Daten mit Zeilenumbruch importieren

      hallo frank,

      das csv format wird zwar leider nicht wirklich einheitlich verwendet (es gibt da varianten, z.b. mit "" als texterkennung etc.) aber eines ist sicher: ein zeilenumbruch bedeutet immer einen neuen datensatz.
      woher kommen deine ausgangsadten denn ? ist es evtl. möglich den datensatz normgerecht (also ohne den umbruch innerhalb eines datnsatzes) zu erzeugen ?

      till

     Antworten

    Beitrag von Frank Junker (3 Beiträge) am Donnerstag, 20.März.2003, 09:06.
    Re: Wie kann ich einen Daten mit Zeilenumbruch importieren

      Ich arbeite mit Access und kann alle möglichen Ausgaben erzeugen (kenn mich mit VB etc. aus), aber welche ist die richtige ?
      Bisher habe ich mit '"' als Texterkennung gearbeitet.

      Ich habe schon versucht, im Datenfeld CRLF durch <br> zu ersetzen, aber dann steht in der Ausgabe <br> im Klartext.
      Gibt es eine Zeichenfolge, woran bp erkennt, dass es sich um einen Zeilenumbruch handelt ?

      Nochmal mein Ziel: Ich habe ein Feld in der Datenbank, in dem eine Anschrift steht (3 Zeilen) und dieses Feld möchte ich nach baseportal importieren, so das der Inhalt bei Ausgabe ebenfalls 3-Zeilig ist.

      Das Problem kann ich doch nicht alleine haben, aber im Forum und dens DOCs habe ich nichts gefunden.
      Vermutlich gibt es dafür eine einfache Lösung.

      Hoffe auf eine Antwort von Dir.

      Gruß

      Frank

     Antworten

    Beitrag von Andreas (396 Beiträge) am Freitag, 21.März.2003, 01:19.
    Re: Wie kann ich einen Daten mit Zeilenumbruch importieren

      Direkt kannst Du Deine vbCrLf nicht importieren.

      Du benötigst eine Schema.ini-Datei für die csv-Definition (in MS Access), sofern Deine Ländereinstellungen von diesen Abweichen:

      [deintabellenname.csv]
      ColNameHeader = True
      CharacterSet = ANSI
      Format=Delimited(|)
      TextDelimiter = none
      MaxScanRows = 0
      DateTimeFormat=dd.mm.yyyy, hh:nn.ss
      DecimalSymbol=.

      Das Besondere hierbei ist das spezielle Datumsformat. Nur mit diesem Format kannst Du Datum und Zeit in baseportal importieren. Solltest Du mit der Schema.ini Probleme haben, dann gibts hier die richtige Antwort (Das Suchen nach dieser Lösung - speziell nach dem 'none' - hat mir fast einen Tag gekostet ;-( http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B241477

      Weiters wandle deine vbCrLf um in "\n" (also das NewLine in Perl). Das kannst Du zum Beispiel mit einer VB-Hilfsfunktion bewerkstelligen:

      Public Sub convcrlf(V As Variant) As Variant
      convcrlf = Null
      if isnull(V) then Exit Sub
      
      convcrlf = Replace(V, vbCrLf, "\n")
      End Sub

      Diese kannst Du dann in eine Abfrage packen und von dieser Abfrage dann die deintabellenname.csv erzeugen.
      Bewährt haben sich die oben angegebenen Steuerzeichen:
      Feldtrenner: |
      Texttrenner: Keines

      Dies erfordert jedoch, daß Du in keinem der Daten ein Pipe (|) enthalten hast (ist üblicherweise der Fall ;-)
      Mit allen anderen, allen voran die ", steigt baseportal letztendlich aus.

      Beim Importieren in baseportal mußt Du folgende Einstellungen wählen:
      Trenner Spalten: Pipe(|)
      Trenner Zeilen: Linefeed+Return
      Trenner Text: Keine
      Erste Zeile als Felder interpretieren: X

      Hä,hä; in baseportal sind die Namen für Cr und Lf vertauscht :-))))
      Unter Verwaltung / Daten importieren und - exportieren ist mit Return das Lf (0x0A) und mit Linefeed das Cr (0x0D) gemeint :-))))
      Daran hab' ich lange herumgerätselt!

      Wenn das ganze eine neue Datenbank ist, dann mußt Du sie 2 mal importieren (bei bestehender Datenbank kannst Du den ersten Durchgang auslassen):

      1. Durchgang:

      *) neue Datenbank erstellen
      *) ein beliebiges Feld erstellen (gleich mit richtigem Typ und Namen)
      *) csv importieren
      *) Feldnamen überprüfen und alle Typen korrigieren, weil bei neuen Feldern kein Typ erzeugt wird :-(
      *) Datenbank reorganisieren (erzeugt erst die neuen Indize!)

      2. Durchgang:

      *) Inhalt der Datenbank löschen (nicht die Datenbank selber;-)
      *) csv importieren

      Nun mußt Du noch Deine "\n" zurückwandeln mit z.B.: dem folgenden:

      <perl>
      get undef,'deinedatenbank','conv';
      while (get_next('conv')) {
        $_loop{'mehrzeilig'} =~ s/\\n/\n/g;
        mod "Id==$Id",['mehrzeilig'=>$_loop{'mehrzeilig'}],'deinedatenbank';
      }
      </perl>
      

      Na, hoffentlich hab ich mich da jetzt nicht irgendwo bei der Syntax geirrt.
      Ich hoffe, Du kriegst es hin, aber so gehts bei mir jetzt jedesmal auf Anhieb.

      Ursachen:
      baseportal versuch effizienter als Access zu sein un verwendet die "..." nur dann, wenn sie notwendig sind. Dafür kann es wiederum kein " innerhalb von "..." verarbeiten, denn in Access würde es so aussehen "...""..." weil die " innerhalb verdoppelt werden.
      Weiters ist das Datum ein großes Problem, weil in baseportal die Uhrzeit geschrieben wird als hh:nn.ss und speziell der Punkt vor den Sekunden bringt jedes andere System ins Schleudern ;-)

     Antworten


     
 Liste der Einträge von 39450 bis 39600:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!