-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfrmDatenbankEinstellungen.vb
242 lines (200 loc) · 14.1 KB
/
frmDatenbankEinstellungen.vb
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
Public Class frmDatenbankEinstellungen
Dim iCurrent As Integer = 0
Dim bConnected As Boolean = False
Dim bIsLoading As Boolean = False
Public bErrorLoading As Boolean = False
Dim iEazybusinessProfilID As Integer = -1
'Dim clsDB As New clsDatenbank
Private Sub frmDatenbankEinstellungen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
msgMaster.Text = "Bei Einstellung: " & My.Settings.mandant_letzter_name & " (" & My.Settings.mandant_position & ")"
'# Laden der Standarddatenbank
iEazybusinessProfilID = frmMain.getMySettingsPositionByDatabase("eazybusiness")
If Not My.Settings.mandant_position = -1 Then
'# Aktuelle Position auslesen aus dem Hauptformular
'# entspricht mandant_letzter_name
iCurrent = My.Settings.mandant_position
'# Daten in Textfelder eintragen
txtServerName.Text = My.Settings.db_server.Item(iCurrent).ToString
txtUsername.Text = My.Settings.db_username.Item(iCurrent).ToString
txtPasswort.Text = My.Settings.db_passwort.Item(iCurrent).ToString
txtDatenbank.Text = My.Settings.db_datenbankname.Item(iCurrent).ToString
Dim strCon As String = "server=" & My.Settings.db_server.Item(iCurrent).ToString & ";uid=" & My.Settings.db_username.Item(iCurrent).ToString & ";pwd=" & My.Settings.db_passwort.Item(iCurrent).ToString & ";database=" & My.Settings.db_datenbankname.Item(iCurrent).ToString & ";"
'# Datenbankverbindung Testen
If frmMain.clsDB.getDBConnect(strCon) = True Then
'# Mandanten in die Combobox übertragen
Call frmMain.clsDB.setMandantbyCombobox(cmbMandant, True)
bConnected = True
Else
'# Keine Datenbankverbindung vorhanden
cmbMandant.Visible = False
Label5.Visible = False
End If
Else
'# Laden der Standard Datenbank
iCurrent = frmMain.getMySettingsPositionByDatabase("eazybusiness")
If Not iCurrent = -1 Then
MessageBox.Show("Fehler bei der Profilauswahl: benutze Standardprofil!", "Standardprofil", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
MainStatus.Text = "Fehler bei der Profilauswahl: benutze Standardprofil!"
txtServerName.Text = My.Settings.db_server.Item(iCurrent).ToString
txtUsername.Text = My.Settings.db_username.Item(iCurrent).ToString
txtPasswort.Text = My.Settings.db_passwort.Item(iCurrent).ToString
txtDatenbank.Text = My.Settings.db_datenbankname.Item(iCurrent).ToString
Else
''# Initalisieren der Settings
'If MessageBox.Show("Die Programmsettings werden neu geschrieben, einige überschrieben möchten Sie fortfahren?", "Programmeinstellungen", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
' Call frmMain.setSettingsInit(My.Settings.mandant_position)
' iCurrent = 0
'End If
MainStatus.Text = "Es wurde noch kein Datenbankprofil gefunden - keine Datenbankverbindung möglich"
End If
End If
Catch ex As Exception
If MessageBox.Show("Fehler bei Load: " & ex.Message & vbCrLf & "Datenbank Einstellungen neuschreiben?", "frmDatenbankEinstellungen_Load", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) = Windows.Forms.DialogResult.Yes Then
Call frmMain.setSettingsDelete()
End If
End Try
End Sub
Private Sub btnDBTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDBTest.Click
Dim strCon As String = "server=" & txtServerName.Text & ";uid=" & txtUsername.Text & ";pwd=" & txtPasswort.Text & ";database=" & txtDatenbank.Text & ";"
Dim strFilename As String = ""
Try
If frmMain.clsDB.getDBConnect(strCon, False) = True Then
If Not txtDatenbank.Text = "eazybusiness" Then
Dim iEazybusinessProfil As Integer = frmMain.getMySettingsPositionByDatabase("eazybusiness")
Dim strCon2 As String = "server=" & My.Settings.db_server.Item(iEazybusinessProfil) & ";uid=" & My.Settings.db_username.Item(iEazybusinessProfil) & ";pwd=" & My.Settings.db_passwort.Item(iEazybusinessProfil) & ";database=" & My.Settings.db_datenbankname.Item(iEazybusinessProfil) & ";"
frmMain.clsDB.getDBConnect(strCon2, True)
End If
'#################################################################################
'# >> Settings hinzufügen, wenn noch nicht vorhanden
'#################################################################################
Dim iTempMandantPosition As Integer = My.Settings.mandant_position ' neu
My.Settings.mandant_position = frmMain.clsDB.chkMandantPosition(txtDatenbank.Text)
Call frmMain.setSettingsInit(My.Settings.mandant_position)
'# Wenn nicht gleich, wird neu hinzugefügt
If Not iTempMandantPosition = My.Settings.mandant_position Then
'My.Settings.db_server.Insert(My.Settings.mandant_position, txtServerName.Text)
'My.Settings.db_datenbankname.Insert(My.Settings.mandant_position, txtDatenbank.Text)
'My.Settings.db_username.Insert(My.Settings.mandant_position, txtUsername.Text)
'My.Settings.db_passwort.Insert(My.Settings.mandant_position, txtPasswort.Text)
My.Settings.db_server.Item(My.Settings.mandant_position) = txtServerName.Text
My.Settings.db_datenbankname.Item(My.Settings.mandant_position) = txtDatenbank.Text
My.Settings.db_username.Item(My.Settings.mandant_position) = txtUsername.Text
My.Settings.db_passwort.Item(My.Settings.mandant_position) = txtPasswort.Text
'##############################################################################
'# >> Installation der Tabellen für die neue Datenbankverbindung
'##############################################################################
'# Existieren fehlende Tabellen
'strFilename = Application.StartupPath & "\SQL\table_list.txt"
'If IO.File.Exists(strFilename) = True Then
' '# Im Fehlerfall Tabellen installieren
' Dim strUpdateTabelle As String = frmMain.clsDB.chkInstallTableExists(strFilename)
' If Not strUpdateTabelle = "1" Then
' '# Basis Tabellen install_tables.sql installieren!
' strFilename = Application.StartupPath & "\SQL\install_tables.sql"
' If IO.File.Exists(strFilename) = True Then
' If frmMain.clsDB.setInstallUpdateByDatabase(strFilename, txtDatenbank.Text) = True Then
' MessageBox.Show("Neue Tabelle '" & strUpdateTabelle & " ' wurde installiert", "Update Tabelle", MessageBoxButtons.OK, MessageBoxIcon.Information)
' End If
' End If
' End If
'End If
Else
'# Update der Settings
My.Settings.db_server.Item(My.Settings.mandant_position) = txtServerName.Text
My.Settings.db_datenbankname.Item(My.Settings.mandant_position) = txtDatenbank.Text
My.Settings.db_username.Item(My.Settings.mandant_position) = txtUsername.Text
My.Settings.db_passwort.Item(My.Settings.mandant_position) = txtPasswort.Text
End If
My.Settings.Save()
'# Datenbankprofil in Combobox neuladen und auf neusten Eintrag setzen
My.Settings.mandant_letzter_name = frmMain.clsDB.getMandantbyDBName(txtDatenbank.Text)
'frmMain.clsDB.setMandantbyCombobox(frmMain.cmbMandant)
bConnected = True
'#############################################################################
'# >> Alle Mandanten durchgehen bis zum letzten Mandanten
'#############################################################################
'# Problem bei keinem Mandanten
Dim strMandant As String = cmbMandant.Text
If strMandant.Length < 0 Then
strMandant = txtDatenbank.Text
End If
'# Problem bei keinem Mandanten
'Dim iMandantPosition As Integer = cmbMandant.Items.Count
'If cmbMandant.Items.Count = 0 Then
'End If
'# Wenn letzter Mandant ausgewählt Fenster schließen
If cmbMandant.SelectedIndex = cmbMandant.Items.Count Then
MessageBox.Show("Verbindung von " & strMandant & " wurde erfolgreich gespeichert", "Datenbankverbindung " & txtDatenbank.Text & " gespeichert", MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.Close()
Else
If MessageBox.Show("Verbindung von " & strMandant & " wurde erfolgreich gespeichert" & vbCrLf & vbCrLf & "Möchten Sie den zum nächsten möglichen Mandanten wechseln, um die Datenbankeinstellungen zu speichern?", "Datenbankverbindung " & txtDatenbank.Text & " gespeichert", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
If cmbMandant.Items.Count = 0 And Not cmbMandant.Text = "" Then
cmbMandant.SelectedIndex = cmbMandant.SelectedIndex + 1
Else
Call frmMain.clsDB.setMandantbyCombobox(cmbMandant, True)
End If
Else
Me.Close()
End If
End If
Else
MessageBox.Show("Verbindung NICHT erfolgreich", "Datenbankverbindung fehlerhaft", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
'My.Settings.db_server.RemoveAt(iCurrent)
'My.Settings.db_datenbankname.RemoveAt(iCurrent)
'My.Settings.db_username.RemoveAt(iCurrent)
'My.Settings.db_passwort.RemoveAt(iCurrent)
End If
Catch ex As Exception
MessageBox.Show("Fehler: " & ex.Message, "btnDBTest_click", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub cmbMandant_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbMandant.SelectedIndexChanged
Dim strDatabase As String = ""
'# Einstellungsposition anzeigen + Name
msgMaster.Text = "Bei Einstellung: " & cmbMandant.Text & " (" & My.Settings.mandant_position & ")"
If bConnected = True And bIsLoading = False Then
'# Laden der aktuellen Settingspostion mittels des aktuellen Datenbanknamens mit dem Zwischenschritt über den Mandantennamen
strDatabase = frmMain.clsDB.getMandantDatabaseByMandantName(cmbMandant.Text)
My.Settings.mandant_position = frmMain.getMySettingsPositionByDatabase(strDatabase)
msgMaster.Text = "Bei Einstellung: " & cmbMandant.Text & " (" & My.Settings.mandant_position & ")"
'# Fehler es wird das aktuelle Profil nicht gefunden - noch nicht angelegt
If My.Settings.mandant_position = -1 Then
'# Lade das Standarddatenbank Profil
My.Settings.mandant_position = frmMain.getMySettingsPositionByDatabase("eazybusiness")
Dim iCurrent As Integer = My.Settings.mandant_position
msgMaster.Text = "Bei Einstellung: Standard 'eazybusiness' (" & My.Settings.mandant_position & ")"
If My.Settings.mandant_position = -1 Then
MessageBox.Show("Es wird empfohlen die Standarddatenbank eazybusiness anzulegen", "cmbMandant_selected", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
'txtServerName.Text = My.Settings.db_server.Item(iCurrent).ToString
'txtUsername.Text = My.Settings.db_username.Item(iCurrent).ToString
'txtPasswort.Text = My.Settings.db_passwort.Item(iCurrent).ToString
'txtDatenbank.Text = My.Settings.db_datenbankname.Item(iCurrent).ToString
txtServerName.Text = ""
txtUsername.Text = ""
txtPasswort.Text = ""
txtDatenbank.Text = strDatabase
Else
'# Anzeigen der aktuellen Einstellungen
txtServerName.Text = My.Settings.db_server.Item(My.Settings.mandant_position).ToString
txtUsername.Text = My.Settings.db_username.Item(My.Settings.mandant_position).ToString
txtPasswort.Text = My.Settings.db_passwort.Item(My.Settings.mandant_position).ToString
txtDatenbank.Text = My.Settings.db_datenbankname.Item(My.Settings.mandant_position).ToString
End If
End If
End Sub
Private Sub txtPasswort_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtPasswort.KeyDown
If e.KeyCode = Keys.Enter Then
btnDBTest.PerformClick()
End If
End Sub
'######################################################
'# >> Beim schließen vom Formular
'######################################################
Private Sub frmDatenbankEinstellungen_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
'# Mandanten in die Combobox übertragen
Call frmMain.clsDB.setMandantbyCombobox(frmMain.cmbMandant, False)
End Sub
End Class