IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Ajout de champ dans une table


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 107
    Points : 55
    Points
    55
    Par défaut Ajout de champ dans une table
    Bonjour à tous,

    Voila j'essaye de mettre en place une automatisation de ma facturation.
    pour se faire je selectionne les commandes que je souhaite facturées et je créer une table temporaire à partir de cette sélection.Jusqu'ici tout vas bien ( enfin à peu près.... !!! )

    Dans cette table temporaire je souhaiterais ajouter plusieurs champs d'un seul coup via une commande. Cela est il possible?

    merci a vous poour vos bons conseils !!!!

    @+

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 567
    Points
    24 567
    Par défaut
    Bonjour,

    Tu veux ajouter des champs ou des valeurs dans les champs ?

    Ayant fais une application avec devis/facturation le mieux est d'utiliser une structure identique pour les 2 tables (facture et devis) puis de faire un copie au moyen d'une requête de devis vers facture.

    C'est le plus simple.

    Pour la création de champ il faut utiliser DAO (ou ADO) au choix.
    Pour la création d'une table (vierge) une requête SQL ; CREATE TABLE

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 107
    Points : 55
    Points
    55
    Par défaut
    Bonjour Loufab,

    la structure de mes tables "Commande" et "Facture" ne sont pas les mêmes.
    Je selectionne les Commandes que je veux facturer sur un critère de date.
    De là, je veux :

    - Créer une table "tmp" avec les infos que j'ai dans ma table "Commande"
    - Ajouter des Champs ( N° de Facture, type de Facture, ect... )
    - Ajouter les nouvelles valeurs dans les champs créer
    - Une fois mes champs remplis, je souhaiterais faire la copie dans ma table "Factures"

    Voila grosso modo à quoi je voudrais arriver ( je sais pas si c'est très clair mais bon...).

    merci ! @+

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Pourquoi ne pas créer une table que tu vides à chaque fois, si c'est tu ne sais pas le nombre de champs que tu rajoutes à l'avance, c'est que tu as un problème de conception.

    Je suis d'accord avec Loufab, pour avoir réaliser il y'a longtemps une petite base de facturation.

    Starec

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 107
    Points : 55
    Points
    55
    Par défaut
    salut starec,

    si si je connais le nb de champs, ce sera toujours le même !!!!

    @+

  6. #6
    Invité
    Invité(e)
    Par défaut
    rE

    Alors crée ta table et vide là à chaque fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE * FROM matable
    en SQL

    Starec

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 107
    Points : 55
    Points
    55
    Par défaut
    ok je vais tester.... merci !!!! bonne soirée a vous

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 107
    Points : 55
    Points
    55
    Par défaut
    bonjour a tous !

    Voila j'ai créer ma table vide que je met à jour une fois que j'ai sélectionner les commandes que je souhaite facturées.

    Mon petit problème maintenant c'est que je souhaiterais récupérer certaines valeurs mais j'aurais besoin de récupérer pour mettre à jour certaines valeur de les rechercher avec en référence mon numéro de commande ( cf. calcul de la var11 dans le code ). Comment puis je faire pour récupérer la valeur de ce n° de Job ? ( je sais pas si je suis clair )

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Private Sub Commande137_Click()
    On Error GoTo Commande137_Error
     
    Dim db As Database
    Dim RS As DAO.Recordset
     
    '--------------------------------------------------
    'Copie des données sélectionnées dans la table temp
    '--------------------------------------------------
     
    CurrentDb.Execute "INSERT INTO temp ( N°, Job, [Date], MontantHT, BusinessUnit, Client, [Client final], Panel, Products, [From], Until, [Date Of Entry], Budget, [Currency], [Conditions] )SELECT facturation.N°, facturation.Jobn°, facturation.DateFacturation, facturation.Amount, [Job book].BusinessUnit, [Job book].Client, [Job book].[Client final], [Job book].Panel, [Job book].Product, [Job book].From, [Job book].Until, [Job book].DateofEntry, [Job book].Budget, [Job book].Currency, [Job book].[Payment terms] FROM [Job book] INNER JOIN facturation ON [Job book].Jobn° = facturation.Jobn° WHERE (facturation.N°)= " & SQLWhere & " "
     
    MsgBox "La table a été mise à jour avec succès", vbInformation + vbOKOnly, "Impression des factures"
     
     
    Set db = CurrentDb()
    Set RS = db.OpenRecordset("temp")
     
    RS.Index = "Job"
     
     
    While Not RS.EOF
     
    RS.Edit
     
     
      var1 = ProchainNumeroFormate(Year(Date), Month(Date))
      var2 = Right(var1, 7)
     'var3 = DLookup("[BusinessUnit]", "Job Book", Job)
      var4 = DLookup("[Adress]", "Clients", RS![Client])
      var5 = DLookup("[Complement]", "Clients", RS![Client])
      var6 = DLookup("[Post_Code]", "Clients", RS![Client])
      var7 = DLookup("[City]", "Clients", RS![Client])
      var8 = DLookup("[Country]", "Clients", RS![Client])
      var9 = DLookup("[Contact Name]", "Clients", RS![Client])
      var10 = DLookup("[Departement]", "Clients", RS![Client])
      var11 = [Internal Contact] = DLookup("[SalesRepr]", "Job Book", "Job") 
     
     RS![calculdate] = var1
      RS![InvoiceN°] = var2
      RS![Adress1] = var4
      RS![Adress2] = var5
      RS![Post_Code] = var6
      RS![City] = var7
      RS![Country] = var8
      RS![Contact Name] = var9
      RS![Departement] = var10
     
     'RS![Internal Contact] = var11 
     
    RS.Update
     
    '--------------------------------------
    'Passage à l'enregistrement suivant
    '--------------------------------------
     
    liste:
    RS.MoveNext
     
    Wend
    Merci pour votre aide....

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 567
    Points
    24 567
    Par défaut
    C'est une solution par contre tu peux te passer de l'utilisation de variable à ce niveau.


    Code Avant

    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
     
      var1 = ProchainNumeroFormate(Year(Date), Month(Date)) 
      var2 = Right(var1, 7) 
     'var3 = DLookup("[BusinessUnit]", "Job Book", Job) 
      var4 = DLookup("[Adress]", "Clients", RS![Client]) 
      var5 = DLookup("[Complement]", "Clients", RS![Client]) 
      var6 = DLookup("[Post_Code]", "Clients", RS![Client]) 
      var7 = DLookup("[City]", "Clients", RS![Client]) 
      var8 = DLookup("[Country]", "Clients", RS![Client]) 
      var9 = DLookup("[Contact Name]", "Clients", RS![Client]) 
      var10 = DLookup("[Departement]", "Clients", RS![Client]) 
      var11 = [Internal Contact] = DLookup("[SalesRepr]", "Job Book", "Job") 
     
     RS![calculdate] = var1 
      RS![InvoiceN°] = var2 
      RS![Adress1] = var4 
      RS![Adress2] = var5 
      RS![Post_Code] = var6 
      RS![City] = var7 
      RS![Country] = var8 
      RS![Contact Name] = var9 
      RS![Departement] = var10
    Code Après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       RS![calculdate] = ProchainNumeroFormate(Year(Date), Month(Date)) 
       RS![InvoiceN°] = Right(var1, 7) 
       'var3 = DLookup("[BusinessUnit]", "Job Book", Job) 
       RS![Adress1] = DLookup("[Adress]", "Clients", RS![Client]) 
       etc...
    Attention !!!
    Cette syntaxe n'est pas correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DLookup("[Adress]", "Clients", RS![Client])
    Il faut écrire ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DLookup("[Adress]", "Clients", "Champ_num_client=" & RS![Client])

    De plus l'utilisation d'une série de dlookup sur la recherche d'un même champ d'une même table grève les performances (dlookup gros consommateur de ressources)

    Tu peux surement utiliser un recordset pour accèder à ce record client.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dim Rstclient as recordset
    set rstclient = currentdb.openrecordset("CLIENTS")
    rstclient.find "Champ_num_client=" & RS![Client]
    If rstclient.nomatch then
       msgbox "client pas trouvé"
       exit sub
    endif
      RS![Adress1] = rstclient![adress] 
      RS![Adress2] = rstclient![complement]
      .... etc
    En intégrant judicieusement ce code dans celui existant tu devrais gagner en perfo.

    Tu peux également utiliser une jointure vers la table client puisque tu a l'info dans Commande, lors de la requête insert... Encore plus rapide.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 107
    Points : 55
    Points
    55
    Par défaut
    ok merci loufab,

    après m'être un peu fait les dents sur ce problème je suis arrivé a la même solution que toi sur les variables.

    Pour le Dlookup je vais suivre tes conseils : Soit utiliser le recordset,soit la jointure.

    Merci en tout cas ... bien à toi.

Discussions similaires

  1. Ajouter un champ dans une table liee
    Par jojoboloss dans le forum Access
    Réponses: 1
    Dernier message: 29/01/2007, 14h46
  2. Ajouter des champ dans une table avec une procedure sp
    Par Abdou1 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/07/2006, 18h32
  3. ajouter un champ dans une table existant
    Par zidenne dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/10/2005, 21h27
  4. Ajouter des CHAMPS dans une table via ASP
    Par hysteresis dans le forum Access
    Réponses: 1
    Dernier message: 27/09/2005, 15h39
  5. Ajouter un champs dans une table (Access 2000)
    Par Didier100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/10/2004, 13h02

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