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

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [GELÖST] Wie ermitteln, ob ein Datensatz existiert?

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

von geimist » Do, 03.09.2009 16:51

Das geht ja prima.

Vielen Dank :D

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

von komma4 » Do, 03.09.2009 16:42

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

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

von geimist » Do, 03.09.2009 16:24

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.

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

von komma4 » Do, 03.09.2009 16:17

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.

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

von geimist » Do, 03.09.2009 16:02

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???

Re: Wie ermitteln, ob ein Datensatz existiert?

von geimist » Di, 01.09.2009 22:48

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.

Re: Wie ermitteln, ob ein Datensatz existiert?

von geimist » Di, 01.09.2009 21:55

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!

Re: Wie ermitteln, ob ein Datensatz existiert?

von geimist » Di, 01.09.2009 20:19

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.

Re: Wie ermitteln, ob ein Datensatz existiert?

von geimist » Di, 01.09.2009 20:00

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

Re: Wie ermitteln, ob ein Datensatz existiert?

von geimist » Di, 01.09.2009 19:47

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?

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

von geimist » Di, 01.09.2009 19:01

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

Nach oben