Ongelman ei pitäisi olla vaikea mutta jostain syyste ei lähde ratkeamaan. Koodina:
Public Sub HaeEd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HaeEd.Click
Dim Counter As Integer = 0
try
MyDataSet.Clear() 'Tyhjennetään mahdolliset aikaisemmat tiedot
MyDataAdapter.SelectCommand = New OleDbCommand
MyDataAdapter.SelectCommand.Connection = MyConnection
MyDataAdapter.SelectCommand.CommandText = "SELECT merkinta FROM paivakirja ORDER BY laskuri DESC"
MyConnection.Open() 'Avataan yhteys tietokantaan
MyDataAdapter.Fill(MyDataSet, "Paivakirja") 'haetaan tiedot Paivakirja-nimiseen MyDataSet-tietojoukkoon
MyConnection.Close() 'suljetaan yhteys
PKmerkinta.Text = MyDataSet.Tables("Paivakirja").Rows(Counter).Item("merkinta")
Counter = Counter + 1
If Counter = MyDataSet.Tables("Paivakirja").Rows.Count Then Counter = 0
Catch
MsgBox("Paivakirjamerkintoja ei löytynyt", , "Ilmoitus")
PKmerkinta.Text = ""
Counter = 0
End Try
End SubEli haetaan kaikki merkinnät ja selataan niitä uusimmasta vanhimpaa yksi kerrallaan. Homma siis toimii mutta miten saan jo edelle mainitun lauseen muutettua sellaiseksi että kun counter:ia vähennetään niin nollan jälkeen se saa arvokseen maksimin:
If Counter = MyDataSet.Tables("Paivakirja").Rows.Count Then Counter = tähän rows maksimi?Tämä siis siinä tapauksessa kun selataan merkintöjä vanhemmasta uudempaan.
Sorg kun selitys on niin pitkä mutta en oikein osannu laittaa lyhemmäksikään.. :/
Mod. lisäsi kooditagit, lisää ensi kerralla itse.
Täällä on suht reippaasti idiotismiä liikenteessä näin lauantaiaamuna...
Laitan tämän kuitenkin tänne, jos joku muukin sattuu olemaan joskus lauantaiaamu-terässä.. :)
Counter = Counter - 1
PKmerkinta.Text = MyDataSet.Tables("Paivakirja").Rows(Counter).
If Counter = 0 then Counter = MyDataSet.Tables("Paivakirja").Rows.Count
edit: ja siis tuon edellisen koodin counter on metodin ulkopuolella eikä sisällä, kuten siinä virheellisesti käy ilmi.
Moikka Sam76!
Mikäli DataSetissä on kamaa niin ensimmäinen rivi eli tietue = 0, joten viimeinen rivi on täten luonnollisesti DataSet.Tables("taulu").Rows.Count - 1
'...
DataSetti.Clear: DataAdapteri.TableMappings.Clear
'...
'.....................................................................
'voisit myös soveltaa tällaista viritelmää...
'Dim kysely As String
'Select Case Me.CheckBox1.Checked
'Case False
'kysely = "SELECT merkinta FROM paivakirja ORDER BY laskuri DESC"
'Case True
'kysely = "SELECT merkinta FROM paivakirja ORDER BY laskuri ASC"
'End Select
'DataAdapteri.SelectCommand.CommandText = kysely
'......................................................................
Static rivi As Integer
If rivi = DataSetti.Tables("taulu").Rows.Count -1 Then
rivi -= rivi
End If
If DataSetti.Tables("taulu").Rows.Count = 0 Then
Messagebox.Show("kamaa ei löytynyt"): Exit Sub
Else
TekstiBoxi.Text = DataSetti.Tables("taulu").Rows(rivi)("sarake")
rivi += 1
End IfKiitos Nea!
Sain ks. ominaisuuden toiminaan mutta niin monimutkaisella tavalla, että oksat pois. Tämä sinun esimekkisi vaikuttaa paljon paremmalta.
Olin aiemmin kokeillut myös tuota select-case mutta huonolla menestyksellä. Tänks siitäkin.
edit: voitko selittää että mitä tämä tarkoittaa: DataAdapteri.TableMappings.Clear ?
Heippa taas Sam76!
DataAdapteri.TableMappings.Clear - pyyhkii adapterin sisältämät tiedot tauluista nevadaan...
Kiitos taas Nea!
Aihe on jo aika vanha, joten et voi enää vastata siihen.