Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 6 von 6
  1. #1
    Stammgast
    Registriert seit
    20.05.2010
    Beiträge
    109

    Standard Formular dynamisch aufrufen - Formalarname als Parameter

    Hallo,

    Ich programmiere unter vb2008. In meiner Anwendung möchte ich dynamisch Formulare anzeigen. D.h., ich ermittle den Namen des aufzurufenden Formulars aus einer Tabelle. Nun soll das Formular gestartet werden. Wie definiere ich das?

    Code vb.net:
    Dim dr As DbDataReader
    Dim fname
    cmd.Connection = con
    con.Open()
            cmd.CommandText = "select Formname from tblpruefprotokolle where Lfd_Nr=" & Me.rep_id.Text
            dr = cmd.ExecuteReader
            dr.Read()
            fname = dr.Item("Formname")
            dr.Close()
    con.close
     
    dim f as new form
    f.name=fname
    f.show()

    Aber so funktioniert das leider nicht. -> Es kommt ein leeres ('neus') Fenster - aber nicht mein gewünschtes Formular
    Mit der Bitte um Unterstützung, vielen Dank
    Geändert von gfoidl (20.05.2010 um 20:22 Uhr) Grund: Code Formatier-Tags eingefügt und ins VB.net-Forum verschoben

  2. #2
    Stammgast
    Registriert seit
    11.12.2007
    Ort
    Waidring / Tirol
    Beiträge
    3.762

    Standard

    Hallo und willkommen im Forum,

    zuerst 2 Anmerkungen als Moderator:
    1. wenn VB.net verwendet wird dann Poste bitte im VB.net-Forum
    2. Formatiere bitte den Code so wie in Hinweise und Formatierung von VB.net-Code beschrieben


    Beide Punkte sind nur in deinem Interesse - dir soll ja geholfen werden


    Nun zum Problem:

    Eine Instanz der Form kann mittels Reflektion erstellt werden falls nur der Name vorhanden ist. Dazu kann beispielsweise folgende Methode verwendet werden:
    Code vb.net:
    Private Shared Function GetForm(ByVal name As String) As Form
    * * Dim ns As String = GetType(Program).Namespace
    * * name = ns & "." & name
    * * Dim formType As Type = Type.GetType(name)
    * * Dim form As Object = Activator.CreateInstance(formType)
    * * Return TryCast(form, Form)
    End Function
    Hier wird allerdings angenommen dass der Name des Formulars den Namespace nicht enthält, daher wird dieser im Code "dazugeschrieben". Somit könnte in der Datenbank auch der vollqualifizierte Name gespeichert werden um die Arbeit in der Methode zu erleichtern.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

  3. #3

    Standard

    ...und wie man etwas geschickter auf Datenbanken/Tabellen zugreift: MyCSharp.de - Parameter von SQL Befehlen

  4. #4
    Stammgast
    Registriert seit
    18.07.2008
    Beiträge
    2.567

    Standard

    Gibts nicht auch ExecuteScalar wenn nur ein Ergebnis zurückkommen sollte?

  5. #5
    Stammgast
    Registriert seit
    20.05.2010
    Beiträge
    109

    Standard

    Hallo gfoidl,

    erstmal vielen Dank für Deine Hinweise bzgl. Forumkultur. Das werde ich nun brav berücksichtigen.
    Zu meinem Problem:
    Wie baue ich dann diese Funktion sinnvoll in meinen Kontext?

    Vielen Dank vorab

  6. #6
    Stammgast
    Registriert seit
    20.05.2010
    Beiträge
    109

    Standard

    Hallo alle zusammen,

    also ich habe die Funktion eingebunden und nun auch den Aufruf korrekt integriert. Vielen Dank für die Unterstützung.
    Bis bald..-

    dbfreak

 

 

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •