AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Paradox-DB-Prog Netzwerkfähig ohne BDE
Thema durchsuchen
Ansicht
Themen-Optionen

Paradox-DB-Prog Netzwerkfähig ohne BDE

Ein Thema von Jacuzzi · begonnen am 27. Nov 2006 · letzter Beitrag vom 28. Nov 2006
Antwort Antwort
Jacuzzi

Registriert seit: 31. Aug 2005
20 Beiträge
 
Delphi 7 Professional
 
#1

Paradox-DB-Prog Netzwerkfähig ohne BDE

  Alt 27. Nov 2006, 15:10
Datenbank: Paradox • Zugriff über: ADO
Hallo!

War lange nich mehr hier, bin aber trotzdem mal wieder da


Ich habe eine Paradox-DB mit 6 Tabellen (insgesamt 50 MB reine Daten!).
Das Programm, welches diese DB verwaltet, soll im Netzwerk von einem (Terminal-) Server laufen.
Alle Nutzer sollen das Programm übers Netzwerk starten können (DB liegt auf Server).

Zu meinem Problem:
Die Daten aus der DB sollen "archiviert" werden.
Dies soll so geschehen, dass das komplette Programm (exe + DB) seperat gesichert wird (nicht mehr benötigte Daten werden gelöscht).
Man soll jetz allerdings noch ohne Veränderungen der BDE oder des Programms das "archivierte" Programm mit DB starten können.

Hoffe Ihr habt das soweit verstanden

-> DB Prog soll Netzwerkfähig sein (soweit ich weiß geht das nur mit BDE-Eintrag = statische Pfade zur DB), aber das verhindert es, dass ich das archivierte Prog selbstständig starten kann (weil dafür kein BDE-Eintrag vorhanden ist).

Wie könnte ich das lösen?


Ich dachte mir das eventuell so, dass ich die Pfadangabe des BDE-Eintrags durch Script ändere, eben jeweils für das gestartete Programm (archiviertes oder aktuelles Jahr/DB).


Vielen Danke soweit, Jacuzzi.
Hannes
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Paradox-DB-Prog Netzwerkfähig ohne BDE

  Alt 27. Nov 2006, 15:19
1, Willst Du nun wie im Text mit BDE arbeiten oder im Titel mit ADO?
2, Wie an vielen Posts zu merken ist die Lauffähigkeit von BDE im Netzwerk nicht so einfach herzustellen. Und du willst dann noch mit Terminalserver und vielen DB's arbeitn . Also ich würde sagen such dir erst mal 'ne pflegeleichtere DB bevor du viel Zeit investierst um die vielen Probleme der BDE zu umschiffen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Paradox-DB-Prog Netzwerkfähig ohne BDE

  Alt 28. Nov 2006, 09:34
Hallo,

sowohl mit BDE als auch mit ADO muss der Pfad nicht
fest (per Alias in der BDE) gesetzt sein.
Er kann auch in einer Ini stehen.

Über Query.DataBaseName kann z.B. der Pfad von Hand gesetzt werden
(vorher wird er z.B. aus einer Ini gelesen).

Die könntest dein Program so ändern,
dass es in einer Ini (in dem gleichen Verzeichnis)
nach einem Pfad sucht und den verwendet.
Gibt es den Pfad nicht, wird der Alias verwendet.
Bei ADO hast du ja eh nen Connection-String,
den kann man auch von Hand zusammenbauen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Jacuzzi

Registriert seit: 31. Aug 2005
20 Beiträge
 
Delphi 7 Professional
 
#4

Re: Paradox-DB-Prog Netzwerkfähig ohne BDE

  Alt 28. Nov 2006, 09:44
Zitat von hoika:
Hallo,

sowohl mit BDE als auch mit ADO muss der Pfad nicht
fest (per Alias in der BDE) gesetzt sein.
Er kann auch in einer Ini stehen.

Über Query.DataBaseName kann z.B. der Pfad von Hand gesetzt werden
(vorher wird er z.B. aus einer Ini gelesen).
[...]

Heiko
Okay, aber Query.DataBaseName kann ich doch nur einen BDE-Eintrag zuordnen und nicht einen Pfad (wo die Tabellen liegen).

Und der BDE-Eintrag is doch statisch (kann während der Laufzeit nicht geändern werden), oder etwa doch.!?
Hannes
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Paradox-DB-Prog Netzwerkfähig ohne BDE

  Alt 28. Nov 2006, 10:07
Hallo,

DataBaseName kann auch ein Pfad sein,
zumindestens bei Paradox unter der BDE.
Besser wäre allerdings, eine richtige TDataBase zu verwenden,
dort kann natürlich der Pfad ebenfalls festgelegt werden.

Vorteil: Man muss nicht bei jeder Query ran.


Heiko
Heiko
  Mit Zitat antworten Zitat
Jacuzzi

Registriert seit: 31. Aug 2005
20 Beiträge
 
Delphi 7 Professional
 
#6

Re: Paradox-DB-Prog Netzwerkfähig ohne BDE

  Alt 28. Nov 2006, 10:17
Gut.

Database1.DatabaseName := 'tabellen\'; // Datenbank den Tabellen-Pfad zuweißen

Un mit was greif ich dann auf diese Database1 zu?
Bei der Query lässt sich als Databasename nicht "Database1" eintragen.


Wie mach ich das, ich blick da gerade nich durch
Hannes
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Paradox-DB-Prog Netzwerkfähig ohne BDE

  Alt 28. Nov 2006, 10:31
Hallo,

viell. mal die Hilfe bemühen ? Mensch

DataBase1.DataBaseName:= 'db';
DataBase1.Directory:= sDirName; // was auch immer du ausgelesen hast

Query.DataBaseName:= DataBase1.DataBaseName;

Noch ein paar Anmwerkungen:
1. keine relativen Pfaden benutzen
(gibt nur Ärger, wann im WorkDir bei Windows was anderes steht)
2. Mit extractFilePath(Application.ExeName)
kann der Pfad der aktuellen Anwendung einfach ermittelt werden


Heiko
Heiko
  Mit Zitat antworten Zitat
Jacuzzi

Registriert seit: 31. Aug 2005
20 Beiträge
 
Delphi 7 Professional
 
#8

Re: Paradox-DB-Prog Netzwerkfähig ohne BDE

  Alt 28. Nov 2006, 10:37
Schönen Danke soweit.


Aber wie läuft es jetzt, wenn ich das Programm übers Netzwerk vom Server aus laufen lassen will?

Z.B. die Paradox Einstellungen aus der BDE, wie diese blöden Sperr-Dateien (PDOXUSRS.NET und/oder PDOCUSRS.LCK).

Geht das dann noch, sonst kamen da immer Zugriffsprobleme, beim gleichzeitigen Aufruf des Programms von mehreren Usern im Netz.
Hannes
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Paradox-DB-Prog Netzwerkfähig ohne BDE

  Alt 28. Nov 2006, 11:34
Hallo,

NET DIR hat damit überhaupt nichts zu tun.
Das musst du natürlich wie immer setzen,
also so, dass alle Nutzer ein gemeinsames Verzeichnis haben.

Für das Archiv-Programm:
Das wird ja auch übers Netz gestartet, also wird das gleiche NET-Verzeichnis genommen.

Für Datenbank übers Netz:
Was denn nun, Terminalserver, übers Netz ???
Bitte genauer ausdrücken!

Falls sowohl Terminalserver als auch übers Netz gearbeitet werden soll,
muss NET DIR auf einen gemeinsames Verzeichnis gesetzt sein.
Das kann z.B. eines auf dem eigentlichen Server sein.
Bsp der Dateien auf dem Server

c:\data\db -> Datenbank-Pfad
c:\data\common -> Net Dir

c:\data wird jetzt freigegeben und z.B. als Z verknüpft.

Dann wäre z:\db der Datenbank-Pfad und z:\common das NET DIR.

Beim PrivateDIR gibt es allerdings Probleme.
Dass solltest du per Programm setzen.

Beim Terminalserver muss jeder Nutzer ein eigenes Verzeichnis
dafür haben (z.B. das TEMP).
Falls die sich alle über einen den gleichen User anmelden (zu wenig Lizenzen),
hast du ein Problem. Das kannst du dann nur per Codieren ändern (?).
Z.B. könntest du ein Login-Form einbauen mit eindeutigen Usernamen
und die Usernamen als Unterverzeichnis des Temp anlegen und dort das Private setzen.
Dazu darf die DB natürlich noch nicht offen sein.

Also der Terminalserver sähe dann so aus.

c:\temp (als Bsp, ich weiss das dass under Dokument und bla steht).
c:\temp\mueller -> privare dir mueller
c:\temp\meier -> private dir meier


Unterhalb des Programms würde ich das nicht anlegen,
das gibt spätestens mit Vista Problem (UAC).

Wie man das PrivateDir per Code setzt, steht in der Hilfe.
(Ich glaube unter TSession).


Heiko
PS:
Wie du siehst, ist das alles nicht so einfach bei Paradox.
Nimm lieber ne andere DB (Firebird2 z.B.)
Heiko
  Mit Zitat antworten Zitat
Jacuzzi

Registriert seit: 31. Aug 2005
20 Beiträge
 
Delphi 7 Professional
 
#10

Re: Paradox-DB-Prog Netzwerkfähig ohne BDE

  Alt 28. Nov 2006, 11:40
Danke für deine Bemühungen, aber ich glaube wir haben aneinander vorbei geredet (bzw. ich hab mich falsch ausgedrückt) *sry

Ich mach es jetzt so, dass ich den BDE Eitnrag lösche und dann einen mit richtigem Pfad wieder neu erzeuge:

Delphi-Quellcode:
  DbiInit(nil);

  // Erstellen eines BDE-Eintrags
  try
    DbiAddAlias(nil, 'TEST', 'paradox', 'PATH:c:\TEST', True);
    DbiCfgSave(nil, nil, True);
  except
    ShowMessage('BDE Fehler!');
  end;

  // Löschhen eines BDE-Eintrags
  try
    DbideleteAlias(nil,'TEST');
    DbiCfgSave(nil, nil, True);
  except
    ShowMessage('BDE Fehler!');
  end;

  DbiExit();

btw. Eine andere DB kommt aufgrund von Kompatibilitäts-Problemen mit anderen Firmen leider nicht in Frage.



Ciao Jacuzzi.
Hannes
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz