| 

.NET C# Java Javascript Exception

1
Habe folgendes Problem mit Databinding wenn zwei txt's


Me.txtKNR.DataBindings.Add(New Binding("Text", viewKunden, "KNR"))

Wenn ich die unter DataBinding aktiviere werden keine Werte Angezeigt... ComboBox geht..

Me.txtSNR.DataBindings.Add(New Binding("Text", viewServiceLaufendeNummer, "Zeahler"))


Code:
--------------------------------------------------------------
#Region " Deklarationen für Datenverbindung "
Dim dbTreiber As String = "Microsoft.Jet.OLEDB.4.0"
Dim dbQuelle As String = Application.StartupPath & "\dbFaktur.mdb"
'1 Connection-Objekt wird benötigt:
Dim objConnection As OleDb.OleDbConnection = _
New OleDb.OleDbConnection("Provider=" & dbTreiber & "; Data Source=" & dbQuelle)
'5 Datenadapter, jeweils für Kunden-, Artikel- und Umsatztabelle, ServiceLaufendeNummer
Dim adapterKunden As OleDb.OleDbDataAdapter
Dim adapterMonteur As OleDb.OleDbDataAdapter
Dim adapterArtikel As OleDb.OleDbDataAdapter
Dim adapterUmsatz As OleDb.OleDbDataAdapter
Dim adapterServiceUmsatz As OleDb.OleDbDataAdapter
Dim adapterStundenzettel As OleDb.OleDbDataAdapter
Dim adapterServiceLaufendeNummer As OleDb.OleDbDataAdapter ' TM 21032018

'1 Dataset, in dem dann 4 Tabellen gespeichert werden
Dim objDataSet As DataSet
'5 Views, jeweils für Kunden-, Artikel- und Umsatztabelle im DataSet, ServiceLaufendeNummer
Dim viewKunden As DataView
Dim viewMonteur As DataView
Dim viewArtikel As DataView
Dim viewUmsatz As DataView
Dim viewServiceUmsatz As DataView
Dim viewStundenzettel As DataView
Dim viewServiceLaufendeNummer As DataView ' TM 21032018

'1 CommandBuilder für Umsatztabelle (nur in diese soll geschrieben werden)
Dim objCommandBuilder As OleDb.OleDbCommandBuilder

'Globaler Zähler für Rechnungspositionen
Dim Pos As Integer

#End Region

Private Sub ServiceBericht_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Säubern der Views
viewKunden = Nothing
viewMonteur = Nothing
viewArtikel = Nothing
viewUmsatz = Nothing
viewServiceUmsatz = Nothing
viewStundenzettel = Nothing
viewServiceLaufendeNummer = Nothing ' TM 21032018

'ListView.MultiSelect = False '### Multiselect deaktivieren TM 25.10.2017

'Erzeugen des DataSet-Objekts
objDataSet = New DataSet()

'Öffnen der Verbindung zur Datenbank
objConnection.Open()

'Kundendaten einholen
adapterKunden = New OleDb.OleDbDataAdapter("SELECT KNR, [zuname] & ', ' & [vorname] AS Name FROM tabKunden", objConnection)
adapterKunden.Fill(objDataSet, "tabKunden")
viewKunden = New DataView(objDataSet.Tables("tabKunden"))

'Personaldaten einholen tabMonteur
adapterMonteur = New OleDb.OleDbDataAdapter("SELECT PID, [VName] & ', ' & [NName] AS Monteur FROM tabMonteur", objConnection)
adapterMonteur.Fill(objDataSet, "tabMonteur")
viewMonteur = New DataView(objDataSet.Tables("tabMonteur"))

'Artikeldaten einholen
adapterArtikel = New OleDb.OleDbDataAdapter("SELECT * FROM tabArtikel", objConnection)
adapterArtikel.Fill(objDataSet, "tabArtikel")
viewArtikel = New DataView(objDataSet.Tables("tabArtikel"))

'Stundenzettel einholen ---- Ole Adapter ----
'adapterStundenzettel = New OleDb.OleDbDataAdapter("SELECT * FROM tabStundenzettel", objConnection)
adapterStundenzettel = New OleDb.OleDbDataAdapter("SELECT [SKDN] & ' - ' & [SLeistungsdatum] & ' - ' & [SLeistungsdatumEnd] & ' - ' & [SVon] & ' - ' & [SBis] & ' - ' & [SAuftrag] & ' - ' & [SLeistung] & ' - ' & [Stunden] AS Stundenzettel FROM tabStundenzettel", objConnection)
'adapterStundenzettel = New OleDb.OleDbDataAdapter("SELECT SKDN, [SKDN] & ' - ' & [SVon] & ' - ' & [SLeistungsdatum] & ' - ' & [SLeistungsdatumEnd] & ' - ' & [SBis] & ' - ' & [SAuftrag] & ' - ' & [SLeistung] & ' - ' & [Stunden] AS Stundenzettel FROM tabStundenzettel", objConnection)
adapterStundenzettel.Fill(objDataSet, "tabStundenzettel")
viewStundenzettel = New DataView(objDataSet.Tables("tabStundenzettel"))

'ServiceLaufendeNummmer einholen ----- TM 21032018
adapterServiceLaufendeNummer = New OleDb.OleDbDataAdapter("Select * FROM tabServiceLaufendeNummer", objConnection)
adapterServiceLaufendeNummer.Fill(objDataSet, "tabServiceLaufendeNummer")
viewServiceLaufendeNummer = New DataView(objDataSet.Tables("tabServiceLaufendeNummer"))


'Combobox für Kunden an Datenquelle binden
Me.cboKunde.DataBindings.Add("Text", viewKunden, "Name") '*** siehe unten...
Me.cboKunde.DataSource = viewKunden
Me.cboKunde.DisplayMember = "Name"

'### Textfeld SNR Datenquelle binden
'Me.txtSNR.DataBindings.Add("Text", viewServiceLaufendeNummer, "Zeahler") 'Hier wird der Weert in die textbox geschrieben... Hier muss man ansetzen für die Nummer erhöhen
'######## So hier den Code einsetzen zur Ermittlung der letzten Zählers ########






'######## ---------------------------------------------------------------- ########


'Combobox für Service Personal an Datenquelle binden tabMonteur
Me.cboMonteur.DataBindings.Add("Text", viewMonteur, "Monteur")
Me.cboMonteur.DataSource = viewMonteur
Me.cboMonteur.DisplayMember = "Monteur"

'Combobox für Artikel an Datenquelle binden
'Me.cboArtikel.DataBindings.Add("Text", viewArtikel, "Bezeichnung")
'Me.cboArtikel.DataSource = viewArtikel
'Me.cboArtikel.DisplayMember = "Bezeichnung"

'Combobox für Stundenzettel an Datenquelle binden
Me.cboSArbeiten.DataBindings.Add("Text", viewStundenzettel, "Stundenzettel") '### "Stundenzettel" !!!!!!! wie bekomme ich in den unteren ComboBox das rein!!!
'Me.cboSArbeiten.DataBindings.Add("Text", viewStundenzettel, "SKDN")
Me.cboSArbeiten.DataSource = viewStundenzettel
Me.cboSArbeiten.DisplayMember = "Stundenzettel" '### So hier muss auch "Stundenzettel" stehen sonst werden die Unterzeilen ComboBox nicht mit angezeigt ....

'### test Combobox SNR
Me.cboSNR.DataBindings.Add("Text", viewServiceLaufendeNummer, "Zeahler")
Me.cboSNR.DataSource = viewServiceLaufendeNummer
Me.cboSNR.DisplayMember = "Zeahler"

'Bestimmen der neuen Servicenummer basierend auf Umsatztabelle der Datenbank
adapterUmsatz = New OleDb.OleDbDataAdapter("SELECT MAX(SNR)+1 AS Maxnr FROM tabServiceUmsatz", objConnection)
adapterUmsatz.Fill(objDataSet, "tabServiceUmsatz")
viewUmsatz = New DataView(objDataSet.Tables("tabServiceUmsatz"))
Me.txtSNR.DataBindings.Add("Text", viewUmsatz, "Maxnr")

'Umsatzdaten "normal" einholen (damit später in Umsatztabelle geschrieben werden kann)
adapterServiceUmsatz = New OleDb.OleDbDataAdapter("SELECT * FROM tabServiceUmsatz", objConnection)
adapterUmsatz.Fill(objDataSet, "tabServiceUmsatz")
viewUmsatz = New DataView(objDataSet.Tables("tabServiceUmsatz"))

'*************************************************************************
'CommandBuilder zum Schreiben in Umsatztabelle konfigurieren
adapterServiceUmsatz.SelectCommand = New OleDb.OleDbCommand("SELECT * FROM tabServiceUmsatz", objConnection)
objCommandBuilder = New OleDb.OleDbCommandBuilder(adapterServiceUmsatz)
'*************************************************************************

'Mehrwertsteuer und Brutto-Rechnungsbetrag leeren!!!!
'txtMwSt.Text = "0,00 €"
'txtRBetrag.Text = "0,00 €" 'Format("{0:C}")

'##### txtSNR Textfeld binden tabServiceLaufendeNummer binden....
'Me.txtSNR.DataBindings.Add(New Binding("Text", viewServiceLaufendeNummer, "Zeahler")) 'Wenn es aktiviert wird ist die KNR weg!!!!!!!!

'##### Combobox an Kundennummer viewKunden binden wenn Combobox ausgewählt wird ####### NEU TM 27092017
Me.txtKNR.DataBindings.Add(New Binding("Text", viewKunden, "KNR"))



'PositionAnzeigen()



End Sub

--------------------------------------------------------------

Gruss
Thomas Meier
News:
21.03.2018
tsmeier 51 1 3
2 Antworten
0
erst einmal ein Hinweis. Der Code ist nur sehr schwer zu lesen und zu verstehen. Ich würde dir empfehlen die gesamte Datenzugriffslogik in ein eigenes Modul auszulagern. Außerdem führt das Lesen von Daten im Load-Event des Formulars in der Regel zu unschönem Einfrieren der Anzeige.

Aber nun zu deinem eigentlichen Problem. Eigentlich kann ich an dem Code nichts grundsätzlich falsches feststellen. Aber VB ist, was Databinding angeht, manchmal ein bisschen sperrig.

Was mir jedoch aufgefallen ist, ist dass du die beiden Textboxen mit ".Add(New Binding(..." bindest. Versuche mal, das "New Binding(..." wegzulassen und binde die Textboxen analog zu den Comboboxen mit txtKNR.DataBindings.Add("Text", viewKunden, "KNR").

Ist dir eigentlich bewusst, dass du txtSNR zweimal bindest (einmal an viewUmsatz und einmal an viewServiceLaufendeNummer)? Das könnte auch zu deinem Problem führen.

Manchmal hilft es, ein .DataBindings.Clear() vor dem .Add() einzufügen.
22.03.2018
luedi 2,1k 1 9
0
Ok hab die Umsatztabelle kpl. heraus genommen die wird hier nicht benötigt.

Gruss
Thomas Meier
23.03.2018
tsmeier 51 1 3

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH