[GELÖST] Wie ermitteln, ob ein Datensatz existiert?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

[GELÖST] Wie ermitteln, ob ein Datensatz existiert?

Beitrag von geimist »

Hallo,

ich lese aus einem Formular Zeitangaben aus, stelle dann per Makro ein paar Berechnungen an und schreibe die Ergebnisse per SQL-Update in die, dem Formular zugrundeliegende Tabelle.

Mein Problem:
Was mache ich, wenn der Datensatz im Formular neu erstellt wurde, aber noch nicht gespeichert worden ist. Das SQL-Update kann ja so nicht durchgeführt werden weil das Auswahlkriterium für die WHERE-Bedingung nicht erfüllt ist.

1.) Daher muss ich prüfen, ob der Datensatz besteht. Wie?
2.) Wie kann ich ihn erstellen, wenn er noch nicht besteht? (insertRow? - aber wie?)

Dieser Versuch einfach zu speichern funktioniert nicht, auf dem "leeren" Datensatz

Code: Alles auswählen

oDoc = ThisComponent
oForm = oDoc.DrawPage.Forms.getByIndex (0)

If oForm.isModified = true then 'Überprüfung ob Datensatz modifiziert wurde - wenn ja, dann:               
oForm.upDateRow() 'geaenderten Datensatz speichern    
End If
Zuletzt geändert von geimist am Do, 03.09.2009 17:11, insgesamt 2-mal geändert.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Wie ermitteln, ob ein Datensatz existiert?

Beitrag von geimist »

O.K. Danke für deine Infos.

Also mein Schlüsselfeld ist ein Datum. Ist dieses Feld im Formular noch leer, so ist der Datensatz offensichtlich noch nicht erstellt und ich lasse eine entsprechende Meldung von Basic ausgeben. Das habe ich schon so.

Ist das Formular aber schon ausgefüllt, müsste ich also einfach per SQL suchen, ob das Datum in der Tabelle schon vorhanden ist. Richtig?

Gibt es noch einen Tipp, wie das am besten formuliere? Zunächst müsste ich ein ResultSet erstellen, aber dann abfragen, ob das Datum schon vorhanden ist. Wie?
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Wie ermitteln, ob ein Datensatz existiert?

Beitrag von geimist »

Also das Datum ist gleich dem Primärschlüssel und kommt so nur einmal vor. Alle anderen Felder sind optional.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Wie ermitteln, ob ein Datensatz existiert?

Beitrag von geimist »

Die anderen Felder müssen nicht eindeutig sein. Aber wenn das Datum noch fehlt, so fehlt auch das Schlüsselfeld. Deswegen genügt es, wenn man sich auf das Datums-Feld konzentriert.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Wie ermitteln, ob ein Datensatz existiert?

Beitrag von geimist »

Ich muss prüfen, ob ein Datensatz mit dem Datum schon vorhanden ist.
Wenn nicht muss ich eben diesen Datensatz anlegen. Ich weiß im Detail nur nicht wie!
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Wie ermitteln, ob ein Datensatz existiert?

Beitrag von geimist »

Und weil ich Hilfe für genau dieses Makro benötige, habe ich diese Frage eröffnet :? (Siehe meine eingangs erwähnte Frage)
Übrigens: Das aufklappbare Datumsfeld im Formular muss nicht wieder geleert werden, da das Datum ja zum Datensatz gehört und so wie alle anderen Daten mit angezeigt werden soll.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: [OFFEN] Wie ermitteln, ob ein Datensatz existiert?

Beitrag von geimist »

Es ist so: Die DB muss so einfach wie möglich bedient werden können - dass sich der Nutzer nicht darum kümmern muss, ob der Datensatz schon mal gespeichert wurde oder neu erstellt werden muss ect.

Da ich das oben beschriebene SQL-Update logischerweise nur auf einen vorhandenen Datensatz anwenden kann, muss ich die entsprechende Überprüfung automatisieren. D.h., wenn diese Überprüfung (die ich hier suche) ergeben hat, dass der Datensatz noch nicht in der Datenbank vorhanden ist aber bereits ein Datum (=PK) ins Formular eingetragen wurde, so wird ein entprechender Datensatz erstellt, ohne dass der Nutzer etwas davon mitbekommt.

Verständlich???
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: [OFFEN] Wie ermitteln, ob ein Datensatz existiert?

Beitrag von komma4 »

und was, wenn das Datum vorhanden ist? Überschreiben, mit den Werten aus dem Formular?

Dann lösche doch einfach nach dem PK (eventl. Fehler "wenn nicht vorhanden" abfangen und ignorieren), und füge dann ein, was im Formular steht.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: [OFFEN] Wie ermitteln, ob ein Datensatz existiert?

Beitrag von geimist »

Wenn das Datum vorhanden ist (wenn du meinst dass der entsprechende Datensatz existiert), dann ist ja alles O.K. und das Makro kann durchlaufen und das SQL-Update durchführen. Wenn sich deine Frage darauf bezieht, dass ein Datum doppelt erstellt werden könnte: So käme es mit und ohne dem Makro zu einer Fehlermeldung. Darum Diesen Fehler (eines doppelten PK) möchte ich hier nicht abfangen.

Das Datum benötige ich für die WHERE Bedingung im SQL-String.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: [OFFEN] Wie ermitteln, ob ein Datensatz existiert?

Beitrag von komma4 »

Code: Alles auswählen

sSQL = "Select * FROM ""Tabelle1"" WHERE ""datum"" = NOW() "
' Abfrage absetzen
oResultSet = oStatement.executeQuery( sSQL )

Select Case oResultSet.next()
	Case FALSE
		msgbox "insert it"
 	Case TRUE
 		msgbox "update!"
End Select
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: [OFFEN] Wie ermitteln, ob ein Datensatz existiert?

Beitrag von geimist »

Das geht ja prima.

Vielen Dank :D
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Antworten