4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 2013
-
15 août 2011 à 12:34
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 2013
-
17 août 2011 à 12:01
Bonjour à tous,
J'ai repris un code vb6 pour des bases de données Access.
Les bases de données sont faites que une base de donnés a une table. Exemple, base de données « A » à une seule table « a » ainsi de suite. Tous les champs des tous les table sauf les ID sont des strings.
Le code vb6 ouvre toutes les bases et tables au début puis les fermes à la fin (objet DAO). La recherche de valeur ce fait par le listing de tout la table. Une fois que l'on la trouvé dans la table « a » en la liste dans la table « b » ainsi de suite.
En ma demandé de refaire le code sous vb6 en gardant la structure de base de donnée mais pour MSSql.
J'ai donc exporté toute les DB Access dans mon MS SQL. J'ai refait le code sous forme de requêtes. J'ouvre la base de donnée et sa table uniquement dans la fonction qui on a besoin et je la referme. Vu la disposition des table je suis obligé (je crois) de réfère la requête sur la table « b » ainsi de suite.
Malgré tout je suis épaté par le fait que ma version aye plusieurs seconde de retard que la version Access. C vraiment évidant et je ne vois pas pour quoi.
Cela est-il du au fait que j'ouvre trop souvent la connexion ?
Cela est-il du fait que la structure des bases soit stupide ?
Access est-il plus rapide que MySQL ?
Bien que les tables soient tout dans des bases différentes, puis-je tout de même faire des jointures ?
Bien sur je me suis remis en cause (C tjrs par là que je commence). J'ai refait plusieurs fois les fonctions. Mais avant de demander à refaire tout le concept des bases de données, je voudrais avoir votre avis.
Merci.
A voir également:
Une différence de vitesse entre SQL et Access que je ne comprends pas.
ed73
Messages postés276Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention15 avril 20132 16 août 2011 à 19:22
Oui, il faut juste maintenir ta connexion.
On peut faire des jointures entre 2 bases. Tu te connectes à une base puis tu fais une requête SQL qui fait la jointure avec une autre. Par exemple si tu es connecté à la base A et que tu veux une jointure sur la base B :
Select ta.*, tb.*
from a ta, B..b tb
where ta.x = tb.y
Cette syntaxe fonctionne en Sybase, pour MySql ce sera peut-être différent.
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 20133 16 août 2011 à 17:56
Merci de ta réponse.
Tu me demande "quel peut bien être l’intérêt d'avoir une base pour une table ? " Je ne sais pas
Par contre tu me dis "général on se connecte à la base une seule fois au lancement du logiciel et on ferme la connexion à la fin". Si je te comprend bien quand je dois chercher une nouvelle valeur je fais un MaRecordSet.execute (Objet ADO) tout simplement ?
Une dernière question. Peut-on faire une jointeur entre deux table de deux db diff. ?