String Verkettung mit Globalen Variablen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von KarpatenWilli.

    String Verkettung mit Globalen Variablen

    Servus,

    falle gerade vom Glauben ab, aber ich verstehe nicht was ich falsch machen.
    Habe zwei Globale Variablen definiert im Public Class Form1-Bereich

    VB.NET-Quellcode

    1. Dim datenbank As String
    2. Dim myConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & datenbank


    Beim Click-Event meines Buttons befülle ich die variable datenbank mit dem Dateipfad zur Datenbank. (C:\...)

    Wenn ich das ganze debugge hat datenbank auch einen Wert aber die Variable myConnString hat nur den Inhalt "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" und nicht noch zusätzlich den Dateipfad zur Datenbank angefügt.

    Wieso?

    Vermute es hat irgendwas mit der Globalen Variable zu tun

    Bitte um Hilfe
    Zum Zeitpunkt der Entstehung hat datenbank den Wert Nothing und myConnString den Wert "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & datenbank, also effektiv Provider=Microsoft.ACE.OLEDB.12.0;Data Source=, weil Datenbank zu dem Zeitpunkt eben Nothing ist. Wenn Du später den Wert datenbank änderst, interessiert das myConnString nicht die Bohne.
    Eine Möglichkeit wäre:

    VB.NET-Quellcode

    1. Private ReadOnly Property myConnString As String
    2. Get
    3. Return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & datenbank
    4. End Get
    5. End Property

    Wenn Du dann datenbank änderst und myConnString abfragst, wird myConnString neu evaluiert (Wert neu festgelegt) und dann passt das. Das gleiche geht auch mit ner Function anstelle einer Readonly-Property.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.