Pb avec le netfiledir d'un Tsession

cs_mik38 Messages postés 15 Date d'inscription vendredi 1 mars 2002 Statut Membre Dernière intervention 28 juin 2002 - 1 mars 2002 à 12:12
cs_mik38 Messages postés 15 Date d'inscription vendredi 1 mars 2002 Statut Membre Dernière intervention 28 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.

Merci d'avance,

Mikael

8 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
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 ?
0
cs_mik38 Messages postés 15 Date d'inscription vendredi 1 mars 2002 Statut Membre Dernière intervention 28 juin 2002
1 mars 2002 à 14:51
J'ai essayé les 2 manières! (en dur et dynamique)
C'est en accedant 2 fois a la même base avec le meme code.

Tu peux reproduire ce pb avec un Tsession et un Ttable et 3 ligne de codes.

Cordialement

Mikael
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
1 mars 2002 à 23:20
Aurais-tu lancé plusieurs instances de ton application ?
Utilises-tu un composant TDataBase ?
0
cs_mik38 Messages postés 15 Date d'inscription vendredi 1 mars 2002 Statut Membre Dernière intervention 28 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
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;

A+
0
cs_mik38 Messages postés 15 Date d'inscription vendredi 1 mars 2002 Statut Membre Dernière intervention 28 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??

Merci,

Mikael
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
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 :

Session1.Close;
Session1.AutoSessionName:= true;
Session1.NetFileDir:='D:\';
Session1.PrivateDir:='D:\';
Session1.Active:=true;
Table1.SessionName:=Session1.SessionName;
Table1.Active:=true;
table1.Active:=false;
session1.Active: =false;
//table1.Close;

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.
0
cs_mik38 Messages postés 15 Date d'inscription vendredi 1 mars 2002 Statut Membre Dernière intervention 28 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,

Mikael
0
Rejoignez-nous