Hallo an die Datenbankexperten!
Ich bastel gerade eine Update-Sequenz, die bei zukünftigen Prog.-Releases die ADS-Tabellen auf den benötigten Stand bringen soll. Gleich bei der ersten Übung habe ich so meine Probleme.
Ich möchte ein Feld in einer Tabelle modifizieren, es soll die Feldlänge geändert werden. Die Tabelle gehört zu einer
DB, die im Proggy über eine ADS Connection und dem DataSet geöffnet wird. Die
DB hat ein Passwort und ist encrypted, es existiert ein Index, das Feld selber ist nicht indiziert.
Nach dem Programmstart wird gecheckt, ob die
DB angepasst werden soll. Ist das der Fall, wird ein Formular geöffnet (ShowModal) und folgendes kommt zum Einsatz
Delphi-Quellcode:
with frm_main
do {Tabelle im MainForm deaktivieren}
Table_Benutzer.Active := False;
Try
with Table_Benutzer
do {in dem Formular ist ebenfalls ein DataSet und TAdsTable angelegt}
begin
Exclusive := True;
Active := False;
Restructure('
', '
', '
Login, Login, Char, 15, 0');
{Bin mit nicht sicher ob die syntax stimmt}
Exclusive := False;
end;
Except
on Exception do MessageDlg('
Fehler', mtInformation, [mbOk], 0);
End;
boUpdateInProgress := False;
Screen.Cursor := crDefault;
with frm_main
do
Table_Benutzer.Active := True;
Nach dem Aufruf kommt folgende
Exception vom ADS:
'Table_Benutzer: Error 5119: Error encountered when trying to open a database table. The table is not a database table.'
Hmm, die Tabelle wurde mit dem Data Architect erstellt und der
DB hinzugefügt. Keinerlei Probleme im gesamten Proggy, wo Datensätze gelöscht, hinzugefügt und geändert werden. Was mache ich falsch?
Die Tabelle wird nach dieser Aktion nicht mehr in der
DB geführt, ein Neustart des Proggys nicht möglich.
mfg,
Trocki