Petit problème avec vb6 et mysql

Petit problème avec vb6 et mysql - VB/VBA/VBS - Programmation

Marsh Posté le 03-01-2006 à 14:16:58    

Salut, j'ai un petit problème, je fais un programme qui partage une bd mysql, donc au démarrage je fais une tentative de connection. Le problème, c'est que lors du premier démarrage il n'y a pas de nom de serveur, username, login, etc. Donc pour la connectionstringdu premier démarrage, c'est: Server=;Port=;UID=; etc.
 
Étant donné que je ne spécifie rien, je m'attendais à ce qu'il renvoit une erreur de connection, mais non :(
 
Alors ma fenêtre qui demande d'enter les informations de connection n'apparait pas, puisque la connection ne retourne pas d'erreur.
 
On dirait qu'il ne tente qu'une connection avec le driver, simplement.
 
Comment faire pour corriger ce problème ?
 
Ah oui je place mes informations de connection avec: SaveSettings et GetSettings dans la base de registres.
 
Merci.  :hello:

Reply

Marsh Posté le 03-01-2006 à 14:16:58   

Reply

Marsh Posté le 03-01-2006 à 14:35:35    

ben regarde si les valeur de server, port ou UID sont vides et tu sauras si tu en es à ton premier démarrage ou non


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 03-01-2006 à 15:16:54    

mareek a écrit :

ben regarde si les valeur de server, port ou UID sont vides et tu sauras si tu en es à ton premier démarrage ou non


 
C'est ce que je me suis dit, mais il me semble qu'il devrait y avoir une façon plus élégante, de plus, si je passe par un DSN, si je créé un DSN vide par exemple, il me sort bien une erreur de connexion.
 
Mais d'un autre côté je trouves ça redondant d'avoir les informations de connexion dans un DSN et dans le registre.

Reply

Marsh Posté le 03-01-2006 à 15:30:58    

swampdrg a écrit :

C'est ce que je me suis dit, mais il me semble qu'il devrait y avoir une façon plus élégante, de plus, si je passe par un DSN, si je créé un DSN vide par exemple, il me sort bien une erreur de connexion.
 
Mais d'un autre côté je trouves ça redondant d'avoir les informations de connexion dans un DSN et dans le registre.


C'est une question de point de vue. Personnellement, je trouve que c'est un peu lourd de tester si une chaine est vide en tentant de se connecter à une base de données ;)


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 03-01-2006 à 15:35:48    

mareek a écrit :

C'est une question de point de vue. Personnellement, je trouve que c'est un peu lourd de tester si une chaine est vide en tentant de se connecter à une base de données ;)


 
Moi aussi, mais comment faire autrement ? :)

Reply

Marsh Posté le 03-01-2006 à 15:49:55    

swampdrg a écrit :

Moi aussi, mais comment faire autrement ? :)


Comme je l'ai dit dans mon premeir post : vérifier que les paramètres ne sont pas vides


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 03-01-2006 à 15:51:32    

mareek a écrit :

Comme je l'ai dit dans mon premeir post : vérifier que les paramètres ne sont pas vides


 
Mais comme tu disais, est-ce que ce n'est pas lourd un peu ? Il me semble qu'il doit y avoir un moyen plus pratique ..

Reply

Marsh Posté le 03-01-2006 à 16:00:38    

swampdrg a écrit :

Mais comme tu disais, est-ce que ce n'est pas lourd un peu ? Il me semble qu'il doit y avoir un moyen plus pratique ..


je trouvais lourd de tenter la connection avec les paramètres vides. C'est difficile de faire plus léger que "if ParamServer = vbNullString Or ParamPort = vbNullString Or ParamUID = vbNullString then" ;)


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 03-01-2006 à 16:10:57    

mareek a écrit :

je trouvais lourd de tenter la connection avec les paramètres vides. C'est difficile de faire plus léger que "if ParamServer = vbNullString Or ParamPort = vbNullString Or ParamUID = vbNullString then" ;)


 
Ah ok :)
 
Mais comment se fait-il que la connexion s'établisse avec des chaînes vides ? C'est bizarre ..

Reply

Marsh Posté le 03-01-2006 à 16:17:15    

swampdrg a écrit :

Ah ok :)
 
Mais comment se fait-il que la connexion s'établisse avec des chaînes vides ? C'est bizarre ..


il doit mettre des paramètres par défaut genre localhost et il tombe sur un serveur existant.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 03-01-2006 à 16:17:15   

Reply

Marsh Posté le 03-01-2006 à 16:30:40    

Comment n'y ais-je pas pensé plus tôt :D
 
Aussi je me demandais comment bien gérer le partage de la bd dans mon application ?
 
Mon application pourra être installé sur plusieurs postes, on peut y ajouter des noms de personnes dans la table, adresses, etc. Il y a aussi des fenêtres dans lesquels il y a des listbos et des combobox dont le contenu est remplie avec les données des tables.
 
Mais comment gérer le partage ? Par exemple, pour rafraîchir les listbox avec les données qui sont dans la table, ainsi que les combobox, je vois mal mettre un timer qui rafraîchit la listbox à toute les secondes.. De plus, je ne sais pas comment je pourrais gérer le fait que si quelqu'un essaye d'utiliser un nom de personne qui est dans une table, et qu'un autre usager, essaye de l'effacer. J'avais idée d'y ajouter un champ "lock" avec le nom d'usager et le nom du poste de qui est en train de l'utiliser ..
 

Reply

Marsh Posté le 03-01-2006 à 16:39:44    

Le plus simple c'est dignorer le problème :D
Générallement, ce genre de situation est très rare en pratique. Après, si tu te trouves dans un cas où ça arrive, commence par faire un lock sur les données dès que l'utilisateur accède à un écran où il peut les modifier.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 03-01-2006 à 16:50:48    

mareek a écrit :

Le plus simple c'est dignorer le problème :D
Générallement, ce genre de situation est très rare en pratique. Après, si tu te trouves dans un cas où ça arrive, commence par faire un lock sur les données dès que l'utilisateur accède à un écran où il peut les modifier.


 
Ok :)
 
Mais pour faire un lock est-ce que il y a quelque chose qui me permet de faire ça avec mysql ou si je dois faire un champs lock_user avec le nom de la machine ? je voudrais pouvoir informer l'usager, qui est-ce qui à locké les données.  ;)  
 
Pour le moment j'initialise Ado avec le curseur aduseclient. et j'ouvre mes recordset avec adOpenKeyset, adLockBatchOptimistic

Reply

Marsh Posté le 03-01-2006 à 17:02:06    

Avec des tables MyISAM, tu ne peux verrouiller que la table dans son entièrereté. C'est chiant.
 
Voir les instructions LOCK et UNLOCK dans le manuel MySQL.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed