Problem beim Editieren eines bestimmten DB-Feldes (war: Hilfegesuch)
-
Hallo,
der als Variable deklarierte KFZwert übergibt mir aus einer anderen Form
eine Versicherungsnummer um einen Vergleich durchführen zu können.
Wurde der gesuchte und gefundene Datensatz bearbeitet, wird er über Post geschlossen. Hierbei sollen 8 Einträge in eine andere Datenbank zusätzlich eingetragen werden und zwar so:DataModule1->Query2->Close(); DataModule1->Query2->Close(); DataModule1->Query2->SQL->Clear(); DataModule1->Query2->SQL->Add("Select * From Adressenliste.DB Where"); DataModule1->Query2->SQL->Add("Versicherungsnummer = '" + KFZwert + "'"); DataModule1->Query2->Open(); DataModule1->Query2->Edit(); DataModule1->Query2->Fields->Fields[2]->AsString = EditKundennummer->Text; //Kundennummer DataModule1->Query2->Fields->Fields[7]->AsString = DBComboBox1->Text; //Versicherungsart DataModule1->Query2->Fields->Fields[6]->AsString = EditVersicherungsnummer->Text; //Versicherungsnummer DataModule1->Query2->Fields->Fields[8]->AsString = EditVersicherungsbeginn->Text; //Versicherungsbeginn DataModule1->Query2->Fields->Fields[9]->AsString = EditGesamtlaufzeit->Text; //Gesamtlaufzeit DataModule1->Query2->Fields->Fields[3]->AsString = EditBeitragshhe->Text; //Beitragshöhe DataModule1->Query2->Fields->Fields[4]->AsString = EditBeitragszahlungsdatum->Text; //Beitragszahlungsdatum //DataModule1->Query2->Fields->Fields[1]->AsString = EditID->Text; //ID DataModule1->Query2->Post(); DataModule1->Query2->Close();Möchte ich die Versicherungsnummer (Fields[6])ändern wird mir mein schon vorhandener Datensatz komplett geleert. (nicht gelöscht)
Alle anderen Einträge funktionieren. Warum die Versicherungsnummer nicht ?
Ich bin bald am verzweifeln

mfg
TraugottEdit:
Bitte die Code-Tags benutzen und aussagekräftige Überschriften wählen. Danke!
-
Hallo
ich sehe aus deinem Code nicht heraus, was deinen Datensatz leert.
Deshalb einfach mal zwei Tips :
- Ist das Feld 1 wirklich das richtige? Am besten ist es eigentlich, die Felder nicht über die Nummern, sondern über DataSet->FieldByName(<FieldName>) anzusprechen. Das schützt vor Verwechselungen.
- Was befindet sich in EditID->Text? Vielleicht Sonderzeichen? Teste mal einen Normalen String wie "Test"bis bald
akari
-
Hallo,
habe einen normalen String getestet ohne irgend welche Zeichen -> es geht nicht.
Der Datensatz ist nach einer Abänderung in der Versicherungsnummer immer geleert.
Zeichen wie -,/, sollten funktionieren.mfg
Traugott
-
Hallo
Was für ein Typ genau hat das Feld in der Datenbank?
Sind auf dem Feld irgendwelche Indexe oder ist es unique?bis bald
akari
-
Hallo,
alle Felder sind Textfelder und ohne Index.
mfg
Traugott
-
Hallo
ich seh immer noch kein Anhaltspunkt.
hast du schon probiert, das Update direkt per SQL-Befehl auszuführen?
also so etwaDataModule1->Query2->SQL->Clear(); DataModule1->Query2->SQL->Add("UPDATE Adressenliste.DB SET "); DataModule1->Query2->SQL->Add("<FeldName2> = '" + EditKundennummer->Text + "',"); DataModule1->Query2->SQL->Add("<FeldName7> = '" + DBComboBox1->Text + "',"); ... DataModule1->Query2->SQL->Add("<FeldName4> = '" + EditBeitragszahlungsdatum->Text + "'"); DataModule1->Query2->SQL->Add("WHERE Versicherungsnummer = '" + KFZwert + "'"); DataModule1->Query2->SQL->ExecSQL(); // Update ausführenbis bald
akari
-
Hallo,
habe folgendes probiert:DataModule1->Query2->Close();
DataModule1->Query2->Close();
DataModule1->Query2->SQL->Clear();
DataModule1->Query2->SQL->Add("UPDATE Adressenliste.DB SET ");
DataModule1->Query2->SQL->Add("Versicherungsnummer = '" + DBEdit2->Text + "',");
DataModule1->Query2->SQL->Add("Versicherungsbeginn = '" + DBEdit18->Text + "'");
//...
//DataModule1->Query2->SQL->Add("<FeldName4> = '" + EditBeitragszahlungsdatum->Text
//+ "'");
DataModule1->Query2->SQL->Add("Where Versicherungsnummer = '" + Bausparenwert + "'");
DataModule1->Query2->ExecSQL();ein ändern des Versicherungsbeginns ist OK. Beim Ändern der Versicherungsnummer sind die beiden Werte die upgedatet werden sollen leer.
mfg
Traugott
-
Hallo,
nach vielem Probieren hab ich gelöst.
Nach dem Vergleich der Versicherungnummer lese ich die RecNo aus und kann somit die Versicherungsnummer ändern.Vielen Dank!
mfg
Traugott