1. #1
    Invité régulier
    Inscrit en
    février 2013
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : février 2013
    Messages : 51
    Points : 9
    Points
    9

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Inscrit en
    décembre 2004
    Messages
    3 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 658
    Points : 6 375
    Points
    6 375

    Par défaut

    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.

  3. #3
    Invité régulier
    Inscrit en
    février 2013
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : février 2013
    Messages : 51
    Points : 9
    Points
    9

    Par défaut

    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

  4. #4
    Invité régulier
    Inscrit en
    février 2013
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : février 2013
    Messages : 51
    Points : 9
    Points
    9

    Par défaut

    Bon, j'essaye avec celà mais j'ai une erreur " OnNewRecord(Line 22): : Type incompatible: '[string: "Modèledebase = 'X2'"]' "

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Inscrit en
    décembre 2004
    Messages
    3 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 658
    Points : 6 375
    Points
    6 375

    Par défaut

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    rs.open "SELECT * FROM NomDeLaTable Where NomDuChant = '" & VariableContenantCLIO & "'", objConn, adOpenStatic, adLockOptimistic, adCmdText
    Dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Do While Not rs.EoF
    '........
    Loop
    lire le champs Incrément en lui ajoutant 1
    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

  6. #6
    Invité régulier
    Inscrit en
    février 2013
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : février 2013
    Messages : 51
    Points : 9
    Points
    9

    Par défaut

    Ok,

    Voici ma ligne de requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo