tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
1170
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Dark Ranger Dark Ranger ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    436
    Hi

    Ich bin gerade dabei ein SSIS Paket zu erstellen um damit Tabellen auf dem SQL Server mit Inhalten aus den Dateien zu füllen.
    Die Dateien haben ° als Trennzeichen. Gebe ich dieses Trennzeichen nun aber bei Split an, passiert nichts. Wenn ich mir danach den String in einer MsgBox ausgeben lasse, dann steht dort kein ° sondern ein ?
    Quellcode ist schwer zu zeigen, da es mit dem SSIS Paket verankert ist, aber gibt es vielleicht allgemeine Infos die mir weiterhelfen könnten?
     

  2. #2
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Bitte keine Mehrfachpostings! Das nächste Mal einfach um Verschiebung bitten. *Anderer Beitrag wurde gelöscht*

    Hast Du es schon mal mit einem anderen Trenner versucht ?
    Kann es sein, dass die Zeichenkodierung nicht mitspielt ? UTF8 gegen ISO8859-1 ?

    Trenner dürfen doch auch mehr als 1 Zeichen lang sein, nimm doch zB [*]

    mfg chmee
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  3. #3
    Dark Ranger Dark Ranger ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    436
    Ich kann am Trennzeichen leider nichts ändern, da die Dateien mir so vorgegeben sind.

    Habe schon ein bisschen gebastelt in meinem Paket, hier die Stelle wo ich die einzelnen Zeilen auslese:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    Dim nextLine As String
            Dim columns As String()
            nextLine = textReader.ReadLine
            Do While nextLine IsNot Nothing
                MsgBox("Vorher: " & nextLine)
                columns = nextLine.Split("°".ToCharArray)
                nextLine = ""
                For Each column As String In columns
                    nextLine = nextLine & column & ", "
                Next column
                nextLine = Left(nextLine, Len(nextLine) - 2)
                MsgBox("Nachher: " & nextLine)
                With OutputBuffer
                    .AddRow()
                    .Spalte = nextLine
                End With
                nextLine = textReader.ReadLine
            Loop

    Ich habe dort halt versucht, das ganze so umzubauen, dass die ganzen Werte mit Komma getrennt hintereinanderstehen, allerdings gibt "Vorher" Die Zeichenkette schon mit so einer Box aus, deswegen denke ich, dass wirklich die Codierung falsch ist.

    Was kann ich da machen? Meine FlatFile Connection ist auf CodePage 1252 gestellt, oder soll ich versuchen den String umzukodieren?

    Edit:
    Wenn ich mal testweise * als Trennzeichen einsetze, dann funktioniert oben stehender Code auch, leider sind mir ja aber die Dateien so vorgegeben.
    Geändert von Dark Ranger (18.03.09 um 12:54 Uhr)
     

  4. #4
    calvin65 calvin65 ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Beiträge
    31
    Was du auf jeden Fall versuchen solltest, ist das Ausgeben der einzelnen Zeichen als Zahl.
    Also einfach mal
    Code :
    1
    2
    3
    4
    
    debug.print(nextLine)
    for each ch as char in nextLine
      debug.print(asc(ch)) 'alternativ auch: ascw(ch)
    next
    Und dann mit dem Text vergleichen, welches ASCII-Zeichen an der Trennstelle steht. Das hilft vielleicht dabei rauszukriegen, welches Zeichen als Trenner (fälschlich) steht.
    Ansonsten würde ich auch sagen, versuch mal den textReader auf UTF8 einzustellen und den Trenner nicht als ToCharArray, sondern vorher als Feld zu erstellen und nur zu übergeben.
     
    MfG Calvin

  5. #5
    Dark Ranger Dark Ranger ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    436
    Mhhh ich habe nichts gemacht, nur einmal die CodePage der FlatFile Connection auf 65001 gestellt, was aber keine Änderung mit sich gebracht hat.

    Dann habe ich mir mal das Trennzeichen als Zahl ausgeben lassen so wie du es beschrieben hast, dabei kommt immer 63 raus.

    Das komische ist allerdings, dass es auf einmal funktioniert o.O Aber es steht nicht mehr "°".toCharArray() sondern das ° ist ein Kästchen.
    Das kann ich natürlich nicht so lassen, aber ich werde jetzt erstmal versuchen das ganze so in die Datenbank zu schreiben, vielleicht funktioniert es ja (gab vorher auch einen Fehler, irgendwas mit System.__COMObject kann nicht zu Klasse umgewandelt werde oder so)
     

  6. #6
    Dark Ranger Dark Ranger ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    436
    Folgender Fehler tritt im Moment auf, wenn ich mich zur Datenbank verbinden will:

    Code :
    1
    
    Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Klassentyp "System.Data.SqlClient.SqlConnection" umgewandelt werden.

    Folgender Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    Private SQLConnMgr As IDTSConnectionManager100
          Private SQLConn As SqlConnection
     
        Public Overrides Sub AcquireConnections(ByVal Transaction As Object)
            MyBase.AcquireConnections(Transaction)
            SQLConnMgr = Me.Connections.ServerConnection
            SQLConn = CType(SQLConnMgr.AcquireConnection(Nothing), SqlConnection)
        End Sub

    Was mache ich falsch?

    Edit:
    So habe ich es aus dem Technet übernommen

    Edit2:
    Das Problem oben hat sich gelöst, mache es nun über new SQLConnection(ConnectionString)

    Allerdings bleibt das Trennzeichen Problem weiterhin bestehen, er zwar im moment alles trenn, aber bei jedem Sonderzeichen und zum Beispiel auch bei einem ß was er ja nicht soll -.-
    Ich denke es ist wirklich ein Problem der Kodierung, allerdings kann ich das Trennzeichen und die Kodierung der Dateien nicht ändern. Ein Umstellen der Codepage der FlatFile Connection auf 65001 (UTF8) hat nicht geholfen. Nun ist die Frage wie löse ich das Problem?
    Geändert von Dark Ranger (19.03.09 um 13:47 Uhr)
     

  7. #7
    Dark Ranger Dark Ranger ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    436
    Das Problem hat sich erledigt.

    Code :
    1
    
    new StreamReader(Pfad, Encoding.Default)
    und anstatt
    Code :
    1
    
    Columns = NextLine.Split"°".ToCharArray())
    habe ich folgendes benutzt
    Code :
    1
    
    Columns = NextLine.Split(Chr(176))

    Dadurch funktioniert es ohne Probleme. Jetzt ist nur noch die Performance das Problem aber da kann ich jetzt erstmal in Ruhe drüber nachdenken.

    Deswegen hier ..::Erledigt::..

    Edit:
    Kennt sich vielleicht irgendwer näher mit SSIS aus?
    Geändert von Dark Ranger (19.03.09 um 15:28 Uhr)
     

Ähnliche Themen

  1. Speicherpfade in VB2008
    Von Ph4Z3r im Forum .NET Datenverwaltung
    Antworten: 2
    Letzter Beitrag: 30.04.10, 19:28
  2. WINSCARD und VB2008
    Von SkojA im Forum .NET Application und Service Design
    Antworten: 1
    Letzter Beitrag: 20.01.10, 19:37
  3. [VB2008] Word
    Von BäN im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 11.12.09, 09:37
  4. Split mit | als Trennzeichen
    Von Ötzi im Forum Java
    Antworten: 5
    Letzter Beitrag: 03.11.09, 09:51
  5. VB2008 2 Comboboxen
    Von Releiver im Forum .NET Windows Forms
    Antworten: 5
    Letzter Beitrag: 17.09.09, 13:49