ADS und Index löschen

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

ADS und Index löschen

Beitrag von Manfred »

Ohne den ADS mache ich es immer folgendermaßen:

DBF öffnen
Index öffnen und kompletten Aufbau mit Vorgabe vergleichen um festzustellen, ob sich was geändert hat im Schlüssel usw.
Wenn sich was geändert hat, dann wird die DBF wieder geschlossen, der Index gelöscht und dann automatisch neuerstellt. Somit ist alles erschlagen.
Jetzt muß ich aber eine Routine entwickeln, die das unter ADS löst. Löschen des Index als Datei geht ja nicht. Also muß ich die Tabelle nebst Index öffnen und dann dem ADS sagen, lösche mal fix den Index, damit er neu erstellt werden kann. Im Architekten ist mir aufgefallen, dass man alle TAGS einzeln löschen muß um dann durch die Löschung des letzten TAGS den Index komplett zu entfernen. Wie bringe ich dem ADS das per SQL bei und wie löst man sowas generell elegant?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ADS und Index löschen

Beitrag von Jan »

Manfred,

es steht ja auch in diesem zusammenhang noch das Problem im Raum, das Du es entgegen allen gegenteiligen Vermutungen und Aussagen es unter FOXCDX schaffst, auf eine shared auch von andeern Nutzern geöffneten dbf einen neuen Tag erstellen kannst. Was aber unter ADS eben nicht mehr funktioniert - also eher so wie man das normalerweise erwarten würde.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: ADS und Index löschen

Beitrag von Manfred »

Nun, das würde natürlich nicht klappen in meinem System, weil die Indexdatei ja vorher gelöscht werden müßte. Aber einen zusätzlichen index aufbauen zu einer geöffneten Datei, den ich dann nur alleine benutze, das klappt auf jeden Fall. Sonst hätte es ja schon längst mal geknallt im System..
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: ADS und Index löschen

Beitrag von nightcrawler »

Die Lösung ist - wie fast immer mit Data Dictionary - SQL: https://www.jd-engineering.de/drop-all- ... ven-table/
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: ADS und Index löschen

Beitrag von Manfred »

HI Joachim,

sorry, wenn ich jetzt ein wenig dumm frage: Ich wollte das aus Xbase++ heraus machen und dachte da gibt es einen SQL Befehl für. Was weiß ich sowas wie Delete TAG from indexname oder so ähnlich. Das vielleicht in einer Schleife für alle Tags. Die kann ich ja ermitteln und dann nach und nach löschen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: ADS und Index löschen

Beitrag von nightcrawler »

Hallo Manfred,
Manfred hat geschrieben:Ich wollte das aus Xbase++ heraus machen und dachte da gibt es einen SQL Befehl für. Was weiß ich sowas wie Delete TAG from indexname oder so ähnlich. Das vielleicht in einer Schleife für alle Tags. Die kann ich ja ermitteln und dann nach und nach löschen.
der Befehl ist im Skript versteckt:

Code: Alles auswählen

DROP INDEX [tabelle].[tagname]
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: ADS und Index löschen

Beitrag von Manfred »

ah, dachte ich es mir.

Aber mir fällt noch was ein. Kann man nicht auch den einzelnen Indextag modifizieren, so wie man auch die Struktur der Tabelle modifizieren kann? Oder wäre es dann sinnvoll zu ermitteln, welche(r) Tag(s) angepasst werden müßten und dann nur die einzelnen Tags löschen um sie dann wieder mit neuem Inhalt hinzuzufügen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: ADS und Index löschen

Beitrag von nightcrawler »

Leider erlaubt die System Prozedur sp_ModifyIndexProperty als zu änderte Eigenschaft nur COMMENT. Wenn sich also die Definition für einen Index Tag ändert, muss dieser gelöscht und neu erstellt werden. Das Erstellen geht übrigens auch mit der Option ONLINE und damit on-the-fly im Hintergrund, selbst wenn die Tabelle durch andere Benutzer in Gebrauch ist.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Antworten