![]() |
Datenbank: ADS Local • Version: 7.1 • Zugriff über: ADS Connection & DataSet
ADS Table und Restructure
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:
Nach dem Aufruf kommt folgende Exception vom ADS:
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; '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 |
Re: ADS Table und Restructure
keine Ahnung, was da schiefgeht (und habe auch nicht unbedingt die Zeit, das jetzt nachzubauen), aber ich rate Dir zu SQL:
SQL-Code:
ALTER TABLE benutzer ALTER COLUMN login login char(15);
|
Re: ADS Table und Restructure
Zitat:
Hast Du irgendwelche Tips wie man das Index-File am besten löscht und wieder aufbaut? Auch per SQL?! Ich würde es per "procedure AdsDeleteIndex( strTag : String );" versuchen. mfg, Trocki |
Re: ADS Table und Restructure
Zitat:
SQL-Code:
alle Indize bekommen, welche Du dann mit
SELECT name from system.indexes where parent='meine_tabelle'
SQL-Code:
löschen kannst. Mit ADS 8.0 zB in einem Script:
Drop index meine_tabelle.indexname
SQL-Code:
declare idx cursor as select name from system.indexes where parent='meine_tabelle';
declare st string; open idx; while fetch idx do st='drop index meine_tabelle.'+idx.name; execute immediate st; end while; |
Re: ADS Table und Restructure
Well, hat soweit alles funktioniert. Vielen Dank für die Hinweise. SQL scheint in jeden Fall die erste Wahl zu sein...
btw: Habe bei den Recherchen zu der Thematik deine Tutorials zu ADS im "Entwickler" gefunden... freut mich das ich hier so prominente Unterstützung gefunden habe :-D mfg, Trocki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz