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

VB.NET Discussion :

Automatisation de la suppression d'une ligne sur une table en fonction d'une Date [Débutant]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Automatisation de la suppression d'une ligne sur une table en fonction d'une Date
    Bonjour à tous, c'est la premiere fois que je poste sur ce forum et j'espère que vous pourrez me donner mes indication sur mon problème.
    Comme le dit mon titre je cherche à supprimer toutes mes lignes "périmés" sur un planning.

    Mon code est le suivant

    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
            Dim Connexion = GestionConnection.nouvelleConnection()
            Dim thisDay As DateTime = DateTime.Today
            Dim finSuppression As Boolean = True
            Connexion.Open()
     
            Do
                Dim RequetteSelectionMinimum = "SELECT MIN(fin_indisponibilite) FROM affectation_materiel"
                Dim CommandeSelectionMinimum As New NpgsqlCommand(RequetteSelectionMinimum, Connexion)
                MsgBox(CDate(CommandeSelectionMinimum.ExecuteScalar()).ToString("d"))
                If CDate(CommandeSelectionMinimum.ExecuteScalar()) < thisDay.ToString("d") Then
                    MsgBox(thisDay.ToString("d"))
                    Supress.supressAssociation(Connexion, CommandeSelectionMinimum.ExecuteScalar())
                Else
                    finSuppression = False
                End If
            Loop While finSuppression
    Les 2 Msg box donnent les résultats attendus.
    Et d'autre part :

    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
        Public Shared Sub supressAssociation(ByVal Connexion As NpgsqlConnection, ByVal uneDate As Date)
     
            Try
     
                Dim Requete As String = "DELETE FROM affectation_materiel WHERE fin_indisponibilite=" & Format(uneDate, "dd/mm/yyyy").ToString()
                Dim Commande As New NpgsqlCommand(Requete, Connexion)
                Try
                    Commande.ExecuteNonQuery()
                Catch ex As Exception
                    Console.WriteLine("Echec de la suppression à la Base de donnée")
                    Console.WriteLine(ex.Message)
                End Try
     
                Commande.Dispose()
     
            Catch ex As Exception
                Console.WriteLine("Echec de la connection à la base de donnée")
            End Try
     
     
        End Sub
    Et là :

    Une exception de première chance de type 'Npgsql.NpgsqlException' s'est produite dans Npgsql.dll
    Echec de la suppression à la Base de donnée
    ERREUR: 42883: l'opérateur n'existe pas : date = integer

    Je suis sur que c'est une erreur bête mais je me creuse la tête depuis des heures, Merci d'avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    Il est préférable d'utiliser une requête paramétrée.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci ! Ca marche au poil en ayant juste retouché à ma classe de suppression.

    Pour ceux que ca intéresserait voilà le code corrigé:

    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
            Try
                Dim Requete As String = "DELETE FROM affectation_materiel WHERE fin_indisponibilite= @ladate"
                Dim Commande As New NpgsqlCommand(Requete, Connexion)
                With Commande.Parameters
                    .Add(New NpgsqlParameter("@ladate", NpgsqlTypes.NpgsqlDbType.Date))
                End With
                With Commande
                    .Parameters("@ladate").Value = uneDate
                End With
                Try
                    Commande.ExecuteNonQuery()
                Catch ex As Exception
                    Console.WriteLine("Echec de la suppression à la Base de donnée")
                    Console.WriteLine(ex.Message)
                End Try
                Commande.Dispose()
            Catch ex As Exception
                Console.WriteLine("Echec de la connection à la base de donnée")
            End Try

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

Discussions similaires

  1. UPDATE sur table en fonction d'une valeur sur une autre table
    Par jgjeremy01 dans le forum Requêtes
    Réponses: 7
    Dernier message: 03/12/2013, 23h41
  2. [XL-2010] Suppression d'une ligne sur deux
    Par pimpom81 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 20/08/2012, 16h08
  3. [AC-2003] Garder une ligne sur 8, selon le max d'une colonne
    Par alex3084 dans le forum Access
    Réponses: 3
    Dernier message: 12/04/2012, 19h40
  4. Placer une image sur la page en fonction d'une valeur
    Par D4rkArthemis dans le forum BIRT
    Réponses: 3
    Dernier message: 19/04/2011, 16h03
  5. [AC-2003] Suppression d'une ligne sur champ vide
    Par juju1988 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/10/2010, 14h39

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