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 :

Enregistrer des données dans une base sql server CE [Débutant]


Sujet :

VB.NET

  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 143
    Par défaut Enregistrer des données dans une base sql server CE
    salut je souhaite mettre en place une application constituée d'une base de données sql server CE avec interface utilisateur en vb.net.Je veux enregistrer des données entrées par l'utilisateur dans la base de données mais j'ai un message d'erreur me disant " les données ont été tronquées impossible de convertir des types de données en un autre type.Voici le code utilisé .Merci d'avance.
    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
     Private Sub cmd_enregistrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_enregistrer.Click
            'si un champ n'est pas rempli fin de procédure
            If Me.Nom.Text = "" Or _
               Me.Prenom.Text = "" Then
     
     
                MessageBox.Show("Vous devez remplir tous les champs !", "Erreur...", MessageBoxButtons.OK, MessageBoxIcon.Error)
     
                Dat_adhtxt.Focus()
     
                Exit Sub
     
            End If
     
            'crátion d'une nouvelle ligne avec les données des textbox
            dtr = dts.Tables("Membre").NewRow
     
            dtr("date_adh") = Me.Dat_adhtxt.Text
            dtr("nom") = Me.Nom.Text
            dtr("prenoms") = Me.Prenom.Text
            dtr("date_naiss") = Me.Dat_naisstxt.Text
            dtr("habitation") = Me.habit_txt.Text
            dtr("sexe") = Me.Sexe.Text
            dtr("pays") = Me.pays_txt.Text
            dtr("ville") = Me.ville_txt.Text
            dtr("lang_parlée") = Me.lang_parltxt.Text
            dtr("tel") = Me.tel_txt.Text
            dtr("formation") = Me.formtxt.Text
            dtr("cel") = Me.cel_txt.Text
            dtr("permis") = Me.permitxt.Text
            dtr("nbre_enf") = Me.nbr_enftxt.Text
            dtr("type_memb") = Me.typ_txt.Text
            dtr("profession") = Me.profess_txt.Text
            dtr("stat_marital") = Me.statmar_txt.Text
            dtr("departem") = Me.depart_txt.Text
            dtr("respo") = Me.respo_txt.Text
            dtr("autre_departem") = Me.autrde_txt.Text
              'ajout de la ligne dans le DataSet
            dts.Tables("Membre").Rows.Add(dtr)
     
            'création et exécution du commandbuilder
            'pour mettre à jour le DataAdapter
            cmdb = New SqlCeCommandBuilder(dta)
     
            'mise à jour des données du DataAdapter
            'à partir du commandbuilder
            dta.Update(dts, "Membre")

  2. #2
    Membre chevronné Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Par défaut
    Tous les champs de ta base de données sont en texte (VarChar) ?
    Sinon il te faut convertir les valeurs issues des zones de texte dans le type attendu par le champ de la base de données.
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Champ de base de données : Nombre (Int)> = CInt(Me.txtNombre.Text)

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour

    Pourquoi ne pas utiliser une requête INSERT tout simplement ? je ne vois pas bien ce que le DataAdapter apporte ici.

    Sinon, il y a au moins un truc qui me choque ici, c'est l'enregistrement des dates en chaines de caractéres, alors que Sql Ce supporte parfaitement le type DATETIME.

    Peux tu poster le DDL de création de ta table ? Merci.

  4. #4
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 143
    Par défaut
    Merci pour votre réponse mais après modification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dtr("nbre_enf") = (Me.nbr_enftxt.Text)
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dtr("nbre_enf") = CInt(Me.nbr_enftxt.Text)
    j'ai le même message d'erreur (Les données ont été tronquées lors de la conversion d'un type de données en un autre. [ Name of function(if known) = ]) ici à cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dta.Update(dts, "Membre")
    je ne sais pas comment faire dans ce cas. Merci d'avance.

  5. #5
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 143
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Bonjour
    Sinon, il y a au moins un truc qui me choque ici, c'est l'enregistrement des dates en chaines de caractéres, alors que Sql Ce supporte parfaitement le type DATETIME.

    Peux tu poster le DDL de création de ta table ? Merci.
    Salut ok je joins ce fichier
    Images attachées Images attachées  

  6. #6
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 245
    Par défaut
    Perso, je vois 2 sources possibles.

    - Les dates qui peuvent ne pas être passée dans le format attendu par le serveur. Par défaut (peut être différent suivant la configuration effectuée) le serveur sql attend les dates au format américain (YYYY-MM-DD). Suivant la configuration, le format français (DD/MM/YYYY) peut ne pas être implicitement reconnu et peut nécessiter une conversion.

    - Les champs de type nchar. Ce sont des champs texte de taille fixe. Quelque soit la valeur passée, la valeur enregistrée aura la longueur spécifiée. Les valeurs les plus courtes seront paddées avec des espaces, les plus longues seront tronquées. D'autant plus que ce type de champ est appliqué à des données qui sont justement succeptible d'être de longueur variables.
    Si on prend l'exemple du champ Ville, ainsi Agen (4 caractères) sera enregistré sous la forme "Agen---------------------" (25 caractères, le - représentant un espace), de même Saint-Remy-en-Bouzemont-Saint-Genest-et-Isson (45 caractères) sera enregistré sous la forme "Saint-Remy-en-Bouzemont-S" (25 caractères). LE message d'erreur des données tronquées peut venir de là, aussi bien de la troncature que du padding.

    A contrario, pour le champs Tel, on a le type nvarchar. Ce n'est pas mauvais en soi puisque la longueur enregistrée sera la longueur réelle + 2 octets.
    Mais un n° de téléphone est en général de longueur déterminée (certes variable d'un pays à l'autre, et même au sein d'un pays si on rajoute les n° cours, etc). C'est un champ qui va contenir des données de longueurs relativement similaires.
    Un type nchar, ici (ce n'est qu'un exemple), se justifie plus, à mon avis (même si moi je ne l'utilise quasiment jamais) que sur les champs ou il a été effectivement appliqué.

  7. #7
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 143
    Par défaut
    Salut et merci pour les réponses que vous m'apportez mais je ne sais plus comment faire car j'ai tenté ce que vous m'avez donné comme solution mais toujours le même résultat.je ne sais pas quel types utiliser pour mes données.

  8. #8
    Membre chevronné Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Par défaut
    Citation Envoyé par hugnka Voir le message
    Salut et merci pour les réponses que vous m'apportez mais je ne sais plus comment faire car j'ai tenté ce que vous m'avez donné comme solution mais toujours le même résultat.je ne sais pas quel types utiliser pour mes données.
    Fais une requête SQL "INSERT INTO" alors !

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Vince Voir le message
    Fais une requête SQL "INSERT INTO" alors !
    Ce que je lui ai déjà dit, mais .....

  10. #10
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 143
    Par défaut
    Citation Envoyé par Vince Voir le message
    Fais une requête SQL "INSERT INTO" alors !
    Salut et merci pour vos réponses je pense que je vais suivre vos conseils et je vous ferai signe en cas de pépin mais j'espère que tout marchera et encore merci.

  11. #11
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 245
    Par défaut
    Et si tu te lance dans la requete INSERT, regarde de préférence du coté des requêtes paramétrées.

    Tu trouveras surement des tutos sur DVP pour mieux comprendre

  12. #12
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 143
    Par défaut
    Merci tout le monde car vous m'avez mis sur la voie et mon problème a été résolu.Merci pour tout

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

Discussions similaires

  1. [Débutant] Enregistrement des données dans une base de données sql server
    Par Efradit dans le forum C#
    Réponses: 9
    Dernier message: 09/05/2015, 14h36
  2. Réponses: 1
    Dernier message: 17/09/2008, 13h40
  3. enregistrer des données dans une base avec jboss jbpm
    Par paolo2002 dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 19/09/2007, 11h56
  4. Enregistrer des données dans une base de donnée
    Par fabienlege dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 18/04/2007, 16h34
  5. des dossiers dans une base sql server
    Par bimus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/11/2006, 17h25

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