Discussion:
sql update
(zu alt für eine Antwort)
Tobias
2006-08-23 07:31:02 UTC
Permalink
Hallo Ng,

ich hab mir jetzt ein kleines Formular gebaut, dass den Inhalt über das SQL
Statement "Insert Into..." Werte einfügt.
So nun würde ich diese gerne dahin erweitern, das bei einem bestehenden
Datensatz der Wert upgedatet wird. also über "Update Table ..."

Meine Frage ist nun folgende:

Es erscheint ja eine Fehlermeldung "Primärschlüsse bereits vorhanden" falls
der Recordset schon vorhanden ist, wie kann ich diesen auswerten?
Also ich stelle mir da ne kleine If-Abfrage vor oder ähnliches.

Schon mal vielen Dank

Tobias
Hans-Peter Postel
2006-08-23 07:40:39 UTC
Permalink
Hallo Tobias,
Post by Tobias
ich hab mir jetzt ein kleines Formular gebaut, dass den Inhalt über das SQL
Statement "Insert Into..." Werte einfügt.
So nun würde ich diese gerne dahin erweitern, das bei einem bestehenden
Datensatz der Wert upgedatet wird. also über "Update Table ..."
Warum bindest du nicht die Tabelle direkt an das Formular
(Form-Eigenschaft: Datenherkunft)? Dann brauchst du keine INSERTs,
UPDATEs, DELETEs und SELECTs zu programmieren - alles macht Access für
dich automatisch.

Vielleicht teilst du uns einige Details darüber mit, warum du deine
Vorgehensweise gewählt hast...

Gruß
Hans-Peter
Thomas Möller
2006-08-23 08:04:37 UTC
Permalink
Hallo Tobias!

In dieser NG ist es üblich seinen vollen Realnamen (Vor- und Zuname)
anzugeben. Danke!
Post by Tobias
ich hab mir jetzt ein kleines Formular gebaut, dass den Inhalt über das SQL
Statement "Insert Into..." Werte einfügt.
So nun würde ich diese gerne dahin erweitern, das bei einem bestehenden
Datensatz der Wert upgedatet wird. also über "Update Table ..."
Es erscheint ja eine Fehlermeldung "Primärschlüsse bereits vorhanden" falls
der Recordset schon vorhanden ist, wie kann ich diesen auswerten?
Also ich stelle mir da ne kleine If-Abfrage vor oder ähnliches.
Du kannst mittels DLOOKUP prüfen ob der Primärschlüssel schon vorhanden ist.
Je nach dem verwendest Du dann ein Insert oder ein Update-Statement.

HTH
--
Thomas

Homepage: www.Team-Moeller.de
Tobias
2006-08-23 08:16:03 UTC
Permalink
Post by Thomas Möller
Hallo Tobias!
In dieser NG ist es üblich seinen vollen Realnamen (Vor- und Zuname)
anzugeben. Danke!
Post by Tobias
ich hab mir jetzt ein kleines Formular gebaut, dass den Inhalt über das
SQL
Post by Tobias
Statement "Insert Into..." Werte einfügt.
So nun würde ich diese gerne dahin erweitern, das bei einem bestehenden
Datensatz der Wert upgedatet wird. also über "Update Table ..."
Es erscheint ja eine Fehlermeldung "Primärschlüsse bereits vorhanden"
falls
Post by Tobias
der Recordset schon vorhanden ist, wie kann ich diesen auswerten?
Also ich stelle mir da ne kleine If-Abfrage vor oder ähnliches.
Du kannst mittels DLOOKUP prüfen ob der Primärschlüssel schon vorhanden ist.
Je nach dem verwendest Du dann ein Insert oder ein Update-Statement.
HTH
--
Thomas
Homepage: www.Team-Moeller.de
Hallo Thomas,

vielen Dank genau so was suche ich kannst du kurz deine Antwort um einen
Bespielcode ergänzen?

if Dlookup then oder wie???

Schon mal Danke
Peter Doering
2006-08-23 09:03:22 UTC
Permalink
Hallo,
Post by Tobias
Post by Thomas Möller
Post by Tobias
ich hab mir jetzt ein kleines Formular gebaut, dass den Inhalt über das SQL
Statement "Insert Into..." Werte einfügt.
So nun würde ich diese gerne dahin erweitern, das bei einem bestehenden
Datensatz der Wert upgedatet wird. also über "Update Table ..."
Es erscheint ja eine Fehlermeldung "Primärschlüsse bereits vorhanden" falls
der Recordset schon vorhanden ist, wie kann ich diesen auswerten?
Also ich stelle mir da ne kleine If-Abfrage vor oder ähnliches.
Du kannst mittels DLOOKUP prüfen ob der Primärschlüssel schon vorhanden ist.
Je nach dem verwendest Du dann ein Insert oder ein Update-Statement.
vielen Dank genau so was suche ich kannst du kurz deine Antwort um einen
Bespielcode ergänzen?
if Dlookup then oder wie???
FAQ 4.25 (www.donkarl.com).

Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Anmeldung zur AEK: http://www.donkarl.com/AEK
Olaf Rabbachin
2006-08-23 08:08:22 UTC
Permalink
Hi,
Post by Tobias
ich hab mir jetzt ein kleines Formular gebaut, dass den Inhalt über das SQL
Statement "Insert Into..." Werte einfügt.
So nun würde ich diese gerne dahin erweitern, das bei einem bestehenden
Datensatz der Wert upgedatet wird. also über "Update Table ..."
Es erscheint ja eine Fehlermeldung "Primärschlüsse bereits vorhanden" falls
der Recordset schon vorhanden ist, wie kann ich diesen auswerten?
Also ich stelle mir da ne kleine If-Abfrage vor oder ähnliches.
entweder ermittelst du vorher, ob der DS bereits vorhanden ist (z.B. per
DLookup), oder du führst dein INSERT per ...
dim db as dao.database
set db=currentdb
db.execute "INSERT ..."
... aus, dann kannst du auf Fehler prüfen. Der gangbarste Weg wäre jedoch,
einen Recordset zu verwenden, sofern der SQL-string nicht "vorgefertigt"
aus anderer Quelle kommt. In diesem Fall würde ich den Fehler beim INSERT
auswerten, oder auch beim UPDATE, falls der PK bekannt ist.

Bis dann,
Olaf
--
My .02: www.Resources.IntuiDev.com
Henry Habermacher [MVP Access]
2006-08-23 15:49:13 UTC
Permalink
Hallo Tobias
Post by Tobias
ich hab mir jetzt ein kleines Formular gebaut, dass den Inhalt über
das SQL Statement "Insert Into..." Werte einfügt.
So nun würde ich diese gerne dahin erweitern, das bei einem
bestehenden Datensatz der Wert upgedatet wird. also über "Update
Table ..."
Es erscheint ja eine Fehlermeldung "Primärschlüsse bereits vorhanden"
falls der Recordset schon vorhanden ist, wie kann ich diesen
auswerten?
Also ich stelle mir da ne kleine If-Abfrage vor oder ähnliches.
Du kannst einfach ein REcordset öffnen. Dann schaust Du, ob dieses Records
hat, falls ja, machst Du einen Update, falls nein einen Add. DAs geht etwa
so: (ich gehe davon aus, dass im QueryDef bereits die Where-Bedingung
enthalten ist, also z.B.:
"SELECT * FROM DeineTabelle WHERE DeineID = <xyz>

dim rs as REcordset
'allenfalls vorher parameter der QDF gemäss FAQ setzen
set rs = qdf.openrecordset
with rs
if .recordcount = 0 then
.addnew
else
.edit
end if
!DeinFeld = "irgendwas"
!DeinanderesFeld = "irgendwasanderes"
...
.update
.close
set rs = nothing

HTH
Henry
--
Wichtig: Anmeldetermin für die AEK (siehe FAQ) nicht verpassen!
Keine E-Mails auf Postings in NGs senden!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Loading...