| |
VB.NET - FortgeschritteneIn Form bearbeiten | | | Autor: ERBRU | Datum: 25.09.17 12:26 |
| Hallo zusammen,
jetzt mal zum untenstehenden Code "Datatable erstellen" aus Textdatei eine Frage
wie kann ich mittels Eingabemaske diese Tabelle noch bearbeiten? und so dann speichern
zum Beispiel dem TAKT-ORT etwas eintragen?
habe ja kein Dataset oder bin ich da auf dem Holzweg.
Private Sub dt1Initialisieren()
With dt1
With dt1
Dim IDCol As DataColumn = dt1.Columns.Add("ID", Type.GetType( _
"System.Int32"))
IDCol.AllowDBNull = False
IDCol.Unique = True
.Columns.Add("Pos.", Type.GetType("System.String"))
.Columns.Add("Druck", Type.GetType("System.String"))
.Columns.Add("InventarNr", Type.GetType("System.String"))
.Columns.Add("Spez.-Bemi-Nr.", Type.GetType("System.String"))
.Columns.Add("Bezeichnung", Type.GetType("System.String"))
.Columns.Add("vorhanden", Type.GetType("System.String"))
.Columns.Add("-Datum", Type.GetType("System.String"))
.Columns.Add("-TAKT-Ort-", Type.GetType("System.String"))
.Columns.Add("Kst.:", Type.GetType("System.String"))
.Columns.Add("Typ", Type.GetType("System.String"))
.Columns.Add("Teilenummer", Type.GetType("System.String"))
.Columns.Add("IDNr", Type.GetType("System.String"))
.Columns.Add("FabrikNr", Type.GetType("System.String"))
.TableName = "Checkliste"
End With
End With
Dim primaryKey(1) As DataColumn
primaryKey(1) = dt1.Columns("ID")
dt1.PrimaryKey = primaryKey
End Sub
Private Sub DatenLaden(ByVal FileName As String)
'0 Pos.
'1 Druck
'2 Inventar-Nr.
'3 Spez.-Bemi-Nr.
'4 Bezeichnung
'5 vorhanden ?
'X -Datum
'6 gefunden an TAKT?
'7 Kostenstelle
'8 Typ
'9 Teile-Nr.
'10 ID-Nr.
'11 Fabrik -Nr.
dt1.Clear()
Dim sr As New System.IO.StreamReader(FileName)
Dim Zeile As String = Nothing
Dim i As Integer = 0
Dim arr() As String = Nothing
Do While Not sr.EndOfStream
Zeile = sr.ReadLine()
arr = Zeile.Split(";")
If Not arr(0).Contains("Pos.") Then
Dim newRow As DataRow = dt1.NewRow
i = i + 1
newRow("ID") = i
newRow("Pos.") = arr(0)
newRow("Druck") = arr(1)
newRow("InventarNr") = arr(2)
newRow("Spez.-Bemi-Nr.") = arr(3)
newRow("Bezeichnung") = arr(4)
newRow("vorhanden") = arr(5)
newRow("-Datum") = ""
newRow("-TAKT-Ort-") = arr(6)
newRow("Kst.:") = arr(7)
newRow("Typ") = arr(8)
newRow("Teilenummer") = arr(9)
newRow("IDNr") = arr(10)
newRow("FabrikNr") = arr(11)
dt1.Rows.Add(newRow)
End If
Loop
sr.Close()
Application.DoEvents()
End Sub
Beitrag wurde zuletzt am 25.09.17 um 12:27:59 editiert. | |
Re: In Form bearbeiten | | | Autor: Manfred X | Datum: 25.09.17 14:20 |
| Hallo!
Eine Datatable benötigt kein Dataset.
Sie kann direkt, per Bindingsource oder Dataview an Controls
gebunden und über diese Controls vom Benutzer bearbeitet werden
(Editieren, Löschen, XML-Speichern usw.)
Das Dataset wird für Datenbank-Nutzung oder für Tabellen-Verknüpfungen
genutzt (ADO, Schlüssel, Relationen). | |
Re: In Form bearbeiten | | | Autor: ERBRU | Datum: 27.09.17 18:24 |
| Hallo Manfred X,
Danke, geht bei mir so.
Ist es auch Richtig? es so zu machen
#Region "BindingSources Event"
Private Sub DGV1_CurrentCellChanged(sender As Object, e As EventArgs) _
Handles DGV1.CurrentCellChanged
If DGV1.CurrentRow Is Nothing Then Return
tbxDruck.Text = DTBS_CurrentRow("Drucken").ToString
tbxInventarnummer.Text = DTBS_CurrentRow("InventarNr").ToString
tbxBezeichnung.Text = DTBS_CurrentRow("Bezeichnung").ToString
tbxvorhanden.Text = DTBS_CurrentRow("vorh").ToString
tbxKostenstelle.Text = DTBS_CurrentRow("Kostenstelle").ToString
tbxOrt.Text = DTBS_CurrentRow("Ort").ToString
'
tbxTyp.Text = DTBS_CurrentRow("Typ").ToString
tbxBM.Text = DTBS_CurrentRow("BMNr").ToString
tbxTeilenummer.Text = DTBS_CurrentRow("Teilenummer").ToString
If IsDate(DTBS_CurrentRow("geprueft")) = True Then
tbxgefundenam.Text = CDate(DTBS_CurrentRow( _
"geprueft")).ToShortDateString
tbxgefundenam.BackColor = Color.Lime
Else
tbxgefundenam.Text = String.Empty
tbxgefundenam.BackColor = Color.MintCream
End If
End Sub
Private Sub btnDatensatz_Aktualisieren_Click(sender As Object, e As _
EventArgs) Handles btnDatensatz_Aktualisieren.Click
Dim currentRow As DataRow = dt1.Rows(dt1.Rows.IndexOf(DirectCast( _
BindingSource.Current, DataRowView).Row))
With currentRow
.Item(2) = tbxDruck.Text
.Item(5) = tbxBezeichnung.Text
.Item(6) = tbxvorhanden.Text
.Item(8) = tbxOrt.Text
.Item(9) = tbxKostenstelle.Text
.Item(10) = tbxTyp.Text
.Item(11) = tbxTeilenummer.Text
.Item(12) = tbxBM.Text
End With
End Sub
Private Sub tbxInventarnummer_Filter_TextChanged(sender As Object, e As _
EventArgs) Handles tbxInventarnummer_Filter.TextChanged
Dim strFilter As String = tbxInventarnummer_Filter.Text
'BindingSource.Filter = String.Format("[{0}] Like '*{1}*'", , strFilter)
dv1.RowFilter = "InventarNr LIKE '" & strFilter & "%'"
End Sub
#End Region | |
Re: In Form bearbeiten | | | Autor: ERBRU | Datum: 28.09.17 10:56 |
| Hallo ManfredX,
Danke für deine Antwort.
kannste mir Datatable (DataBindings / Bindingsource)dazu 1-2 Beispiele machen?
wenn du etwas Zeit hast. Danke, Danke
- add
- edit
- speichern | |
Beispiel für DataBindings | | | Autor: Manfred X | Datum: 28.09.17 12:47 |
| Public Class frmDataBindings
'Datenquelle
Dim dt As New DataTable
Dim WithEvents bs As New BindingSource
'Datenbindung / Controls
Dim lblSpalte0 As New Label With _
{.Parent = Me, .Width = 100}
Dim WithEvents txtSpalte1 As New TextBox _
With {.Parent = Me, .Top = 20, .Width = 100}
Dim WithEvents dtpSpalte2 As New DateTimePicker _
With {.Parent = Me, .Top = 40}
'Navigation in Zeilen
Dim WithEvents btnNext As New Button With _
{.Parent = Me, .Top = 80, .Width = 100, .Text = "Next"}
Dim WithEvents btnPrevious As New Button With _
{.Parent = Me, .Top = 80, .Width = 100, .Left = 110, .Text = "Prev."}
'Zeile anfügen
Dim WithEvents btnAdd As New Button With _
{.Parent = Me, .Top = 110, .Width = 100, .Text = "Add"}
'XML speichern
Dim WithEvents btnSave As New Button With _
{.Parent = Me, .Top = 130, .Width = 100, .Text = "Save"}
Private Sub frmDataBindings_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
'Testdaten
With dt
With .Columns
.Add("ID", GetType(Integer))
.Add("TextSpalte", GetType(String))
.Add("DateSpalte", GetType(Date))
End With
.TableName = "MyTable"
.PrimaryKey = {dt.Columns(0)}
.Columns(0).AllowDBNull = False
.Columns(0).Unique = True
With .Rows
.Add(1, "Zeile1", New Date(2017, 5, 21))
.Add(2, "Zeile2", New Date(2017, 6, 11))
.Add(3, "Zeile3", New Date(2017, 7, 25))
.Add(4, "Zeile4", New Date(2017, 8, 4))
End With
End With
'Datenbindungen
bs.DataSource = dt
lblSpalte0.DataBindings.Add _
(New Binding("Text", bs, "ID"))
txtSpalte1.DataBindings.Add _
(New Binding("Text", bs, "TextSpalte", False, _
DataSourceUpdateMode.OnPropertyChanged))
dtpSpalte2.DataBindings.Add _
(New Binding("Value", bs, "DateSpalte", False, _
DataSourceUpdateMode.OnPropertyChanged))
End Sub
Private Sub btnNext_Click(sender As Object, _
e As System.EventArgs) Handles btnNext.Click
With bs
If .Position = .Count - 1 Then .Position = 0 Else .Position += 1
End With
End Sub
Private Sub btnPrevious_Click(sender As Object, _
e As System.EventArgs) Handles btnPrevious.Click
With bs
If .Position = 0 Then .Position = .Count - 1 Else .Position -= 1
End With
End Sub
Private Sub btnAdd_Click(sender As Object, _
e As System.EventArgs) Handles btnAdd.Click
dt.Rows.Add(dt.Rows.Count + 1, "new", Today)
bs.Position = bs.Count - 1
End Sub
Private Sub btnSave_Click(sender As Object, _
e As System.EventArgs) Handles btnSave.Click
dt.WriteXml("C:\daten\testxyz.xml", True)
End Sub
End Class | |
Re: Beispiel für DataBindings | | | Autor: ERBRU | Datum: 28.09.17 14:53 |
| Danke da kann ich ja was mit anfangen.
die Databindings funktioniert dann auch in DGV? | |
Re: Beispiel für DataBindings | | | Autor: Manfred X | Datum: 28.09.17 19:50 |
| Bei Datenbindung werden die - durch das Control - modifizierten Werte
direkt in die Datenquelle (DataTable) eingetragen (PropertyChanged).
Jedes daran gebundene Control empfängt dann diese Daten -
eventuell muß ein "Reset" durchgeführt werden (neue Abfrage der Quelle),
damit die Änderungen dort sichtbar werden. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|