PDA

Vollständige Version anzeigen : 'Recordset' in VB.NET


mipo
11.03.2004, 09:37
Hallo Leute!
Bin gerade beim um/einsteigen (von VB6) und stosse momentan von einem auf das nächster Problem.

Wie schaffe ich es ein VB.NET-Recordset einer Tabelle zu durchlaufen bzw. ein Recordset zu erstellen.

Ich hab in meinem Formular ein Dataset auf eine kleine Access DB erstellt- kann mir die Daten der Tabellen in einem DBGrid anzeigen - ABER wie durchlaufe ich die Records im CODE???

TykaAndreas
12.03.2004, 17:33
weiss nicht ob du darauf ein antwort kriegen wirst , das ist einfach zu banal

ich unterstell mal, dass Du den Code für das Dataset aus dem Web oder einem Buch hast , mit sicherheit werden sich das Beispeile finden lassen wo eine Datatable ausgelesen wird um eien Lisbox zu füllen

mipo
15.03.2004, 07:56
Danke für Deine NETTE Antwort....

TykaAndreas
15.03.2004, 14:21
vielleicht hätt ich banal weglassen solllen,

war nur ein gut gemeinter Hinweis, wahrscheinlich willst du in 6 Monaten auch ncoh antworten kriegen , es ist nun mal so , dass solche Foren sich eine best. Philosophie auf die Fahne schreiben.

Und wenn Du dich grade mit dem Datset beschäftigst (als jemand der von beim VB6 nach VB.NEt umsteigt ) könnte ich mir vorstellen , dass es für manch einen aussieht wie "Leute macht mal... hab keine Zeit dafür"

mipo
15.03.2004, 14:27
Tut mir leid wenn das so gewirkt hat auf Dich!
Bin keinesweg ein 'Forenschmarotzer' sondern versuche auch immer Treats zu beantworten.
Meine Situation ist leider so, dass ich gerade auf .net umsteige und Ende dieser anfang nächster Woche ein Teilprojekt abschliessen soll!

Hab mir Bücher bestellt - die leider noch nicht geliefert wurden und deshalb ich momentan ein bißchen in der Luft hänge.

da maddin
24.04.2007, 14:23
Ich hab deinen Beitrag grad im Netz gefunden weil ich die selbe Hilfe gebraucht hatte!
Und ich muss sagen, dass einzigste was banal an dem ganzen war war deine Antwort!
Du hättest Intelligenz zeigen können und kurz und knapp zeigen können wie´s es geht. Stattdessen hast du dir mehr Zeit genommen eine Arrogante Antwort zu finden. es sei denn du weißt natürlich garnicht wirklich wies geht;) .
Ich denke eine einfache Lösung , wenn es die gibt oder aber ein hilfreicher Link (bspw. wo etwas zur Lösung des Problems zu finden ist) wäre wesentlich hilfreicher, als solch banale Antworten.

Muss ich einfach mal los werden . . .

Joris
24.04.2007, 14:40
Hallo,

In ADO.Net gibt es kein Recordset mehr. ;)

Dafür lässt sich das anders machen:

Datensatznavigation mit ADO.NET (http://www.devtrain.de/artikel_846.aspx)

Viele Grüße

Joris

hcscherzer
24.04.2007, 18:29
Moin mipo,
wenn Du nur lesend auf die Daten zugreifen willst, ist es am einfachsten mit einem SqlDataReader:Dim cm As SqlClient.SqlCommand
Dim dr As SqlClient.SqlDataReader
Dim x As Int32, y As String
cnn.open()
cm = cnn.CreateCommand
cm.CommandText = "SELECT * FROM DeineTabelle"
dr = cm.ExecuteReader
Do While dr.Read()
x = dr.GetInt32(0)
y = dr.GetString(1)
Loop
dr.Close()
cnn.close()
Keine Fehlerbehandlung; cnn ist ein gültiges Connect-Object; Feld(0) in DeineTabelle ist ein 4-Byte-Integer und Feld(1) z.B. ein VarChar.

rayek
25.04.2007, 14:44
weiss nicht ob du darauf ein antwort kriegen wirst , das ist einfach zu banal

ich möchte jetz nich böswillig auf dir rumhacken, aber:
wenn dir das zu banal ist, dann antworte doch einfach nicht, betätige den backbutton deines brausers bzw clicke das kleine kreuz rechts oben.

was soll er denn jetz mit dem hinweis, daß sein poblem zu banal (laut dir)
sei, anfangen?

hier mal für den schreibzugriff....

Imports System.Data.OleDb


private sub blah(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Command1.Click
Dim rsByCommand
Dim connLog
Dim strConn

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBDir & "\plan.mdb;"
connLog = CreateObject("ADODB.Connection")
connLog.Open(strConn)

rsByCommand = CreateObject("ADODB.Command")
rsByCommand.ActiveConnection = connLog
rsByCommand.CommandText = "INSERT INTO details1 (YearField,TopicField,DateField,SubjectField,ProjectsField,ContentsField,FileFie ld,PCField,sortID,important) VALUES('" & DetailsYearText & "','" & DetailsTopicText & "','" & DetailsDateText & "','" & DetailsSubjectText & "','" & DetailsProjectsText & "','" & DetailsContentsText & "','" & DetailsFileText & "','" & DetailsPCText & "','" & sortIDText & "','" & bImportant & "')"
rsByCommand.Execute()
connLog.Close()
connLog = Nothing
end sub

ich glaub, das is kein ADO.Net, sondern "profanes" ADO. man kann das fragment - soweit ich mich entsinne (mach eigentlich nix groß mit der ADO goldkante ( :D ) )- getrost als obsolet bezeichnen, dient hier aber einfach nur mal als beispiel, wie man schreibzugriffe in VB.Net lösen kann. wie gesagt, nur ein beispiel...;)
schau einfach mal bei devtrain vorbei, die haben eigentlich immer was gutes parat....
servuz,
rayek

edit:
hier noch was um den nächsten datensatz anzuzeigen (lesezugriff -> das ist jetzt ADO.NET...sry für den kauderwelsch -.-)

Dim objDA As OleDb.OleDbDataAdapter
Dim objDS As New Data.DataSet
Dim strResult(6) As String

Private Sub ViewNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ViewNext.Click
strSql = "Select * From table"
objDA = New OleDb.OleDbDataAdapter(strSQL, strConn2)
objDS = New Data.DataSet
objDA.Fill(objDS, "deine_tabelle")
With objDS.Tables(0)
RowAmmount = .Rows.Count
intCounter = intCounter + 1
If intCounter >= RowAmmount - 1 Then
ViewNext.Enabled = False
End If
If intCounter >= RowAmmount Then
intCounter = RowAmmount
Else
strResult(0) = .Rows(intCounter).Item("YearField").ToString
strResult(1) = .Rows(intCounter).Item("TopicField").ToString
strResult(2) = .Rows(intCounter).Item("ContentsField").ToString
strResult(3) = .Rows(intCounter).Item("DurationField").ToString
strResult(4) = .Rows(intCounter).Item("EffectiveDurationField").ToString
strResult(5) = .Rows(intCounter).Item("FinishedField").ToString
strResult(6) = .Rows(intCounter).Item("ID").ToString
'textfelder, in der die werte erscheinen sollen
ViewContents.Text = strResult(2)
ViewContents.Text()
ViewTimeFrameO.Text = strResult(3)
ViewTimeFrameEffective.Text = strResult(4)
intCounterRow = 0
End Sub

ich hoffe, ich hab nix vergessen. hab ich ausm projekt von vor 3 jahren rausgeholt, auch hier soll es nur als denkanstoß dienen....:D

HTH,
rayek

myrix
14.08.2007, 17:06
Hi, hockte gerade vor dem gleichen Problem wie oben beschrieben. Muss dazu sagen ich versuche gerade den Sprung von VBA zu vb.net (is ein bissl größer als von VB6, egal)
Den Aufruf von ADO kenn ich ich aus VBA, nun wollte ich aber mal teste, was die .Net-Boardmittel so anrichten können und Dank rayek kann ich mir einen Reim daraus machen.
Aber mal ehrlich, ich will ja nicht jammern, doch in VBA reichte ein 5-Zeiler um Daten rauszuholen und wieder reinzuschieben, ohne über Adapter zu tänzeln, um sich dann mühsam über die Row-Indizes zum Wert zu hangeln.

Gibt es da nicht ne Kurzform, einen einfacheren Weg?