Daten abgleichen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Daten abgleichen

Beitrag von keksi1970 »

Hi,

deine Beschreibung erscheint mir nicht logisch.

du meinst also, lt deinem Wortlaut, daßß du Daten zwischen der Calc-Tabelle und der Tabelle in der Datenbank vergleichen willst. Sind sie "identisch" sollen beide gelöscht werden?

oder willst du eher ein "update" ausführen, dh eine Calc-Tabelle dient als Grundlage für die Datenbank und es sollen Neue Einträge gemacht werden, sowie die Alten Daten auf den neuesten Stand ?

Ich würde dir empfehlen, in deiner Calc-Tabelle ein Makro zu schreiben, welches in der Datenbank die KD-Nr ausliest und bei VOrhandensein aktualisiert, bei nicht vorhandensein hinzufügt(der Datenbank, nicht der Calc-Tabelle).

Da ich das Makro eh grade schreibe, poste ich nachher einen Anhang, der eine Liste in einer Calc-Datei in eine Datenbank schreibt, vorhandene EInträge ersetzt und nicht vorhandene anlegt.

LG
Andreas
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Daten abgleichen

Beitrag von keksi1970 »

Hi, also:

folgende Voraussetzung für deine Calc-Datei:

Tabelle1.Spalte A deine Kundennummer

für deine Datenbank :

dein KundenStamm heisst : ""KundenStamm"" //gross/kleinschreibung beachten
deine Spalte in der Tabelle Kundenstamm heisst : ""KundenNummer""
Pfadangabe zur DB solltest du selbst rausfinden können ;)

Hier das dazugehörige Makro:

Code: Alles auswählen

Dim oVerbindung as object

function getConnection
oDatabaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDatasource = oDatabaseContext.getbyname("file:///C:/DeineDatenBank/Datenbank.ods")'Pfadangabge zu deiner Datenbank
oConnection = oDatasource.getConnection("","")'Username & Passwort = "" & ""
oVerbindung = oConnection
End Function

Sub KDNummerLoeschen
oDOc = ThisComponent
oSheet = oDoc.Sheets(0)'Tabellenblatt1

zaehler = 2 ' in der 2.Zeite anfangen, da 1.Zeile = Überschrift
getconnection ' Verbindung zur Datenbank

LoeschStatement = oVerbindung.createStatement()

do while oSheet.getcellrangebyname("A" & zaehler).string <> ""
	LoeschSql = " DELETE FROM ""KundenStamm"" WHERE ""KundenNummer"" = " & oSheet.getcellrangebyname("A" & zaehler).value & " "
	LoeschStatement.executeQuery(LoeschSql)
	zaehler = zaehler +1
loop
oVerbindung.close
End Sub
LG
Andreas

btw : kopiere deine DB zuerst und teste das Makro daran. ich übernehme für funktionen keinerlei Garantie ;)
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Daten abgleichen

Beitrag von keksi1970 »

hi,

ersetze erstmal denteil hier

Code: Alles auswählen

oDatasource = oDatabaseContext.getbyname("file:///C:\Dokumente und Einstellungen\AN\Desktop\KundenStamm.odb")'Pfadangabge zu deiner Datenbank
durch

Code: Alles auswählen

oDatasource = oDatabaseContext.getbyname(convertToUrl("C:\Dokumente und Einstellungen\AN\Desktop\KundenStamm.odb"))
Wie heisst denn die Tabelle, in der die Daten gelöscht werden sollen ?

LG
Andreas
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Daten abgleichen

Beitrag von keksi1970 »

dann ersetze

Code: Alles auswählen

LoeschSql = " DELETE FROM ""KundenStamm"" WHERE ""KundenNummer"" = " & oSheet.getcellrangebyname("A" & zaehler).value 
durch


LoeschSql = " DELETE FROM ""TabellennameInDerDatenBank"" WHERE ""SpalteWoKundenNummerSteht"" = " & oSheet.getcellrangebyname("A" & zaehler).value
Antworten