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

Requêtes et SQL. Discussion :

SQL et case à cocher


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Par défaut SQL et case à cocher
    Bonjour à tous,

    Suite à une remonter d'information d'utilisateur, je dois faire une mise à jour de mon application ACCESS pour une simplification d'action.

    Dans celle ci j'ai deux table ( Table1 et Table1LTA ) qui sert à la gestion de numéro de dossier.

    - Table1LTA est identique à Table1 pour les champs.
    - Table1LTA contient des Numéro de dossier dit vierge et pres à être utilisé
    - Quand une personne veu utilisé un Numéro de dossier, celui-ci est copier de Table1LTA à Table1 et rempli certain champ automatiquement et/ou manuellement via un formulaire.

    Une partie de mon code ici permet à un numéro de dossier utilisé dans la Table1 de le formater et de le remettre dans Table1LTA pour qu'il soit remis à disposition.

    mon ancien 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
    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
    61
    62
    63
    64
    65
    66
    Private Sub LTA_Free_Click()
     
    Dim LTA As String
    Dim SQL As String
    Dim SQL1 As String
    Dim A As String
    Dim B As String
     
    Dim matable1 As DAO.Recordset
    Dim matable2 As DAO.Recordset
    Set mabase = CurrentDb()
     
    DoCmd.SetWarnings False
     
    On Error GoTo Fin
     
    Ref_CA = seleccomp
     
    If IsNull(Ref_CA) Then
     
    MsgBox "choisir compagnie" & vbCr & vbLf & "Merci."
    Exit Sub
    End If
     
    saisie:
     
    LTA = CLng(InputBox("Entré le numéro de LTA désiré"))
     
    SQL = "SELECT Table1.* FROM Table1 WHERE (((Table1.Ref_CA)=" & Ref_CA & ")) AND (((Table1.LTA)=" & LTA & ")) ;"
    Set matable1 = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
    Refresh
     
    If matable1.EOF Then
    MsgBox "LTA non existant"
    Else
     
    A = matable1("Ref_CA")
    B = matable1("LTA")
    c = ""
     
    If Not IsNull(matable1("DSSR_JFH")) Then c = matable1("DSSR_JFH")
     
    SQL1 = "DELETE FROM Table1 Where (((Table1.Ref_CA)=" & Ref_CA & ")) AND (((Table1.LTA)=" & LTA & ")) ;"
    DoCmd.RunSQL SQL1
    Set matable2 = mabase.OpenRecordset("Table1LTA")
    matable2.AddNew
    matable2!Ref_CA = A
    matable2!LTA = B
    matable2.Update
     
    'suite inutile au fonctionnement du code
     
    Dim action As String
    action = "Libération LTA:   " & LTA & "   Compagnie:   " & Ref_CA & "   Dossier:   " & c
     
    Call historique(action)
     
    MsgBox "      " & Ref_CA & " / " & LTA & vbCr & vbLf & vbLf & vbLf & "        LTA Libre ! !"
    Refresh
    End If
     
    Fin:
     
    DoCmd.SetWarnings True
     
    End Sub
    La procédure ici est:

    Choisir une compagnie dans une "ListBox" appelé Seleccomp et d'appuyé sur le bouton LTA_Free.
    Ici un msgbox demande la saisie du numéro de dossier à traité.

    vous comprennez donc que la manipulation est un peu lourde

    --------------------------

    je vous donne un aperçu du formulaire utilisé :



    J'ai trouvé une solution plus simple.

    il suffirai de sélectionner la ligne avec le numéro en question que l'on veu formater puis un click sur la croix rouge pour le remettre dans TAble1LTA.

    mon problème est que je n'arrive pas a mettre les conditions pour les cases à cocher et je suis un peu limiter en connaissance SQL "limiter de ACCESS"

    une petite aide mesdames et messieurs s'il vous plait.

    Cordialement,
    Khorn.

    PS: la zone avec le listing à font vert et les cases à cocher est un Sous formulaire.

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    La condition sur un champ Vrai/Faux ChampVF serai :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.* FROM Table1 WHERE ChampVF = True
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT Table1.* FROM Table1 WHERE ChampVF = True ;"
    True correspond à Vrai (coché), False correspond a Faux (non coché)
    Ca marche aussi avec -1 pour Vrai et 0 pour Faux.

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Par défaut
    Merci LedZeppII pour ta réponse !

    Donc normallement,

    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
     
    Private Sub SF_Suppr_Click()
     
    Dim LTA As String
    Dim SQL As String
    Dim SQL1 As String
    Dim A As String
    Dim B As String
     
    Dim matable1 As DAO.Recordset
    Dim matable2 As DAO.Recordset
    Set mabase = CurrentDb()
     
    DoCmd.SetWarnings False
     
    On Error GoTo Fin
     
    SQL = "SELECT Table1.* FROM Table1 WHERE ChampVF = True ;"
    Set matable1 = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
    Refresh
     
    If matable1.EOF Then
    MsgBox "Aucune sélection ! réessayé !"
    Else
     
    A = matable1("Ref_CA")
    B = matable1("LTA")
    c = ""
     
    If Not IsNull(matable1("DSSR_JFH")) Then c = matable1("DSSR_JFH")
     
    SQL1 = "DELETE FROM Table1 Where ChampVF = True ;"
    DoCmd.RunSQL SQL1
    Set matable2 = mabase.OpenRecordset("Table1LTA")
    matable2.AddNew
    matable2!Ref_CA = A
    matable2!LTA = B
    matable2.Update
    End If
    End Sub
    c'est correct la ?

    Cordialement,
    Khorn.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Par défaut
    petite rectification sa marche mais avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT Table1.* FROM Table1 WHERE Table1.ChampVF = True ;"

  5. #5
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Fais attention car ton code n'est prévu que pour une sélection.
    Si on coche plusieurs lignes il ne prends en compte que la première.

    Il faudrait boucler sur les enreigtrements de matable1.
    La fin du code devrait donner qq chose comme ça:
    Code vb : 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
    IF matable1.EOF Then
    MsgBox "Aucune sélection ! réessayé !"
    Else
     
    SET matable2 = mabase.OpenRecordset("Table1LTA")
    do while Not matable1.EOF 
    	A = matable1("Ref_CA")
    	B = matable1("LTA")
    	c = ""
     
    	IF NOT IsNull(matable1("DSSR_JFH")) Then c = matable1("DSSR_JFH")
     
    	matable2.AddNew
    	matable2!Ref_CA = A
    	matable2!LTA = B
    	matable2.UPDATE
     
    	matabl1.MoveNext
    Loop
     
    SQL1 = "DELETE FROM Table1 Where ChampVF = True ;"
    DoCmd.RunSQL SQL1
     
    End IF
    Bonne continuation

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Par défaut
    Merci pour ton aide !

    Cordialement,
    Khorn.

Discussions similaires

  1. [SQL] Cases à cocher et requête SQL
    Par momayse dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/09/2007, 17h57
  2. [SQL] Explode pour cases à cocher
    Par philippef dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/08/2007, 16h12
  3. Case à cocher et sql
    Par speleo dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/07/2007, 17h07
  4. [REQUETE]Afficher un champ "case à cocher" dans une requête SQL-Access
    Par Amael ROCHE dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 03/04/2007, 11h07
  5. [SQL] comment récupérer le contenu de cases à cocher
    Par Viau dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 31/01/2006, 14h56

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