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 :

VB8 & SQL Server : Adressage relatif de Textbox dans un faux 'tableau'


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 36
    Par défaut VB8 & SQL Server : Adressage relatif de Textbox dans un faux 'tableau'
    Bonjour à tous,

    Tout d'abord, si je ne suis pas dans la bonne section, par avance pardon au modo qui devra déplacer le Post.

    Après de longues années, largué par les nouveaux outils et d'autres missions loin du code, je reviens à mes premiers amours le dev. Mon choix par débit : VB8 et SQL Server... Sic?

    Mon besoin/question :
    Une envie de tableau au look agréable sur le plan graphique (pour tout dire il s'agit d'un planning)
    Comme les 'Datagridview' sont austères, je voulais simuler sur une 'Form' un assemblage de 'Textbox', avec une architecture visuelle plus fun.

    Imaginons donc des lignes et des colonnes, qui se traduisent par la pose de 'Textform' estampillés TXT11, TXT12, .... TXT81, TXT82.
    Donc dans ma tête : un tableau (8,2)

    Derrière je jouerai avec un (ou des) Tableau(x) de même dimensions, pour gérer les données, et je vais essayer de lier le tout via SQL (je sais pas encore comment, je verrai si je requête à la mano ou via un Datagridview de synchro, motorisé par VB).

    Ma question... Oui j'y viens!!!!!!

    Si je connais i, et j :
    Comment adresser un 'Textbox' de manière relative en concaténant :
    TXT & i & j ???
    Le but étant de jouer sur ses valeurs, et ses attributs (ça j'ai pigé si j'arrive à l'adresser).

    Par exemple, sous excel, la fonction INDIRECT permet un adressage relatif... Mais sous VB8????

    Des idées?

    Par avance merci pour les réponses!

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Par défaut
    Bonjour !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
         [Me.]Controls("TXT" & i & j).Text = "Toto" 'Par Exemple
    Et si tu veux accéder à toutes les propriétés d'un textbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
         Dim maTextBox as TextBox = CType([Me.]Controls("TXT" & i & j), TextBox)
         MaTextBox.Text = "Toto" 'Par Exemple

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 36
    Par défaut
    Merci beaucoup pour le tuyau, je vais tester ça!

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Citation Envoyé par Jeterh Voir le message
    ...
    Derrière je jouerai avec un (ou des) Tableau(x) de même dimensions, pour gérer les données,
    ...
    Comment adresser un 'Textbox' de manière relative en concaténant : TXT & i & j ???
    ...
    En vb.net, il est préférable d'utiliser des collections.
    Un dictionnaire dans ce cas convient bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Dim oDico As Dictionary(Of String, String) = New Dictionary(Of String, String)
     
        Private Sub frmCalendrier_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            For i As Integer = 1 To 8
                For j As Integer = 1 To 2
                    oDico.Add(i.ToString & j.ToString, "")
                Next
            Next
        End Sub
    Remplissage du dictionnaire avec les "TextBox"s.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Private Sub btnValider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnValider.Click
            For i As Integer = 1 To 8
                For j As Integer = 1 To 2
                    oDico(i.ToString & j.ToString) = DirectCast(Me.Controls("TextBox" & i.ToString & j.ToString), TextBox).Text
                Next
            Next
        End Sub
    utilisation du dictionnaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub btnVoir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVoir.Click
            Dim chaine As String = "- "
            For i As Integer = 1 To 8
                For j As Integer = 1 To 2
                    chaine += oDico(i.ToString & j.ToString) & " - "
                Next
            Next
            MsgBox(chaine)
        End Sub
    Info sur DirectCast.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 36
    Par défaut
    Intéressant cette modélisation! ça peut me permettre d'optimiser du Code en Lecture/Mise à jour.

    Cependant je suis bloqué sur un truc bête :

    L'adressage de type :
    Me.Controls("TextBox" & i.ToString & j.ToString)

    fonctionne si la TextBox dépend de la form. Hélas j'ai mis de Panel pour de mise en forme, eux même non adressables directement car ils dépendent de la même incrémentation basée sur i.

    Donc si i et j = 1
    Me.Panel1.Controls("TextBox" & i.ToString & j.ToString)
    fonctionne bien
    Hélas ce Panel appartient à un lot de X Panel indicés (Panel1, Panel2, ...)

    Aussi, comment adresser un TextBox dépendant d'un Panel en indiçant ce dernier avec i???
    Faut il déconnecter la TextBox du Panel pour qu'elle dépende de la Form, mais comment? J'ai farfouiller les propriétés en vain...

    Mais j'avance bien... Encore merci! et merci d'avance pour le truc qui m'échappe!

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Par défaut
    Citation Envoyé par Jeterh Voir le message
    Intéressant cette modélisation! ça peut me permettre d'optimiser du Code en Lecture/Mise à jour.

    Cependant je suis bloqué sur un truc bête :

    L'adressage de type :
    Me.Controls("TextBox" & i.ToString & j.ToString)

    fonctionne si la TextBox dépend de la form. Hélas j'ai mis de Panel pour de mise en forme, eux même non adressables directement car ils dépendent de la même incrémentation basée sur i.

    Donc si i et j = 1
    Me.Panel1.Controls("TextBox" & i.ToString & j.ToString)
    fonctionne bien
    Hélas ce Panel appartient à un lot de X Panel indicés (Panel1, Panel2, ...)

    Aussi, comment adresser un TextBox dépendant d'un Panel en indiçant ce dernier avec i???
    Faut il déconnecter la TextBox du Panel pour qu'elle dépende de la Form, mais comment? J'ai farfouiller les propriétés en vain...

    Mais j'avance bien... Encore merci! et merci d'avance pour le truc qui m'échappe!
    Je ne suis pas sur d'avoir tout bien compris, mais la propriétés Parent c'est pas ce que tu recherche?


  7. #7
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 36
    Par défaut
    Rahhhh.... Cette propriété Parent, je la cherche en vain dans les propriétés du concepteur de Form.

    Car si je déclare :
    TXT11.Parent = Me

    Le TextBox sort de son Panel 'PANEL1', pour filer en haut à gauche de la forme.
    Faut que j'explore plus cette piste, mais à ce stade je ne vois pas.

    Pour rappeler mon souci :
    La Form a 10 Panel nommés Panel1, Panel2, Panel3, ..., Panel10
    Chaque Panel a ses Textbox, TXT11 et TXT12, TXT21 et TXT22, ..., TXT101 et TXT 102

    J'aimerais adresser les propriétés des Panel avec i (ça c'est ok avec l'aide de Joki), car les Panel dépendent bien de la form. Reste les textbox avec i,j, mais là je bloque car les textbox dépendent de chaque Panel dont j'ignore le nom exact si je ne peux pas les adresser avec i.
    J'ai une erreur qui me dit en titre :
    L'exception NullReferenceException n'a pas été gérée.

    J'espère être pas trop lourd....

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,
    Citation Envoyé par Jeterh Voir le message
    La Form a 10 Panel nommés Panel1, Panel2, Panel3, ..., Panel10
    Chaque Panel a ses Textbox, TXT11 et TXT12, TXT21 et TXT22, ..., TXT101 et TXT 102
    Si j'ai bien compris
    - Panel1 contient TXT11 et TXT12
    - Panel2 contient TXT21 et TXT22
    ...
    - Panel10 contient TXT101 et TXT102

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            For i As Integer = 1 To 10
                For j As Integer = 1 To 2
                    oDico(i.ToString & j.ToString) = DirectCast(DirectCast(Me.Controls("Panel" & i.ToString), Panel).Controls("TXT" & i.ToString & j.ToString), TextBox).Text()
                Next
            Next
    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/07/2006, 12h29
  2. [SQL Server] Donnee de type text dans un GROUP BY non permis
    Par Tartenpion dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/03/2006, 17h31
  3. Réponses: 3
    Dernier message: 10/08/2005, 11h11
  4. [SQL server] Comment Fusionner des données dans une requête
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2005, 15h24
  5. [SQL Server] Passage d'un paramètre dans une procédure
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 14/01/2005, 13h19

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