DB Angabe im Indexkey [ERLEDIGT]

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

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

DB Angabe im Indexkey [ERLEDIGT]

Beitrag von Manfred »

Hi,

bevor ich jetzt etliche Versuche starte, frage ich vorher mal nach. Folgendes Szenario steht:

1) DBf Name = Test
2) Index aufgebaut auf ein Feld. Nennen wir es mal feld1
3) der Indexkey sieht so aus Upper(test->feld1)

Es steht also im Index die Angabe auf welche DbF es sich bezieht.

was würde theoretisch passieren, wenn man diese DBF in mindestens 2 Selectbereichen öffnet (es werden dann ja automatisch von Xbase++ die Aliasnamen vergeben) und man Änderungen macht?

test->feld1 passt ja dann nur auf den 1.Selectbereich.

der 2.Selectbereich würde ja dann evtl. test_2 heißen.
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
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9394
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 105 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:

Re: DB Angabe im Indexkey

Beitrag von Tom »

Hallo, Manfred.

Wenn Du einen Index so erzeugst:

INDEX ON Upper(test1->name) TO ...

Dann steht dieser Alias-Verweis tatsächlich im Indexausdruck. Beim Auflösen des Indexes bzw. bei der Indexsuche würde dann, bei Verwendung eines anderen Aliases, auf etwas verwiesen, das überhaupt nicht existiert. M.E. müsste es schon beim Öffnen der Indexdatei einen Laufzeitfehler geben.

Ich halte das für keine sehr intelligente Vorgehensweise. Ich kann mir keine Konstellation vorstellen, die einen Alias im Indexausdruck erforderlich macht. Wenn eine Tabelle selektiert wird, wird der Index automatisch mit selektiert. Und wenn man per Alias sucht, geschieht das ebenfalls. Also einfach:
USE Test1
INDEX ON Upper(name) TO Test1
Feddisch. Funktioniert mit jedem Alias, unter dem "Test1" später geöffnet wird. :wink:
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21248
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 211 Mal
Danksagung erhalten: 71 Mal

Re: DB Angabe im Indexkey

Beitrag von Manfred »

Hi Tom,

ich wollte auch nur die Bestätigung, dass ich richtig liege. Ich dachte mir dasselbe. Diese Lösung ist auch nicht von mir. Aber.....

...was zu klappen scheint, dass man die Db mehrmals öffnen kann. Beim Lesen alleine scheint nichts zu passieren. Man kann auch Suchen. Aber ich dachte auch viel mehr daran, dass beim Schreiben im anderen Selectbereich Probleme auftauchen könnten/müßten.
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
AUGE_OHR
Marvin
Marvin
Beiträge: 12913
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: DB Angabe im Indexkey

Beitrag von AUGE_OHR »

Manfred hat geschrieben:1) DBf Name = Test
2) Index aufgebaut auf ein Feld. Nennen wir es mal feld1
3) der Indexkey sieht so aus Upper(test->feld1)
du hast den Alias sicherlich deshalb drin weil er sonst bei -w "meckert".
du kannst aber den Befehl FIELD verwenden, dann "meckert" er nicht und du hast auch bei einem anderen Alias keine Probleme.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15710
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 73 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Re: DB Angabe im Indexkey

Beitrag von brandelh »

Hi,

um das Meckern zu umgehen, kann man index on upper(field->Test) einsetzen, ebenso bei allem was man mit DBLOCATE oder DBEVAL macht.
ein direkter Verweis auf einen Aliasnamen in diesen Befehlen kann gut gehen, ist aber immer eine Fehlerquelle die schwer zu finden ist.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21248
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 211 Mal
Danksagung erhalten: 71 Mal

Re: DB Angabe im Indexkey

Beitrag von Manfred »

Brrr,

warum macht ihr es mir immer so schwer? Oder ist es umgekehrt?

Ich weiß doch wie man es macht, bzw. hatte eine Vorstellung davon und wollte sie nur bestätigt wissen. Bei mir gibt es keine DBF Angabe vor dem Feld. Ich hatte es woanders gesehen und wollte nur noch einmal Gewissheit haben, bevor ich die andere Seite darauf hinweise.
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!!
Antworten