BDD

Résolu
gon_ak Messages postés 197 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 17 novembre 2006 - 19 juin 2006 à 13:43
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018 - 21 juin 2006 à 15:10
Salut,

Pourquoi mon code indique une erreur à la ligne OpenRecorset sachant que dans référence j'ai coché Microsoft DAO 3.6 Library

Option Explicit
' variables communes à toutes les commandes
Dim DB As Database
Dim ra As Recordset

Private Sub Form_Load()
'déclaration de la BDD et des Tables'
Set DB = OpenDatabase("C:\Documents and Settings\Mes documents\bdd\B401DataReport.mdb")
Set ra = DB.OpenRecordset("ShiftReport", dbOpenDynaset)
End Sub

Merci d'avance

19 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juin 2006 à 14:00
Re,

<samp>' Connection à la base</samp>
Dim sql As String
Set
db = DBEngine.Workspaces(0).
OpenDatabase
("C:\Documents and Settings\Mes documents\bdd\B401DataReport.mdb") 
'<samp> Assignation de la requète</samp>
sql = <var>"SELECT LeNomDuChamps FROM LeNomDeLaTable"</var>c'est ça qui te manque (la reqête)
<samp>' Exécution de la requète et récupération du jeu d'enregistrement</samp>
Set
Rs = db.
OpenRecordset
(sql) 
<samp>' Si il n'y a pas d'enregistrements, on saute le traitement</samp>
Rs.
MoveFirst

Do While 
Rs.
EOF
Then

' Affichage dans un Listbox
NomDeTaListBox.AddItem = Rs!LeNomDuChamps

Loop
 

<samp>' Fermeture du jeu d'enregistrement    </samp>
Rs.
Close
 
<samp>' Fermeture de la base    </samp>
db.
Close


@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>  Mortalino 

Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
3
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018
19 juin 2006 à 14:02
quel est le texte et le N° de ton erreur ?

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juin 2006 à 14:08
713763
erefdatacomputing
 : pour le détail, lis mon Post.
Sa syntaxe est incomplête (manque requête + affichage du jeu des enregistrements)

@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>  Mortalino 

Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
0
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018
19 juin 2006 à 14:47
à Que Néni mon Seigneur !!!
Sa synthaxe est correcte !!!  La votre aussi par ailleurs !!!
J'en tiens pour preuve le grand nombre d'applications que j'ai personnellement créé et faisant appelle à des BDD ACCESS par le biais de procédures identiques au sieur gon_ak !!!
 
Mais je pense qu'il a soit:

un conflit relativement courant de VB6 qui consiste parfois à ne pas reconnaitre les déclaration de variables, et des références (et/ou composant), si par malheur, on essaye de les utiliser avant !!!

Ou alors:

l'erreur est du style 'Format de Base de Données non conforme' et il lui faut cocher 'Microsoft DAO 3.5 Object Library' ou  le 3.51.

Ou alors:

Cela dépend de l'erreur afficher...  d'où mon message
                'quel est le texte et le N° de ton erreur ? '

Bonjour chez vous
.........

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
0

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

Posez votre question
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018
19 juin 2006 à 14:48
à Que Néni mon Seigneur !!!
Sa synthaxe est correcte !!!  La votre aussi par ailleurs !!!
J'en tiens pour preuve le grand nombre d'applications que j'ai personnellement créé et faisant appelle à des BDD ACCESS par le biais de procédures identiques au sieur gon_ak !!!
 
Mais je pense qu'il a soit:

un conflit relativement courant de VB6 qui consiste parfois à ne pas reconnaitre les déclaration de variables, et des références (et/ou composant), si par malheur, on essaye de les utiliser avant !!!

Ou alors:

l'erreur est du style 'Format de Base de Données non conforme' et il lui faut cocher 'Microsoft DAO 3.5 Object Library' ou  le 3.51.

Ou alors:

Cela dépend de l'erreur afficher...  d'où mon message
                'quel est le texte et le N° de ton erreur ? '

Bonjour chez vous
.........

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
0
gon_ak Messages postés 197 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 17 novembre 2006
19 juin 2006 à 15:12
L'erreur qu'il affiche c'est Erreur d'exécution 13 Type incompatible. J'ai essayé avec la version 3.51 mais nada
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juin 2006 à 15:14
Je n'ai jamais dit que sa syntaxe était incorrect, j'ai dit incomplête.

Il faut une requête (que VB ne devine pas tout seul) et les enregistrements ne s'affichent pas par magie dans son (ou ses) contrôle(s). 

Mais s'il y a une combine, je suis preneur. Si t'arrives avec ses deux lignes à afficher quelquechose, pareil, je suis preneur de ton code.



















@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>


  Mortalino 





Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le 
règlement
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
19 juin 2006 à 15:14
Salut,
Puis-je ajouter mon grain de sel ?
C'est quoi "ShiftReport" ? Une requête stockée ? Une table ? ....
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juin 2006 à 15:19
Salut Dolphin Boy !

AAAAAIIIIIIIDE MOI !  j'ai raison ou non ? (je peux me permettre d'avoir l'air bête avec mon avatar mais bon...)

Je pense que ShiftReport est soit une table, soit un champs




















@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>


  Mortalino 





Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le 
règlement
0
gon_ak Messages postés 197 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 17 novembre 2006
19 juin 2006 à 15:19
ShiftReport est le nom de ma Table
0
gon_ak Messages postés 197 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 17 novembre 2006
19 juin 2006 à 15:25
Je l'ai précisé juste au dessus que ShiftReport est le nom de la Table de ma base de donnée:401DataReport.mdb
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
19 juin 2006 à 15:27
mortalino > avec la syntaxe de gon_ak, je pensais à une table mais dans ce cas, il fallait mettre dbopentable à la place de dbopenrecordset.


Pour la récupération des données, effectivement, la procédure est incomplète.


Mais ta réponse a été acceptée c'est donc que tu avais raison.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juin 2006 à 15:33
Elle a été accepté pendant que je mettais la réponse.
Mais j'attends toujours le code magique de 713763 erefdatacomputing

En tout cas, merci de ton soutien !



















@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>


  Mortalino 





Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le 
règlement
0
gon_ak Messages postés 197 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 17 novembre 2006
19 juin 2006 à 16:00
Encore une question Mortalino, si tu le permets: Qu'est ce que je dois mettre si je veux mette une Datagrid à la place d'une ListBox stp


DataGrid1.????= Rs!ShiftReport
Est-ce possible d'écrire ceci ainsi? ou alors je suis totalement à coté de la plaque? Merci pour ta réponse
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juin 2006 à 16:57
Décidémment t'as pas de chance avec moi,
je n'ai jamais utilisé le Datagrid (j'en suis encore à la ListBox) mais j'ai trouvé cette source :

http://www.vbfrance.com/codes/INSERT-DATAGRID_34302.aspx

En espérant que celle-ci t'aide !


















@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>  Mortalino 

Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
0
gon_ak Messages postés 197 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 17 novembre 2006
19 juin 2006 à 17:11
Merci infiniment
A++
0
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018
20 juin 2006 à 00:05
pour Mortalino

soit une Bdd (ACCESS 95, ou plus, ça doit marcher aussi...) appelée 'chevaliers'
possédant une table appelée 'Table1'
qui à 2 champs, l'un appelé 'nom', et l'autre 'prénom'

soit une Form avec la case -- Microsoft DAO 3.6 Object Library --
cochée dans les références du projet

une TextBox appelée 'NM'
une autre TextBox appelée 'PNM'
un CommandButton appelé 'Command1' et qui à pour caption 'Précédent'

un autre CommandButton appelé 'Command2' et qui à pour caption 'Suivant'

Option Explicit
Dim DB As Database
Dim ra As Recordset


Private Sub Command1_Click()
On Error Resume Next
ra.MovePrevious
NM = ra!nom
PNM = ra!prénom
End Sub


Private Sub Command2_Click()
On Error Resume Next
ra.MoveNext
NM = ra!nom
PNM = ra!prénom
End Sub


Private Sub Form_Load()
'déclaration de la BDD et des Tables'
Set DB = OpenDatabase("C:\chevaliers.mdb")
Set ra = DB.OpenRecordset("Table1", dbOpenDynaset)
ra.MoveFirst
NM = ra!nom
PNM = ra!prénom
End Sub

' On peut faire la même chose via un DataGrid, et avec une requete SQL....

si tu veux "l'original" donne moi une adresse msn en dialogue privé, et je t'enverras l'exemple ...

salut !!!

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 juin 2006 à 22:35
Salut erefdatacomputing !

En fait je voulais que tu me prouve qu'avec son code (2 lignes) le résultat s'affiche quelque part (ce qui est impossible).

D'où l'utilisation de ma part du mot incomplet (et non incorrect).

Ton code me prouve donc qu'il faut absolument un Recordset + 2/3 méthodes.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
0
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018
21 juin 2006 à 15:10
Soyons Clair:

Pour utiliser, (dans VB6) une Table faisant partie d'une Bdd ACCESS
il y a 2 Possibilitées (entre autres):

1ème posibilité:
-- Microsoft DAO 3.6 Object Library -- cochée dans les références du projet
2 variables dimensionnées (Dim DB as DataBase et Dim ra as RecordSet)

et il faut simplement déclarer dans ta form quelle Bdd utiliser,
(d'où la ligne)   : 

Set DB = OpenDatabase("C:\...Nom de la BDD...")

et quelle table prendre dedans (d'où l'autre ligne)  :

Set ra = DB.OpenRecordset("...Nom de la Table...", dbOpenDynaset)

il n'est pas nécessaire d'utiliser une instruction plus ou moins détaillée du Structured Query Language (SQL pour les nom initiés), mais il est vrai qu'on le peut, par exemple, avec ça, on obtiendrai le même résultat !!:

Set ra = DB.OpenRecordset("SELECT * From Table1", dbOpenDynaset)    

bien entendu, il faut (aussi) manipuler ce qu'on appelle des 'instructions' pour accèder aux données. (ra.MoveNext, ra.MovePrevious, etc..)

Maintenant:

2ème posibilité, (assied toi et regarde !!!!  ce n'est pas un 'code miracle', ni de la 'magie' mais simplement de la 'connaissance' !!!)
Il est possible d'afficher tous les enregistrements d'une table (ou certains de ses champs) avec cette méthode là, et ce:  
                      "SANS AUCUNE LIGNE DE CODE !!!!"

1°) tu poses un ADODC et une DataGrid sur une Form

2°) dans les propriétés du ADODC tu cliques sur 'Personnalisé'
      'Utiliser une chaîne de connexion'  ... 'Créer' ....
      'Selectionner ou Taper un nom de base de données'  ...
      tu indique le chemin et le nom de la Base de données ACCESS
      qui t'intéresse .... 'Tester la Connexion'   .... 
      'Test de Connexion réussi' ... 'Ok' ... 'Ok' ... selectionne l'onglet 
      'RecourdSource' ... 'Type de Commande'  ....  '2 - adCmdTable'
      ... 'Nom de procédure stockée ou de Table' ... 'Ok' .

3°) dans les propriétés de la DataGrid tu cliques sur 'DataSource' ...
      tu selectionnes 'ADODC1'.

4°) fais un click Droit sur la DataGrid et cherche dans le menu qui
      s'ouvre la ligne 'Extraire les Champs'..... cliques dessus, et tu 
       réponds 'Oui' à la question qui t'est posée.

5°) lance l'application et normalement, toute ta table est présente dans
      la DataGrid.

à savoir que tu peut faire le nécessaire pour n'avoir que certains champs de ta table dans la DataGrid en faisant ceci:

 dans les propriétés du ADODC , après avoir testé la connexion, la ou tu doit indiquer le 'RecourdSource', à  'Type de Commande' ,  tu selectionne      '1 - adCmdText'  ( au lieu de '2 - adCmdTable') ... puis, 
      ... 'Texte de la Commande (SQL)' ...  et tu écris ta requète ....
ex: .. SELECT Champ1,Champ5 FROM Table1 Order By Champ5 ..
       puis cliques sur 'Ok'


Tu finis en faisant les 3°), 4°), et 5°) sans rien changer.
et dans ta DataGrid, tu n'auras que les colonnes qui s'appellent Champ1 et Champ5, le tout suivant les enregistrements composants le Champ5, triés par ordre alphabétique.

Résumons:

1ère méthode:
2 lignes   Set DB = OpenDatabase("C:\chevaliers.mdb")
           et Set ra = DB.OpenRecordset("Table1", dbOpenDynaset))
avec des 'instructions' pour faire afficher les données, et des déclarations de variables aupréalablement.

2ème méthode:
0 lignes,  juste 2 objets posés sur un form et une série de déclarations dans les propriétés de ces mêmes objets.

Teste le et dis moi ce que tu en pense ??  les 2 ont leur charme propre !!!

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
0
Rejoignez-nous