Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Invité régulier
    Inscrit en
    février 2013
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : février 2013
    Messages : 44
    Points : 6
    Points
    6

    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 !

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

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 470
    Points : 5 755
    Points
    5 755

    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
    44
    Détails du profil
    Informations forums :
    Inscription : février 2013
    Messages : 44
    Points : 6
    Points
    6

    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
    44
    Détails du profil
    Informations forums :
    Inscription : février 2013
    Messages : 44
    Points : 6
    Points
    6

    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 :
    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 Francis MILLET
    Inscrit en
    décembre 2004
    Messages
    3 470
    Détails du profil
    Informations personnelles :
    Nom : Homme Francis MILLET
    Âge : 58
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 470
    Points : 5 755
    Points
    5 755

    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 :
    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
    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
    44
    Détails du profil
    Informations forums :
    Inscription : février 2013
    Messages : 44
    Points : 6
    Points
    6

    Par défaut

    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 :

    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 !

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •