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

Windows Forms Discussion :

Probléme de Type de données VB.Net vs Access 2003


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 30
    Par défaut Probléme de Type de données VB.Net vs Access 2003
    Salut a tous les mordus des Codes:
    Je suis nouveau en VB.NET et c’est bien la première fois que j’essaie de travailler en connexion vers une Base de données (Access 2003) qui contient les champs suivants*: (Noms de champs et Types de données):
    DBID*: Number
    PERSONNAME1*: Text
    PERSONNAME2*: Text
    JOBNAME: Text
    EXTENSIONUP: Number
    ROOM: Number
    JOBMAIL: Text
    PERSONMAIL1: Text
    PERSONMAIL2: Text
    PICTURE1: Number
    PICTURE2: Number
    PICTURE3: Number
    PICTURE4: Number

    Dans le code qui suit je tente d'insérer une nouvelle ligne de données dans la base de données correspondant au Champs que je spécifie a partir de textbox (Propriete Text) et des Combobox (Propriete SelectedIndex) de la form Active:

    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
            Public dbMainConnStr As String
            Dim sqlstr As String
            dbMainConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB.msa;Password="
            sqlstr = "INSERT INTO Table1 (DBID,PERSONNAME1,PERSONNAME2,JOBNAME,EXTENSIONUP,ROOM" _
            & ",JOBMAIL,PERSONMAIL1,PERSONMAIL2,PICTURE3,PICTURE4)VALUES('" _
            & Me.TextBox13.Text & "','" & Me.TextBox10.Text & "','" & Me.TextBox11.Text _
            & "','" & Me.TextBox1.Text & "','" & Me.TextBox4.Text _
            & "','" & Me.TextBox5.Text & "','" & Me.TextBox6.Text _
            & "','" & Me.TextBox7.Text & "','" & Me.TextBox9.Text _
            & "','" & Me.ComboBox1.SelectedIndex & "','" & Me.ComboBox2.SelectedIndex _
            & "');"
     
            Using dbMainConnection As New OleDb.OleDbConnection(dbMainConnStr)
                dbMainConnection.Open()
                Dim SQl As New OleDb.OleDbCommand(sqlstr, dbMainConnection)
                SQl.ExecuteNonQuery()
            End Using
    Une Erreur de Type de données s’affiche a l’execution du programme, qulqu’un aurait-il une idees SVP?
    Peut étre que j'aurais oublié de préciser quelque chose, n'hesitez pas à demander.
    Merci pour votre aide.
    Karim.

  2. #2
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Il s'agit d'une erreur au niveau de ton instruction sql.

    Tu encadres chaque valeur par des appostrophes or cela signifie dans le langage sql qu'il s'agit d'une valeur de type chaîne de caractère. Comme dans la table que tu veux mettre à jour, il y a des champs qui ne sont pas de ce type, ça ne peut que provoquer une erreur (heureusement d'ailleurs!).

    Pour un nombre, il faut que tu retires les appostrophes qui entoure la valeur. Cela devrait mieux fonctionner.

    Bonne continuation.

    Griftou.

    P.S. : Pour faire plaisir à certains fanatiques (le prenez pas mal hein ^^), sache qu'il existe ce qu'on appelle des DbParameters pour faire ce genre de requête. Il parait que c'est mieux. C'est sensé éviter les problème d'incompatibilité que tu as eu. Perso j'ai testé et je n'ai pas été convaincu. Je pense qu'avec un minimum de rigueur, on s'en sort très bien sans. Mais comme ça tu sais que ça existe.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 30
    Par défaut
    à toutes et à tous
    Merci infiniment Griftou pour ton aide, ta réponse m'a était trés utile.
    Effectivement j'ai procédé soigneusement à oter les quotes dans ma commande SQL là où il ne devait pas y avoir, (les textbox qui correpondent à des champs numériques dans ma base de données), alors le code devient comme suite:

    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
            Public dbMainConnStr As String
            Dim sqlstr As String
            dbMainConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB.msa;Password="
            sqlstr = "INSERT INTO Table1 (DBID,PERSONNAME1,PERSONNAME2,JOBNAME,EXTENSIONUP,ROOM" _
            & ",JOBMAIL,PERSONMAIL1,PERSONMAIL2,PICTURE3,PICTURE4)VALUES(" _
            & Me.TextBox13.Text & ",'" & Me.TextBox10.Text & "','" & Me.TextBox11.Text _
            & "','" & Me.TextBox1.Text & "'," & Me.TextBox4.Text _
            & "," & Me.TextBox5.Text & ",'" & Me.TextBox6.Text _
            & "','" & Me.TextBox7.Text & "','" & Me.TextBox9.Text _
            & "'," & Me.ComboBox1.SelectedIndex & "," & Me.ComboBox2.SelectedIndex _
            & ");"
     
            Using dbMainConnection As New OleDb.OleDbConnection(dbMainConnStr)
                dbMainConnection.Open()
                Dim SQl As New OleDb.OleDbCommand(sqlstr, dbMainConnection)
                SQl.ExecuteNonQuery()
            End Using
    Mais ce n'était pas tout, en effet deux autres choses se sont produites je croie qu'après avoir posé le problème, et découvert l’origine de l’erreur je devrais peut être porter une explication à ce qui s’est produit avec ma commande SQL entre mon Application et la base de données Access 2003 :
    Voyez ce qui suit:
    1. je ne prenais pas la peine de remplir quelques Textbox dont les données étaient nécessaire (required) au niveau de la Base de données, autrement dit la valeur Néant (NULL) n’était pas permis dans les champs qui correspondent aux TextBox que je devais remplir,
    2. Egalement la même chose aux champs numériques qui, dans ma base de données comportent la valeur par défaut : 0. et bien lorsque je lance ma requête (Cliquer sur le bouton « Appliquer »), une erreur de type de données est renvoyée car à ce que je comprends le champ numérique dont la propriété « Valeur par défaut » est différente de « Néant » ne peut rester vide.
    Les solutions sont les suivantes :
    1. Remplir tous les TextBox qui correspondent à des champs nécessaire à la base de données « Required ».
    2. Paramétrer les valeurs par défaut des champs numériques à la valeur « Néant » (NULL) : Oter le 0 et laisser le champ vide, ou bien remplir les champs numériques tel que nécessaire (un nombre entier).

    Voila, j’espère que je me suis très bien expliqué. n’empêche que j’expérimente toujours un problème dans mon application.

    Je me permettrais de l’exposer dans une autre discussion sous le titre de : "Comment maintenir pour de bon un Treenode créé sous mode exécution (Runtime) ?"

    Et merci encore une fois Griftou, et à tout le monde biensùr .

    Karim

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

Discussions similaires

  1. Problème de type de données entre Java et Postgres
    Par La Piotte dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 31/01/2008, 20h23
  2. [BO 6.5.1] Problème de type de données
    Par maitre_yoda78 dans le forum Deski
    Réponses: 4
    Dernier message: 16/01/2008, 15h38
  3. Problème avec type de données
    Par yancimer dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/09/2006, 16h54
  4. Problème pour accéder aux données ASP.net côté client
    Par mappy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/07/2006, 15h10
  5. Réponses: 4
    Dernier message: 09/05/2006, 10h29

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