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 Sub
Eli 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 If
Kiitos 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.