SQLite Format Problem
Verfasst: So, 08.09.2013 18:01
Hallöchen allerseits,
ich habe ein kleines Problem mit meiner SQLite-Datenbank und hoffe, ihr könnt mir darin weiterhelfen.
Über Starbasic, aus Base heraus, werden Kundendaten (falls noch nicht vorhanden) aus einer XML-Datei in eine SQLite-Tabelle übertragen.
Soweit funktioniert dies einwandfrei, außer es gibt in der XML-Datei ANSI-Kodierungen wie z.B. Umlaute. Ein "ö" habe ich dann über die Starbasic-MessageBox so als "ö" vorliegen.
Wenn noch keine Kundendaten in der DB vorhanden sind, kommt meine Abfrage damit klar und alles wird sauber in die DB übertragen (sprich: das "ö" liegt in SQLite auch wieder als "ö" vor). Beim nächsten Versuch, die Daten zu übertragen, gibt die Prozedur aber eine SQLExeption aus: "columnname is not unique" (Tabellenspalte ist als UNIQUE erstellt).
Der Importvorgang der XML wird zeilenweise mit...
... erreicht (der Standardprozedur aus der OpenOffice-Referenz) und die gesuchten Daten werden wie folgt aus der XML extrahiert:
Jemand einen Rat?
Liebe Grüße,
Marcel
ich habe ein kleines Problem mit meiner SQLite-Datenbank und hoffe, ihr könnt mir darin weiterhelfen.
Über Starbasic, aus Base heraus, werden Kundendaten (falls noch nicht vorhanden) aus einer XML-Datei in eine SQLite-Tabelle übertragen.
Soweit funktioniert dies einwandfrei, außer es gibt in der XML-Datei ANSI-Kodierungen wie z.B. Umlaute. Ein "ö" habe ich dann über die Starbasic-MessageBox so als "ö" vorliegen.
Wenn noch keine Kundendaten in der DB vorhanden sind, kommt meine Abfrage damit klar und alles wird sauber in die DB übertragen (sprich: das "ö" liegt in SQLite auch wieder als "ö" vor). Beim nächsten Versuch, die Daten zu übertragen, gibt die Prozedur aber eine SQLExeption aus: "columnname is not unique" (Tabellenspalte ist als UNIQUE erstellt).
Code: Alles auswählen
oResultClients = createUnoService("com.sun.star.sdb.RowSet")
oResultClients.DataSourceName = sSystemName
oResultClients.CommandType = com.sun.star.sdb.CommandType.COMMAND
oResultClients.Command = "SELECT ID, name, type FROM clients ORDER BY ID"
oResultClients.Execute
Code: Alles auswählen
Schleife...
oResultClients.Command = "SELECT ID, name, type FROM clients WHERE name = '" & sClientName & "'"
oResultClients.Execute
If oResultClients.First = True Then
'... falls JA, wird hier die Tabelle auf Übereinstimmung durchsucht
nClientID = oResultClients.getString(1)
'... falls NICHT, wird ein neuer Datensatz angelegt
Else
oResultClients.Command = "SELECT ID, name, type FROM clients ORDER BY ID"
oResultClients.Execute
oResultClients.Last()
oResultClients.moveToInsertRow()
oResultClients.updateString(2, sClientName)
oResultClients.updateString(3, sClientType)
oResultClients.insertRow()
oResultClients.moveToCurrentRow()
oResultClients.Last()
End If
Ende...
Code: Alles auswählen
Do While not eof(nFileNo)
'zeilenweises Einlesen
Line Input #nFileNo, sCurrentLine
...
Code: Alles auswählen
If sCurrentLine <>"" Then
If Instr(sCurrentLine,"<Client Name=""") = 1 Then
nCountClient = nCountClient + 1
sClientName = findPartString(sCurrentLine,"<Client Name=""",""" Type=""",1)
sClientType = findPartString(sCurrentLine,""" Type=""",""">",1)
...
Liebe Grüße,
Marcel