informatikerin86 Geschrieben 6. Oktober 2009 Geschrieben 6. Oktober 2009 Hallo Leute, ich habe das Gefühl das im Internet dazu schon was stehen müsste, leider habe ich nichts gefunden. Vielleicht könnt ihr mir helfen! Ich schreibe eine Anwendung mit VB.net das auf eine Access-DB zugreift. Die Daten lade ich mit einem DataSet über DataBinding in meine Form. Nun möchte ich nur einen bestimmten Datensatz anzeigen lassen. Der zu suchende Wert wird aus einer Text-Datei ausgelesen. Wie bekomme ich das hin das dieser Datensatz angezeigt wird? Bisher finde ich nur Antworten mit einem DataView, das muss doch aber auch ohne gehen. Grüße Informatikerin Zitieren
0815FIA Geschrieben 6. Oktober 2009 Geschrieben 6. Oktober 2009 Was spricht denn gegen ein DataView? Zitieren
informatikerin86 Geschrieben 6. Oktober 2009 Autor Geschrieben 6. Oktober 2009 wäre ein dataview nicht irgendwie doppelt gemoppelt?? ich dachte das würde auch einfacher gehen Zitieren
Gateway_man Geschrieben 6. Oktober 2009 Geschrieben 6. Oktober 2009 (bearbeitet) Das ist zwar etwas unorthodox aber so könntest du ohne ein dataview nach bestimmten inhalten filtern: 'Erster dt wird mit gesamten inhalt der Abfrage befühlt 'Zweiter dt wird für die Ergebnisse erstellt Dim dt As New DataTable Dim dt2 As New DataTable Dim cmd As New SqlServerCe.SqlCeCommand cmd.Connection = Con cmd.CommandText = "SELECT * From test" Dim ada As New SqlServerCe.SqlCeDataAdapter(cmd) ada.Fill(dt) For i As Integer = 0 To dt.Rows.Count - 1 Dim seachpattern As String = dt.Rows(i)("Inhalt").ToString() 'Da hier nur eine Column existiert wird auch nur dieser wert abgefragt 'und in den searchpatternstring übergeben. If seachpattern.Contains("test") Then 'wenn der string den in klammern gesetzten wert enthällt, 'dann wird die entsprechende row dem ergebniss dt hinzugefügt dt2.Rows.Add(dt.Rows(i)) End If Next alternativ wenn du mehr columns besitzt und alle auch durchsuchen willst, rate ich dir in diesem Falle ein Array, beispielsweise so: ....... For i As Integer = 0 To dt.Rows.Count - 1 Dim seachpattern(dt.Rows.Count) As String For i2 As Integer = 0 To dt.Columns.Count seachpattern(i2) = dt.Rows(i)(i2).ToString() Next 'hier dann die weitere Inhaltsspezifische abfrage des arrays ........ Next Hatte jetzt leider keine Zeit zum testen des zweiten code-teils.... Bearbeitet 6. Oktober 2009 von Gateway_man Zitieren
TDM Geschrieben 6. Oktober 2009 Geschrieben 6. Oktober 2009 wäre ein dataview nicht irgendwie doppelt gemoppelt?? Eigentlich nicht, da du in einem DataView auch bestimmte Spalten ausblenden kannst usw. Notfalls kannst du es auch mit DataTable.Select mal probieren. Zitieren
informatikerin86 Geschrieben 6. Oktober 2009 Autor Geschrieben 6. Oktober 2009 ok ok, überredet, vielleicht nehme ich dann doch das DataView... Dim datav As New DataView datav.Table = Me.ProzessdatenbankDataSet.Prozessdaten_2641 Dim intIndex As Integer datav.Sort = "Rezept-Nr" intIndex = datav.Find(rezeptnr) Me.BindingContext(datav).Position = intIndex So siehts momentan aus. Nur wie bekomme ich jetzt die Textfelder die mit DataBinding angebunden sind dazu die Werte anzuzeigen? Muss ich jedem sagen das es jetzt die Daten vom DataView ziehen soll? Zitieren
informatikerin86 Geschrieben 6. Oktober 2009 Autor Geschrieben 6. Oktober 2009 Mein Workaround: Dim datav As New DataView datav.Table = Me.ProzessdatenbankDataSet.Prozessdaten_2641 Dim intIndex As Integer datav.Sort = "Rezept-Nr" intIndex = datav.Find(rezeptnr) Me.BindingContext(datav).Position = intIndex intIndex = intIndex + 1 Me.BindingNavigatorPositionItem.Text = intIndex Prozessdaten_2641BindingNavigator.PositionItem.PerformClick() Prozessdaten_2641BindingNavigator.PositionItem.Select() Me.Activate() Danke für eure Mithilfe! Zitieren
paslanmazbul Geschrieben 7. Oktober 2009 Geschrieben 7. Oktober 2009 Public Shared Function DV_Sonuc(sql As String) As DataView Dim sqlAdapter As New MySqlDataAdapter(sql, sqlBaglanti) Dim ds As New DataSet() sqlAdapter.Fill(ds) sqlBaglanti.Close() Return ds.Tables(0).DefaultView End Function thanx ? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.