Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > VBScript
VBScript Le forum d'entraide sur VBScript. Avant de poster -> La FAQ VBScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/02/2013, 12h10   #1
botbot
Invité de passage
 
Inscription : février 2013
Messages : 16
Détails du profil
Informations forums :
Inscription : février 2013
Messages : 16
Points : 1
Points : 1
Par défaut Incrémentation de BDD Excel suite impression étiquette

Bonjour à tous,

Voilà j'utilise le logiciel BARTENDER pour imprimer des étiquettes de numéro de série de divers produits, qui se connecte à une base de donnée Excel.
Dans mon exemple, ce sera des voitures pour que ce soit plus facile pour tout le monde...

Voici ma base de donnée type excel :


Code :
1
2
3
4
5
6
7
8
9
10
11

Réf	          Modèledebase	      Incrément
CLIOROUGE	          CLIO	              250
CLIOVERTE	          CLIO	              250
CLIOBLEU	          CLIO	              250
CLIORS	          CLIO	              250
TWINGORROSE	  TWINGO	              125
TWINGO NOIRE	  TWINGO	              125
MEGANEWRC	  MEGANE	              513
MEGANELUXE	  MEGANE	              513
Fonctionnement :

Lorsque j'imprime une étiquette de numéro de série pour une voiture, le soft Bartender se connecte au fichier excel et incrémente l'incrément du modèle de base, donc toutes les réf possibles pour ce modèle.
Exemple : si j'imprime une clio, l'incrément passe de 250 à 251 pour les réf "CLIOROUGE", "CLIOVERT", "CLIOBLEU", "CLIORS"....
De manière à ce que n'importe quelle Clio ai un numéro de série unique quelque soit la couleur.

Voici mon code VBScript dans bartender :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
'Called for each new record read from the current database selected.
 
'Define the object names.
dim objConn
dim strConn
dim rs
 
'Define the database connection parameter constants.
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
 
'Connect to the Excel file.
Set objConn = CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Seagull\BDD BARTENDER.xls';Extended Properties=""Excel 8.0;HDR=YES;"""
 
'Create a record set of one record which is the current record being printed.
Set rs = CreateObject("ADODB.Recordset")
rs.open "SELECT * FROM [Sheet1$]", objConn, adOpenStatic, adLockOptimistic, adCmdText
rs.Find "Réf = '" & Field("Sheet1$.Réf") & "'"
 
'Set the "Printed" field of the record to be "YES" thus flagging it as having been printed.
rs.Fields("Incrément") = (rs.Fields("Incrément").value + 1)
rs.Update
Ce code fonctionne, il incrémente mais sur la ligne de réf "Cliorouge" par exemple uniquement, pas sur toutes les clio...

Avez-vous une idée de comment faire pour l'adapter en conséquence ?

Merci pour votre précieuse aide !
botbot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2013, 12h31   #2
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 197
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 197
Points : 5 111
Points : 5 111
Envoyer un message via MSN à ProgElecT
Salut, bienvenue sur DVP

Je pense qu'il te faut faire la requête d'ouverture de la table sur le champs Modèledebase, lire et incrémenter de + un dans une variable, puis boucler sur toutes les lignes d'enregistrement en actualisant le champs Incrément.
Dans ton exemple Modèledebase = "CLIO", en sortie de bouclage, tous les Modèledebase CLIO de n'importe quelle couleur auront pour champs Incrément = 251.
ProgElecT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2013, 12h36   #3
botbot
Invité de passage
 
Inscription : février 2013
Messages : 16
Détails du profil
Informations forums :
Inscription : février 2013
Messages : 16
Points : 1
Points : 1
Bonjour et merci ProgElecT,

En effet la méthode me semble pas mal du tout

J'essaye de coder tout çà même si je n'ai pas l'habitude de VBScript et je viens au nouvelles...

Merci
botbot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2013, 14h02   #4
botbot
Invité de passage
 
Inscription : février 2013
Messages : 16
Détails du profil
Informations forums :
Inscription : février 2013
Messages : 16
Points : 1
Points : 1
Bon, j'essaye avec celà mais j'ai une erreur " OnNewRecord(Line 22): : Type incompatible: '[string: "Modèledebase = 'X2'"]' "

Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
'Called for each new record read from the current database selected.
 
'Define the object names.
dim objConn
dim strConn
dim rs
dim valeurincrementee
 
'Define the database connection parameter constants.
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
 
'Connect to the Excel file.
Set objConn = CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Seagull\BDD BARTENDER.xls';Extended Properties=""Excel 8.0;HDR=YES;"""
 
'Create a record set of one record which is the current record being printed.
Set rs = CreateObject("ADODB.Recordset")
rs.open "SELECT * FROM [Sheet1$]", objConn, adOpenStatic, adLockOptimistic, adCmdText
 
Do While "Modèledebase = '" & Field("Sheet1$.Modèledebase") & "'"
 
valeurincrementee = (rs.Fields("Incrément").value) + 1
rs.Fields("Incrément") = valeurincrementee 
 
Loop 
 
rs.Update
Qu'est ce qui coince ?

Merci
botbot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2013, 17h51   #5
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 197
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 197
Points : 5 111
Points : 5 111
Envoyer un message via MSN à ProgElecT
Salut

L'ouverture de ta table n'est pas bon.
La requête doit être conditionnelle, ouvrir la table et me renvoyer toutes les lignes dont le champs Modèledebase = "CLIO"
Code :
rs.open "SELECT * FROM NomDeLaTable Where NomDuChant = '" & VariableContenantCLIO & "'", objConn, adOpenStatic, adLockOptimistic, adCmdText
Dans la boucle
Code :
1
2
3
Do While Not rs.EoF
'........
Loop
lire le champs Incrément en lui ajoutant 1
Citation:
rs.Fields("Incrément") = val(rs.Fields("Incrément") + 1
Enregistrer la ligne modifiéepasser à la ligne suivant En sortie de boucle, fermer la table
ProgElecT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2013, 20h27   #6
botbot
Invité de passage
 
Inscription : février 2013
Messages : 16
Détails du profil
Informations forums :
Inscription : février 2013
Messages : 16
Points : 1
Points : 1
Ok,

Voici ma ligne de requête :

Code :
1
2
 
rs.open "SELECT * FROM [Sheet1$] Where Modèledebase = '" & Sheet1$.Modèledebase & "'", objConn, adOpenStatic, adLockOptimistic, adCmdText
Mais j'ai une erreur sur cette ligne :

Citation:
OnNewRecord(Line 22): rs.open "SELECT * FROM Sheet1$ Where Modèledebase = '" & Sheet1$.Modèledebase & "'", objConn, adOpenStatic, adLockOptimistic, adCmdText: Caractère incorrect
Pourtant je ne vois pas de problème de caractère ?!


----------------------------------------------------------------
EDIT
----------------------------------------------------------------

Ca y'est ca fonctionne

Voici la requête pour info :

Code :
1
2
 
rs.open "SELECT * FROM [Sheet1$] Where Modèledebase = '" & Field("Sheet1$.Modèledebase") & "'", objConn, adOpenStatic, adLockOptimistic, adCmdText
Il me manquait donc juste le Field pour aller chercher la BDD...

Merci pour ton aide !
botbot est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h18.


 
 
 
 
Partenaires

Hébergement Web