Datenbank-Tabelle updaten
-
Hallo,
Ich versuche zwei Spalten in einer Access97 Datenbank-Tabelle ändern. Dazu habe ich einen Dialog über den der User eine Phasen_ID auswählt. Dazu wird die Phasen_Beschreibung ausgegeben.
Anschliessend kann der User die neue Phasen_ID und die neue Phasen_Beschreibung eingeben. So weit, so gut!Ich hab das erstmal folgendermaßen probiert:
void CChangePhase::OnOK() { CDaoDatabase db; db.Open("C:\\Database.mdb"); CTabellePhasen rs(&db); UpdateData(TRUE); rs.Open(); rs.Edit(); rs.m_Phasen_ID = m_Phasen_ID_neu; rs.m_Phasen_Beschreibung = m_Phasen_Beschreibung_neu; rs.Update(); UpdateData(FALSE); rs.Close(); db.Close(); CDialog::OnOK(); }Dabei wird allerdings immer nur der 1.Eintrag überschrieben. Inzwischen ist mir auch schon aufgefallen, dass ich nirgens angebe, welcher Datensatz geändert werden soll.
Ich hab jetzt aber auch keine Ahnung, wie ich das mache...
Kann mir von Euch mal eben einer weiterhelfen? Wäre nett!Danke!
-
Hat sich erledigt.
Hab einfach ne Select-Abfrage hinzugefügt, die die Werte, die geändert werden sollen, nochmal ausliest und somit, dann weiss, welche er ändern soll!
-
Kannst du das geänderte mit dem SELECT befehlt mal posten? Stehe vor dem selben Problem...
Habs grad versucht einfach ein UPDATE Query auszuführen, dabei kriege ich aber auch eine Fehlermeldung, daher wollt ich mla deine Variante versuchen.. Wäre klasse
-
IMHO ist es sowieso besser mit SQL-Statements zu arbeiten.
Das macht das ganze flexibler.
-
Hi Vernochan,
Ich hoffe, dass dir das weiter hilft.Ich weiss, dass es bestimmt nicht die eleganteste Lösung ist, aber mir geht es im Moment nur darum, das es funktioniert...
Wenn allerdings jemand den unbedingten Drang dazu verspürt einen besseren Weg zu posten, wär ich auch nicht abgeneigt
CDaoDatabase db; db.Open("C:\\Database.mdb"); CTabelleProjekt rs(&db); rs.Open(AFX_DAO_USE_DEFAULT_TYPE, "SELECT * FROM Tabelle_Projekt WHERE Projekt_ID = '" + m_Projekt_ID + "'",0); UpdateData(TRUE); rs.Edit(); rs.m_Projekt_ID = m_Projekt_ID_neu; rs.m_Projekt_Name = m_Projekt_Name_neu; rs.m_Projekt_Beginn = m_Projekt_Beginn_neu; rs.m_Projekt_Ende = m_Projekt_Ende_neu; rs.m_Projekt_Beschreibung = m_Projekt_Beschreibung_neu; rs.Update(); UpdateData(FALSE); rs.Close(); db.Close();Bis die Tage!
-
hmm... Das hat bei mir auch nicht so richtig funktioniert...
Ich habs jetzt anders gelöst weil ich keine Zeit mehr habe das Gross auszuprobieren(Das Teil muss morgen abgegeben werden.. *g* )
Ich mache jetzt einfach ein UPDATE-SQL Befehl... Is vielleicht nich das besten um portabilität auf andere Datenbanken zu gewährleisten aber das soll bei uns nicht drin sein... Muss nur mit der Oracle Datenbank funktionieren.