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

ASP.NET Discussion :

[VB.NET] Une cellule particulière de la base de donnée


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par défaut [VB.NET] Une cellule particulière de la base de donnée
    Voila, après quelques recherches sur devellopez et sur autres site, j'ai mis ceci pour me connecter à ma base de donnée et en récupérer une cellule dans un champ texte. Je suis sur Visual Studio enterprise develloper edition 2003. Au final c'est sensé être de l'aspx, je suis passée par "VB.NET" puis "ASP.NET webapplication" pour créer le projet...

    J'ai une base de donnée acess en local, dans laquelle j'ai une seule table nomée logon, elle contient 5 champs : Nom, Prenom, Login, pasword, machine. Logon_form est le nom du contrôle ou on met le login de la personne.

    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
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            'initialisation des variables de chaine de connexion et de requête.
            Dim strConnexion As String = "STRING de conex"
            Dim strRequete As String = "select pasword from logon where login = " + Logon_form.Value
     
            'initialisation et ouverture de la connexion
            Dim objConnexion As New OleDb.OleDbConnection(strConnexion)
            objConnexion.Open()
     
            'initialisation de l'adapteur SQL (c'est lui qui crée la requête)
            Dim objAdapter As New OleDb.OleDbDataAdapter(strRequete, objConnexion)
     
            'initialisation et remplissage du dataset (c'est lui qui contient les données)
            Dim dst_set As New DataSet("Pass")
            objAdapter.Fill(dst_set, "logon")
     
            'affichage du pasword dans un champ texte pour qu'on puisse le voir
            If dst_set.Tables("Login").Rows.Count > 1 Then
                TextBox1.Text = dst_set.Tables("Login").Rows(1)(1).ToString()
            ElseIf dst_set.Tables("Login").Rows.Count = 0 Then
                TextBox1.Text = "Pas de password"
            ElseIf dst_set.Tables("Login").Rows.Count > 1 Then
                TextBox1.Text = "Une erreur est survenue, appellez le service Création D'article"
            End If
        End Sub
    J'arrives au final a une erreur, et il me montre "la pile" mais je n'arrive pas à l'interprêter. Voila les lignes ou il explique l'erreur et la ligne qu'il met en rouge ( ici représentée par les tag de couleur ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Détails de l'exception: System.Data.OleDb.OleDbException: No value given for one or more required parameters.
     
    Erreur source: 
     
     
    Ligne 154 :        'initialisation et remplissage du dataset (c'est lui qui contient les données)
    Ligne 155 :        Dim dst_set As New DataSet("Pass")
    [color=red]Ligne 156 :        objAdapter.Fill(dst_set, "logon")[/color]
    Ligne 157 :
    Ligne 158 :        'affichage du pasword dans un champ texte pour qu'on puisse le voir



    voila si quelqu'un peut me dépanner, je le remercie vivement d'avance !

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut
    je serais d'avis que tu utilise le selectcommand du dataAdapter
    tu devrais avoir quelquechose dans ce style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private System.Data.OleDb.OleDbCommand oleDbSelectCommand1;
    this.oleDbSelectCommand1 = new System.Data.OleDb.OleDbCommand();
     
    this.oleDbDataAdapter1.SelectCommand = this.oleDbSelectCommand1;
    this.oleDbSelectCommand1.CommandText = @"Ta requete";
    this.oleDbSelectCommand1.Connection = this.oleDbConnection1;
    il peut également manqué le TableMapping au niveau du dataadapter

    Je te conseille d'utiliser l'assistant fourni par VS pour créer une Dataform, cela te donnera un bon exemple

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par défaut
    Je teste ton code là.
    Justement j'essayes de le faire en code car l'assistant se plante complètement et n'arrive pas à me ressortir quoi que ce soit.

    Merci pour le coup de main, je te dis si ça a fonctionné ou pas.


    aet, Ukyuu.

    [EDIT] Non, ca n'a pas fonctionné. J'ai retenté de poser un dataconexion, un dataadapter et un datacomand, et j'ai généré un dataset à partir du data adapter ( tout cela avec les assistants).

    J'ai changé mon code pour ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Conex.Close()
            OleDbSelectCommand1.CommandText = "select logon.pasword from logon where logon.login = " + Logon_form.Value
            Conex.Open()
            Adapter.Fill(DsT_Log1.Tables("Logon"))
            'affichage du pasword dans un champ texte pour qu'on puisse le voir
            If DsT_Log1.Tables("Logon").Rows.Count = 1 Then
                TextBox1.Text = DsT_Log1.Tables("Logon").Rows(0)(0).ToString()
            ElseIf DsT_Log1.Tables("Logon").Rows.Count = 0 Then
                TextBox1.Text = "Pas de password"
            ElseIf (DsT_Log1.Tables("Logon").Rows.Count <> 1 or DsT_Log1.Tables("Logon").Rows.Count <> 0) Then
                TextBox1.Text = "Une erreur est survenue, appellez le service Création D'article"
            End If
        End Sub
    Rien n'y fait, ça refuse de passer le fill me retourne comme quoi il manque des paramètres...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par défaut
    Merci encore de m'avoir fait penser a copier les formules du wizard ! Je ne savais pas qu'il existait.

    La bonne nouvelle c'est que maintenant ça fonctionne, je vais étudier d'un peu plus près la structure des procédures et je vais pouvoir cloner tout ça sur les endroits ou j'ai besoin d'accéder à ma base de donnée.

    J'ai rajouté deux procédures :

    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
    Public Sub LoadDataSet()
            'Create a new dataset to hold the records returned from the call to FillDataSet.
            'A temporary dataset is used because filling the existing dataset would
            'require the databindings to be rebound.
            Dim objDataSetTemp As crearticle.DST_Log
            objDataSetTemp = New crearticle.DST_Log
            Try
                'Attempt to fill the temporary dataset.
                Me.FillDataSet(objDataSetTemp)
            Catch eFillDataSet As System.Exception
                'Add your error handling code here.
                Throw eFillDataSet
            End Try
            Try
                'Empty the old records from the dataset.
                Me.DsT_Log1.Clear()
                'Merge the records into the main dataset.
                Me.DsT_Log1.Merge(objDataSetTemp)
            Catch eLoadMerge As System.Exception
                'Add your error handling code here.
                TextBox1.Text = eLoadMerge.ToString
                Throw eLoadMerge
            End Try
     
        End Sub
        Public Sub FillDataSet(ByVal dataSet As crearticle.DST_Log)
            'Turn off constraint checking before the dataset is filled.
            'This allows the adapters to fill the dataset without concern
            'for dependencies between the tables.
            dataSet.EnforceConstraints = False
            Try
                'Open the connection.
                Me.Conex.Open()
                'Attempt to fill the dataset through the OleDbDataAdapter1.
                Me.Adapter.Fill(dataSet)
            Catch fillException As System.Exception
                'Add your error handling code here.
                Me.TextBox1.Text = fillException.ToString
                Throw fillException
            Finally
                'Turn constraint checking back on.
                dataSet.EnforceConstraints = True
                'Close the connection whether or not the exception was thrown.
                Me.Conex.Close()
            End Try
    Il ne me restait plus qu'a aller chercher ma donnée avec les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                Me.LoadDataSet()
                TextBox1.Text = Me.DsT_Log1.Logon.FindByLogin(Logon_form.Value).Pasword.ToString
            Catch eLoad As System.Exception
                Me.Response.Write(eLoad.Message)
            End Try
     
        End Sub
    J'espère que cela poura servir à ceux qui ont des soucis pour débuter ( comme moi ) avec visual studio.NET !!

    Merci encore VDB1 !!

    Ukyuu.

  5. #5
    Membre éclairé Avatar de bilb0t
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    378
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 378
    Par défaut
    Dans le cas d'une requète paramètrée, je conseil toujours d'utiliser les oleDBParameters.

    Ds ton cas, je mettrai ma main à couper que la valeur que tu voulais affecté à ta requète étaient initialisée lors du postback.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par défaut
    On te coupe la main si c'est le cas ?

    En fait tu ne risques rien, car pour avouer mon ignorance, je ne sais pas qu'est-ce que le postback...

    Tout ce que je sais c'est qu'il y avait un souci au moment du "fill" et avant ça un souci au niveau du "conex.open", la solution ci-dessus à résolu les deux, je suis entrain de coder le reste, et que dès que je pourais je décortiquerais tout ce que j'ai pris, tout ce qui a été dit sur le forum etc... histoire de mieux comprendre ce que je fais.

    Un des plus gros souci est mon ignorance quand au langage que j'utilise ( va comprendre pourquoi je fais du vb.net sur une webform qui sera en aspx ) mais ce que je peux en voir ca fonctionne, je ne m'en plaindrait pas ^^...

    Ceci dit, l'étude de ce souci me permettra de progresser, donc si tu m'expliques ce qu'est le postback, je suis preneuse... si tu as du temps bien sûr !

    aet, Ukyuu

  7. #7
    Membre éclairé Avatar de bilb0t
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    378
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 378
    Par défaut
    Salut,

    je te conseille quand même fortement de lire un tuto ou de t'acheter un bouquin pour le dev .NET. Parce que si tu crois que tu va pouvoir développer tes page aspx sans connaitre le VB.NET ou le C#, la notion de prog object, etc... C'est loin d'être gagné.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par défaut
    Bah, je veux bien lire des tutauriaux, acheter des bouquins ou quoi que ce soit, mais avant ça il faudrait que je cerne ce que je fais, je n'ai rien trouvé qui resemble à ce que je fais dans les bouquins en fait...

    Comme je te l'ai expliqué, je ne sais pas vraiment où chercher, alors je cherche tout ce qui est "asp" ou "V.NET" mais je trouve que du winform en VB.NET ... or moi ce que je veux c'est VB.NET pour webform, c'est le plus proche de ce que je fais je crois.

    Donc si tu as des sugestions ou un éclaircissement, je suis preneuse !

    Ukyuu !

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Par défaut
    tu peux télécharger WebMatrix qui est un produit microsoft gratuit (si si)
    qui permet de créer des Webforms dans le langage que tu veux
    il y a plein d'assistant pour travailler autour des datagrids notamment

    Pour ce qui est des fondamentaux tel que l'utilisation des paramètres dans les oledbadaptater tu trouveras plein d'exemple (c'est la même chose qu'en winform)

    Et puis n'hésite pas à poser des questions sur le forum, même si certains considèrent quelles n'ont pas leurs places, ce n'est pas grave il ya aura toujours quelqu'un pour te répondre

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par défaut
    Merci VDB1, cependant Bilbot a un peu raison, il me faudrait une formation.

    Tu sais je suis lancée sur un projet ou je suis partie de 0, je connaissait le Merise, j'ai du faire de l'uml, mon domaine c'est le Delphi ( winform ) en application locale, je me retrouve à faire du client server comme ça sans avoir eu le temps de me préparer, de plus je suis encore entrain de faire mes études, donc mon souci c'est que bossant la journée ici, et le soir aux cours de DPCT Informatique d'entreprise, le temps me manque de me former.

    C'est un projet professionel ( le premier de ma carrière ) que je dois mener de bout en bout... donc je panique facilement. Ce qu'a dit Bilbot n'est pas faux, le souci c'est que sans temps, il est dur de trouver les informations pertinantes quand on comprends que le tiers ( et la je me flattes :/ ) de ce que l'on fait.

    Dès que j'aurais un peu plus de temps j'écluserais les forums, je me formerais et je vérais où je peux aider... mais là mon projet est pour la fin du mois, et sans formation, je suis quasi sure que j'en aurait pas fait la moitiée.

    aet, ukyuu.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/03/2015, 09h56
  2. Réponses: 0
    Dernier message: 13/10/2008, 13h53
  3. [MySQL] Récuperer une image dans champs BLOB de la base de données
    Par gilou31 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 28/02/2008, 16h32
  4. Réponses: 3
    Dernier message: 11/12/2007, 15h23
  5. Réponses: 1
    Dernier message: 11/10/2007, 13h24

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