Incrementer une table acces et exportation vers fichier text [Résolu]

Signaler
Messages postés
51
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
13 octobre 2012
-
saidmansour
Messages postés
51
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
13 octobre 2012
-
bonjour
j'ai une base de données acces contenant une table carrière avec les champs suivantes:
matricule,nom,prénom,service,direction.
je veux exporter le contenu dans un fichier
sous format
matricule(10char)&nom(40char)&prénom(40char)&service(2 char)& direction (4char)
mais avant de retourner à la ligne je vérifié la ligne suivante si le même matricule j'ajoute:
& service & direction au premier ligne et c'est ça exactement mon pb l'export sans vérification je l'ai déjà fait sans problème mais me manque la vérification. voici mon code

voici mon code source:





Private Sub Command1_Click()
Set MaConn = New ADODB.Connection
MaConn.Provider = "Microsoft.Jet.OLEDB.4.0;"
MaConn.Open "C:\personnel\GCP.mdb"
Set rsttable = New ADODB.Recordset
rsttable.Open "cariére", MaConn, , ,adCmdTable
Open "C:\personnel\EXPORT.txt" For Output As#1
While Not rsttable.EOF

Print#1,& Right("0000000000"+_ Trim(rsttable!matricule),10)& Left(rsttable!Nom +_ Space(40),40)& Left(rsttable!Prenom +_ Space(40),40)&_ Right("00"+_ Trim(rsttable!service),2)& Right("00"+_ Trim(rsttable!direction),2); ""
rsttable.MoveNext
Wend
Close #1
rsttable.Close
Unload Me
End Sub




merci

31 réponses

Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Bonjour,


Dim xMatricule As String,sChaine As String

While Not rsttable.EOF 
  if xMatricule=rsttable!matricule Then
     sChaine=<chaine à concaténer dans ce cas> 
   Else 
     sChaine=<chaine à concaténer dans ce cas>
   End If

Print#1,sChaine

rsttable.MoveNext 
If rsttable.BOF and rsttable.EOF Then Exit Do
xMatricule=rsttable!matricule

Wend 









[] Ce qui va sans dire. va mieux en le disant.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
autrement dit :

Si xMatricule=rsttable!matricule Alors

sChaine=smatricule(10char)&nom(40char)&prénom(40char)& service & direction

Sinon

sChaine=matricule(10char)&nom(40char)&prénom(40char )

c' est pas ça ce que tu as dit, non ?



[] Ce qui va sans dire. va mieux en le disant.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
c' est quoi ce matricule(x) et matricule(x+1) ?

Est-ce que par hasard tu veux comparer l' enregistrement courant avec le suivant ou quoi ?

Si c' est ça, tu n' as pas le choix que d' enregistrer le matricule courant dans une variable (xMatricule) et tout les champs dans une autre variable (sChaine) et de faire un MoveNext.
Puis tu compare le matricule avec la variable xMatricule.

Mais déjà qu' est-ce que tu entends par incrémenter ?
Est-ce qu'il s' agit d' un MoveNext ?

Sois plus clair..
Sinon on va pas s'en sortir. [] Ce qui va sans dire. va mieux en le disant.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
On peut pas écrire rsttable!service(x) et rsttable!service(x+1)...!
De tout façon on peut être à la fois sur un enregistrement et sur le suivant.

Elémentaire cher Watson !

Voilà ce que je te propose:

Dim xMatricule As String, xNom, As String, _
xPrenom As String, xService As String, xDiretion As String

'on se positionne sur le premier et on sauvegarde.
rsttable.MoveFirst

     xMatricule=rsttable!matricule
     xNom=rsttable!nom
     xPrenom=rsttable!prenom
     xService= rsttable!service
     xDirection=rstable!direction

'on passe au suivant
rsttable.MoveNext

rsttable.MoveFirst
While Not rsttable.EOF 
  
    'on teste
   if xMatricule=rsttable!matricule Then
      print#1, xMatricule & xNom & xPrenom & _
            xService & xDirection & _
            rsttable!service & rstable!direction
   
   Else 
       print#, xMatricule & xNom & xPrenom & _
            xService & xDirection

   End If

'On sauvegarde les champs courants avant de passer à l' enregistrement suivant.
 
     xMatricule=rsttable!matricule
     xNom=rsttable!nom
     xPrenom=rsttable!prenom
     xService= rsttable!service
     xDirection=rstable!direction

'on passe au suivant

rsttable.MoveNext 

Wend 












[] Ce qui va sans dire. va mieux en le disant.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
désolé !

'on passe au suivant
rsttable.MoveNext

[] Ce qui va sans dire. va mieux en le disant.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
"je crois il faux introduire la fonction for."



Fais-le alors et reviens-nous avec un code bien "tenté".

PS: S'il te olait, cesses d' ouvrir de nouvelles discussions ça et là.
On en a plusque marre de passer notre temps à balayer et nettoyer..


[] Ce qui va sans dire. va mieux en le disant.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Si c' est pas ça au niveau du premier, voici une autre variante:


Dim xMatricule As String, xNom, As String, _
xPrenom As String, xService As String, xDiretion As String

With rsttable
   'on se positionne sur le premier .
   .MoveFirst
   
While Not .EOF 
  
    'on teste
   if xMatricule=!matricule Then
      print#1, xMatricule & xNom & xPrenom & _
            xService & xDirection & _
            !service & !direction
   
   Else 
       print#, !matricule & !nom & !prenom & _
                 !service & !direction
   End If

'On sauvegarde les champs courants avant de passer à l' enregistrement suivant.
     xMatricule=!matricule
     xNom=!nom
     xPrenom=!prenom
     xService=!service
     xDirection=!direction

'on passe au suivant
.MoveNext 

Wend 
End With




[] Ce qui va sans dire. va mieux en le disant.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Maintenant j' ai compris.

Dim xMatricule As String, sChaine As String

With rsttable
   'on se positionne sur le premier .
   .MoveFirst
   
While Not .EOF 
     xMatricule=!matricule
     sChaine =!matricule & !nom & !prenom 
                 
     Do While Not .EOF And xMatricule=!matricule
        sChaine =sChaine & !service & !direction
         .MoveNext
           
        'très important
         If .EOF Then Exit Do
      Loop
      
      print#, sChaine
  
Wend 
End With









[] Ce qui va sans dire. va mieux en le disant.
Messages postés
51
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
13 octobre 2012

merci c'est très gentil
c'est tout à fais exacte
mais pour la dernière fois
comment exécuter une commande pour
trier la table cariére par matricule croissante
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
ça, il fallait y penser avant !


Set rsttable = New ADODB.Recordset 
rsttable.Open "SELECT * FROM cariére" & _
" ORDER BY matricule;",MaConn, , ,adCmdTable 






[] Ce qui va sans dire. va mieux en le disant.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
rsttable.Open "SELECT * FROM cariére" & _
" ORDER BY matricule;",MaConn, , ,adCmdText


Ceci dit, évites les caractères tels que "é" et "è" dans les noms des tables.

ps: si ta table est indéxée sur matricule, l' ordre est automatique.Pas besoin de trier alors.











[] Ce qui va sans dire. va mieux en le disant.
Messages postés
51
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
13 octobre 2012

désolé mais je n'ai pas compris:

sChaine=<chaine à concaténer dans ce cas>
Messages postés
51
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
13 octobre 2012

bonjour
je n'ai pas compris que voulez vous dire par l'expression suivante:

sChaine=<chaine à concaténer dans ce cas>
Else
sChaine=<chaine à concaténer dans ce cas>
End If
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
je veux exporter le contenu dans un fichier
sous format
matricule(10char)&nom(40char)&prénom(40char)&service(2 char)& direction (4char)
mais avant de retourner à la ligne je vérifié la ligne suivante [b]si le même matricule j'ajoute:
& service & direction /bau premier ligne et c'est ça exactement mon pb





[] Ce qui va sans dire. va mieux en le disant.
Messages postés
51
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
13 octobre 2012

s'il vous plais

j'ai rien compris
Messages postés
51
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
13 octobre 2012

non plus
j’incrémente le table cariére
si matricule(x)=matricule(x+1)
sChaine =matricule & nom & prenom & service(x)& direction(x)& service (x+1)& direction(x+1)

merci
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
sinon ?

[] Ce qui va sans dire. va mieux en le disant.
Messages postés
51
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
13 octobre 2012

exactement c'est ça:

si matricule(x)=matricule(x+1)

print#1, rsttable!matricule & rsttable!nom & rsttable!prenom & rsttable!service(x) & rsttable!direction(x) & rsttable!service(x+1) & rstable!direction(x+1);

si nom
print#, rsttable!matricule & rsttable!nom & rsttable!prenom & rsttable!service &rsttable!direction;
Messages postés
51
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
13 octobre 2012

j'ai une table d'enregistrement nommé cariére;

incrémenté c'est MoveNext
x est un entier pour balayé tous les ligne du table.
je commence par la première ligne de table
si je passe à la deuxième ligne et je trouve que matricule de ligne 1 = matricule de ligne 2
je fait:

print#1, rsttable!matricule & rsttable!nom & rsttable!prenom & rsttable!service(x) & rsttable!direction(x) & rsttable!service(x+1) & rstable!direction(x+1);

si nom

print#, rsttable!matricule & rsttable!nom & rsttable!prenom & rsttable!service &rsttable!direction;

désolé pour le dérangement
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
je veux dire..

'on passe au suivant
rsttable.MoveNext

rsttable.MoveFirst



[] Ce qui va sans dire. va mieux en le disant.
1 2