2016-07-12 14 views
1

In meinem Vb-Projekt habe ich ein MDI-Elternformular, um andere Formulare zu öffnen. Auf einem Formular habe ich eine DataGridView, die eine Tabelle anzeigt, die ich in SQL Server erstellt habe. Die Daten laden sich gut, wenn ich die Verbindung lokal aufstelle (beim Laden des Formulars mit dem DGV), aber ich muss die Verbindung global machen, um sie einfacher zu halten und sie ständig zu öffnen/schließen. Ich habe den Code hinzugefügt die mdi-form, wie unten.Erstellen einer globalen Datenbankverbindung auf einem MDI-Formular

Public Class mdi1 

Dim con As inifile = New inifile() 
Dim constr = con.readconnectionstring() 

Ich habe hinzugefügt, die bereits den Imports System.Data.OleDb Code, also warum ich die folgende Fehlermeldung erhalten, wenn Sie den Code kompilieren?

constr is not declared, it may be inaccessible due to its protection level 

Dieser Fehler ist in meinem Form1_Load Unterprogramm (wo die Verbindung ursprünglich eingerichtet wurde, die Daten an die DGV zu laden)

+1

Sie verwenden OleDB für den Zugriff auf SQL Server (Tag)? – Plutonix

+0

@Plutonix Ja ich bin, ich habe versucht, SqlClient zu verwenden, aber mein Lehrer sagte, OleDb zu verwenden, aber beide funktionierten trotzdem –

Antwort

1

Wie Sie ein Anfänger zu sein scheinen, werde ich versuchen, Ihnen zu sagen, wie man diese Arbeit, anstatt Best Practice.

sicherzustellen, dass Ihre constr von überall durch die Definition es in Ihrem MDI-Formular als Public zugänglich ist:

Public constr = con.readconnectionstring() 

Jetzt können Sie diese überall darauf zugreifen, indem Sie den vollständig qualifizierten Variablenname: Best

mdi1.constr 

Übung wäre wahrscheinlich, dies in einer eigenen "DataAccess" -Klasse anstelle des MDI-Formulars zu speichern

+0

Hallo, das hat alles funktioniert und den Fehler beseitigt, den ich ursprünglich hatte, jetzt aber in meiner SQL-Anweisung das wird verwendet, um die Daten anzuzeigen Ich erhalte einen neuen Fehler, den ich in der ursprünglichen Frage veröffentlichen werde. –

+1

Nein - bitte starten Sie eine neue Frage, wenn Sie einen neuen Fehler haben –