ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
1170
1170
EMPFEHLEN
-
18.03.09 12:30 #1
- 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?
-
18.03.09 12:40 #2
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 chmeeMein 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 <-
-
18.03.09 12:48 #3
- 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)
-
Was du auf jeden Fall versuchen solltest, ist das Ausgeben der einzelnen Zeichen als Zahl.
Also einfach mal
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.Code :1 2 3 4
debug.print(nextLine) for each ch as char in nextLine debug.print(asc(ch)) 'alternativ auch: ascw(ch) next
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
-
18.03.09 14:29 #5
- 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)
-
19.03.09 09:58 #6
- 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)
-
19.03.09 15:22 #7
- Registriert seit
- Aug 2005
- Beiträge
- 436
Das Problem hat sich erledigt.
und anstattCode :1
new StreamReader(Pfad, Encoding.Default)
habe ich folgendes benutztCode :1
Columns = NextLine.Split"°".ToCharArray())
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
-
Speicherpfade in VB2008
Von Ph4Z3r im Forum .NET DatenverwaltungAntworten: 2Letzter Beitrag: 30.04.10, 19:28 -
WINSCARD und VB2008
Von SkojA im Forum .NET Application und Service DesignAntworten: 1Letzter Beitrag: 20.01.10, 19:37 -
[VB2008] Word
Von BäN im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 11.12.09, 09:37 -
Split mit | als Trennzeichen
Von Ötzi im Forum JavaAntworten: 5Letzter Beitrag: 03.11.09, 09:51 -
VB2008 2 Comboboxen
Von Releiver im Forum .NET Windows FormsAntworten: 5Letzter Beitrag: 17.09.09, 13:49





Zitieren

Login





