Autor Beitrag
Kalli
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Di 29.07.03 12:36 
Mein Problem:

Ich habe aktuelle Daten im Verzeichnis A und gemeinsame Daten im Verzeichnis B. Für jedes Verzeichnis gibt es einen Alias. Bei der Datenzusammenstellung für eine Liste benutze ich eine Query-Abfrage und suche mir die Daten aus den verschiedenen Tabellen zusammen. Jetzt hab ich das Problem, dass nur ein Alias als Databasename eingetragen werden kann. Aus diesem Grund ist die SQL-Abfrage der Meinung, dass sie eine Tabelle mit dem anderen Alias nicht finden kann.

Wer weiss rat?

Kalli
Taladan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88


Delphi 2005 Personal
BeitragVerfasst: Di 29.07.03 17:22 
Obwohl ich erst neu dabei bin, hab ich schon das Problem bei einer Anwendung von mir vorraus gesehen . Deshalb arbeite ich NUR mit reelen Pfaden. d. h. ohne Alias. (Zweiter Nachteil, der Alias muß bei weitergabe auch weitergegeben werden)

TTable: Ich programmiere als erstes die gesamte Anwendung mit festen Pfaden, die ich nutze. Als
DatabaseName := c:\projektxy\daten1 (reelle Pfadangabe);
TableName := daten1.db (also wie bisher)

Im Query wird das ganze schwiriger. Da mußt du die sql-anweisung so schreiben, das sie (noch auf deinen PC) funktionier mit Reellen Pfadangaben. Das sollte net weiter schwer sein.

Wenn deine Anwendung fertig ist, schreibste ins Formcreate-Ereignis die entsprechenden Daten als Anweisung: (Trotzdem die Stammanweisungen belassen, da Delhi sonnst nicht Compilieren kann)

Während der Laufzeit deinen Table die Anweisungen geben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.FormCreate(Sender: TObject);
var verz : string;
begin
     verz := ExtractFilePath(ParamStr(0))+ 'DB';
     Query1.Active := False;
     TableArtikel.ACTIVE := False;
     try
        TableArtikel.DatabaseName := verz;
        TableArtikel.TableName := 'Artikel.db';
        TableArtikel.Active := True;
     except
           MessageBeep(0);
           ShowMessage ('Die Tabelle Artikel.db' + #10#13 +
                'sich nicht im Unterverzeichnis "DB"')
     end  

end;

Noch besser währe es natürlich bei fehler, statt einer Fehlermeldung die Tabelle zu erstellen.

Ähnlich gehst du dann mit deinen Query vor.

Da ich z. Z. keinen ensprechenden Code im Kopf habe (SQL ist noch ein sprung zu hoch für mich zur zeit, hier nur die beiden wichtigsten Befehle.

ausblenden Delphi-Quelltext
1:
2:
query1.sql.clear;
query1.sql.add([Deine Anweisung mit Pfaden]);


Ich hoffe das hilft dir ein wenig weiter.

Grüße
Tala