Exporter une table sous access avec vb

ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 - 18 juil. 2006 à 19:12
ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 - 20 juil. 2006 à 19:18
Bonjour,

Donc voilà j'ai une base access avec comme table T1 contenant trois champs.

Voici mon code d'exportation:

Private Sub Command1_Click()
Dim SiteSta As dynaset
Dim NbrImageSiteSta As Integer
Dim Vsociete, Vadresse, Vcp As String
Dim chemindataexport_asciiSiteSta As String
chemindataexport_asciiSiteSta = App.Path + "" + "SiteStation.csv"

requete = "select * from T1"
Set SiteSta = gCurrentDB.CreateDynaset(requete)
NbrImageSiteSta = SiteSta.RecordCount

If NbrImageSiteSta > 0 Then
Open chemindataexport_asciiSiteSta For Output As #1
SiteSta.MoveFirst
Do While Not SiteSta.EOF
If SiteSta("Vsociete") <> "" Then Vsociete = CStr(SiteSta("Vsociete"))
If SiteSta("Vadresse") <> "" Then Vadresse = CStr(SiteSta("Vadresse"))
If SiteSta("Vcp") <> "" Then Vcp = CStr(SiteSta("Vcp"))
EmeActive = CStr(-1)
Else
EmeActive = CStr(0)
End If
End If

stringtempA = Vsociete + ";" + Vadresse + ";" + Vcp + ";"

stringtempSiteSta = stringtempA

Print #1, stringtempSiteSta

SiteSta.MoveNext

Loop
MsgBox "End"
SiteSta.Close
Close #1

Else
Exit Sub
End If
End Sub

et dans ma forme, j'ai mis un bouton et commondialog (c'est ce qu'on m'a conseillé de mettre).

L'erreur que j'obtiens avec vb6 est

Compiler error:

User-defined type not defined
sur le deuxième ligne lorsque je déclare

Dim SiteSta As dynaset

Pourriez vous m'aider svp, il s'agit de mon premier programme et je débute encore.

Merci beaucoup pour votre aide.

10 réponses

Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
18 juil. 2006 à 19:50
Salut, essaie avec :
Dim SiteSta As Recordset
0
ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 1
18 juil. 2006 à 20:30
merci et maintenant j'ai une erreur au niveau de la ligne:

Set SiteSta = gCurrentDB.CreateDynaset(requete)

l'erreur indique par rapport au .CreateDynaset(requete)

Compile error:

Function or interface marked as restrictec, or the function uses an Automation type not supported in Visual Basic

D'ailleurs quels instructions dois-je utiliser pour le commonDialog car quand on clique sur le bouton, il faut qu'il indique où enregistrer le .csv.
0
pymaster Messages postés 74 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 14 août 2006
18 juil. 2006 à 20:52
bonjour

Si tu utilise un recordet alors faut que le reste de ton code suivent aussi


Dim SiteStaAs Recordset
Set SiteSta= CurrentDb.OpenRecordset(query)
if not SiteSta.eof then
Do While Not SiteSta.EOF
If SiteSta!Vsociete <> "" Then Vsociete = CStr(SiteSta!Vsociete))
If SiteSta!Vadresse <> "" Then Vadresse = CStr(SiteSta!Vadresse ))
If SiteSta!Vcp <> "" Then Vcp = CStr(SiteSta("Vcp"))
end while


etc ...
0
ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 1
18 juil. 2006 à 21:30
Salut pymaster. Merci pour ta réponse.

J'ai encore du mal avec mon script. J'ai essayé de le simplifié, et ca donne:

Private Sub Command1_Click()
Dim SiteSta As Recordset
Dim NbrImageSiteSta As Integer

Dim Vsociete, Vadresse, Vcp As String
Dim chemindataexport_asciiSiteSta As String
chemindataexport_asciiSiteSta = App.Path + "" + "SiteStation.csv"
requete = "select * from T1"
Set SiteSta = gCurrentDB.OpenRecordset(requete)
NbrImageSiteSta = SiteSta.RecordCount

If NbrImageSiteSta > 0 Then
Open chemindataexport_asciiSiteSta For Output As #1
  SiteSta.MoveFirst
  Do While Not SiteSta.EOF
  If SiteSta("Vsociete") <> "" Then Vsociete = CStr(SiteSta("Vsociete"))
  If SiteSta("Vadresse") <> "" Then Vadresse = CStr(SiteSta("Vadresse"))
  If SiteSta("Vcp") <> "" Then SitCode = CStr(SiteSta("Vcp"))

  stringtempA = Vsociete + ";" + Vadresse + ";" + Vcp + ";"
 
  stringtempSiteSta = stringtempA

   Print #1, stringtempSiteSta

  SiteSta.MoveNext
 
  Loop
  MsgBox "End"
  SiteSta.Close
  Close #1

Else
  Exit Sub
End If
End Sub

Donc, je rappelle à tout hazard, que ma form contient un bouton command1 et un commonDialog qui s'appelle SiteSta. Ma table s'appelle T1 et les trois champs sont T11, T12 et T13 (pour s'implifier)

Donc quand j'éxécute ce script, j'obtiens un msgbox où y a marqué End

Bizarre.

Sinon pymaster, je ne me suis pas trop servi de ton code où t'as utilisé Do While Not SiteSta.EOF car je ne le comprend pas trop.
0

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

Posez votre question
ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 1
18 juil. 2006 à 21:32
Mince excusé moi une erreur de nom de champ dans mon ci-dessus. Je recommance, désolé.

Dim NbrImageSiteSta As Integer

Dim Vsociete, Vadresse, Vcp As String
Dim chemindataexport_asciiSiteSta As String
chemindataexport_asciiSiteSta = App.Path + "" + "SiteStation.csv"
requete = "select * from T1"
Set SiteSta = gCurrentDB.OpenRecordset(requete)
NbrImageSiteSta = SiteSta.RecordCount

If NbrImageSiteSta > 0 Then
Open chemindataexport_asciiSiteSta For Output As #1
  SiteSta.MoveFirst
  Do While Not SiteSta.EOF
  If SiteSta("T11") <> "" Then T11 = CStr(SiteSta("T11"))
  If SiteSta("T12") <> "" Then T12 = CStr(SiteSta("T12"))
  If SiteSta("T13") <> "" Then T13 = CStr(SiteSta("T13"))

  stringtempA = Vsociete + ";" + Vadresse + ";" + Vcp + ";"
 
  stringtempSiteSta = stringtempA

   Print #1, stringtempSiteSta

  SiteSta.MoveNext
 
  Loop
  MsgBox "End"
  SiteSta.Close
  Close #1

Else
  Exit Sub
End If
End Sub

Voilà le code que j'ai utilisé qui donne le msgbox End
0
ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 1
19 juil. 2006 à 05:22
ARF, désolé de déranger encore. Si je peux éditer mon message précédent je le fairai, mais j'ai découvert de honteuses fautes de nom pour mes champs même si au final je reçois toujours le msgBox End.
Voici le code avec les noms de champs exact T11, T12, et T13 qui font partie de la table T1.

Private Sub Command1_Click()
Dim SiteSta As Recordset
Dim NbrImageSiteSta As Integer

Dim T11, T12, T13 As String
Dim chemindataexport_asciiSiteSta As String
chemindataexport_asciiSiteSta = App.Path + "" + "SiteStation.csv"
requete = "select T11, T12, T13 from T1"
Set SiteSta = gCurrentDB.OpenRecordset(requete)
NbrImageSiteSta = SiteSta.RecordCount

If NbrImageSiteSta > 0 Then
Open chemindataexport_asciiSiteSta For Output As #1
  SiteSta.MoveFirst
  Do While Not SiteSta.EOF
  If SiteSta("T11") <> "" Then T11 = CStr(SiteSta("T11"))
  If SiteSta("T12") <> "" Then T12 = CStr(SiteSta("T12"))
  If SiteSta("T13") <> "" Then T13 = CStr(SiteSta("T13"))

  stringtempA = T11 + ";" + T12 + ";" + T13 + ";"
 
  stringtempSiteSta = stringtempA

   Print #1, stringtempSiteSta

  SiteSta.MoveNext
 
  Loop
  MsgBox "End"
  SiteSta.Close
  Close #1

Else
  Exit Sub
End If
End Sub

encore dsl pour ces trois "gros post"
0
ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 1
20 juil. 2006 à 17:11
up
0
ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 1
20 juil. 2006 à 18:14
Ah ok en faite ca marche, c'est parceque le fichier a été créé et donc le msgbox qui disait End voulait tout simplement dire que le fichier a été créer.

Mais la le problème c'est qu'on ne laisse pas à l'utilisateur choisir un nom pour le fichier csv, parceque la le fichier créer automatiquement est SiteStation.csv

Quelqu'un sait comment faire ?
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
20 juil. 2006 à 18:56
Quelque chose comme ça te suffit ?

...
Dim chemindataexport_asciiSiteSta As String
Dim nom_fichier as string
nom_fichier = InputBox("Saisissez le nom du fichier à créer", "CHOIX DU NOM DU FICHIER", "SiteStation")
... ici tes contrôles de validité genre if trim(nom_fichier) = "" then ...
chemindataexport_asciiSiteSta = App.Path + "" + nom_fichier & ".csv"
...
0
ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 1
20 juil. 2006 à 19:18
Si je ne met pas de contrôle de validité quels sont les risques ? Plantage de la bdd ou un truc comme ca ?

Et sinon dernière question pour ce topic:
C'est à propos des requêtes.

J'ai deux tables T1 et T2
Dans la table T1, j'ai les champs T11, T12
Dans la table T2, j'ai les champs T21, T22

J'aimerai savoir comment faire une requete pour prendre le champs T11, T12, T21, T22 ? Je pense qu'il faut utiliser LEFT JOIN mais je n'ai toujours pas compris son fonctionnement.

(Et comme ca lorsque le fichier sera exporté, il contiendra + de champs.)
0
Rejoignez-nous