cs_mik38
Messages postés15Date d'inscriptionvendredi 1 mars 2002StatutMembreDernière intervention28 juin 2002
-
1 mars 2002 à 12:12
cs_mik38
Messages postés15Date d'inscriptionvendredi 1 mars 2002StatutMembreDernière intervention28 juin 2002
-
6 mars 2002 à 10:04
Bonjour,
j'ai spécifié le chemin pour le fichier de partage (PDOXUSRS.NET) dans le netfiledir d'un Tsession.
Au 1er accès bases le fichier est crée à l'endroit spécifié mais au 2ème accès il me crée le fichier une fois à l'endroit spécifié + (et c'est là le pb!!) une fois dans le chemin du net dir spécifié pour paradox dans le bde!!
il faut que je trouve une solution sans modifier la config du bde.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 1 mars 2002 à 14:42
La première fois, est-ce que tu crées l'alias dynamiqement au niveau de l'application puis tu le sauvegardes de manière permanente dans idapi.cfg ?
Ou alors, aurais-tu des tables qui utilisent un alias donné puis d'autres tables utilisant un autre alias pointant sur le même dossier de ton disque avec les 2 alias d'ortographe très voisine ?
cs_mik38
Messages postés15Date d'inscriptionvendredi 1 mars 2002StatutMembreDernière intervention28 juin 2002 2 mars 2002 à 09:33
Pas deTdatabase.
Un Tsession, un Ttable.(tout ca a une base paradox)
Tu poses un bouton :
Session1.AutoSessionName:=true;
Session1.NetFileDir:='d:\';
Session1.PrivateDir:='d:\';
Session1.Active:=true;
Table1.Active:=true;
session1.Active:=false;
table1.Active:=false;
table1.Close;
Une seule instance de ton application.
La premiere fois que tu cliques le fichier se crée sur D (tu l'effaces) et au 2ème clique il s'en crée 1 sur D et 1 sur C !!
Malheureusement on n'a pas les sources du bde.pas.
Mikael
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 2 mars 2002 à 13:43
Il manque :
Table1.SessionName:= Session1.SessionName;
En effet, à quoi celà servirait-il de mettre un composant session pour ne pas l'utiliser; résultat, deux sessions pointent sur le même répertoire.
Explication : par défaut, Delphi crée un objet Session par défaut et qui utilise la base de données déclarée dans Table1.DataBaseName.
Puis, dans ton code, tu déclares un eutre objet Session pointant sur le même dossier, il y a donc conflit.
Avant d'ouvrir la table Table1, affectes lui la session que tu viens d'ouvrir quelques lignes auparavant.
Sinon, utilises l'objet Session créé par défaut avec Delphi si tu n'as pas d'utilisation particulière à faire avec ce type de composant.
En résumé :
Session1.AutoSessionName:=true;
Session1.NetFileDir:='c:\';
Session1.PrivateDir:='c:\';
Session1.Active:=true;
Table1.SessionName:=Session1.SessionName;
Table1.Active: =true;
session1.Active:=false;
table1.Active:=false;
table1.Close;
cs_mik38
Messages postés15Date d'inscriptionvendredi 1 mars 2002StatutMembreDernière intervention28 juin 2002 2 mars 2002 à 17:46
Tout d'abord merci beaucoup du mal que tu te donnes.
Je lis ce mesage sur un poste qui n'a pas delphi donc je ne peux essayer.
Cette ligne de code je l'avais pas mis car je l'avait renseigné dans l'inspecteur d'objet.
As-tu essayer??
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 3 mars 2002 à 09:31
Le composant TSession que tu déposes sur la fiche est-il actif au démarrage de l'appli ?
Si oui, effectivement, tu plantes. Par défaut, le fichier pdoxusrs.net est créé sur C:. Or tu ne fermes pas la session avant avant de lui affecter d'autres valeurs. Le code devient donc :
Pour être plus clean, je te recommande de fermer la table Table1 avant de fermer la session...
Notes bien aussi que :
Table1.Active := False
est strictement équivalent à :
Table1.Close
Il est donc inutile d'effectuer DEUX fois le même opération.
cs_mik38
Messages postés15Date d'inscriptionvendredi 1 mars 2002StatutMembreDernière intervention28 juin 2002 6 mars 2002 à 10:04
Salut,
Le Tsession n'est pas actif au démarrage et d'ailleurs je l'active par code.
Si tu as essayé ton code tu t'apercevras que la première fois il le crée sur D et la 2ème sur les C et D.
Merci quand même,