Olis tarkoitus tehdä valokuvatietokanta, johon pystyy lisäämään kuvista tietoja (vuosi, kategoria, omistaja yms.). Tiedot näkyvät textBoxeissa ja kun tietoja muuttaa, ne tallentuisivat automaattisesti kyseisen kuvan tietoihin. Tarkoitus ei ole tehdä millään Acces-tietokannalla, vaan esim jollain suorasaantitiedostomenetelmällä...Tarvitsisin vähän apua aloitukseen.
Käyttöliittymään tulisi seuraava kuva ja edellinen kuva-napit, ei mitään uusi, talleta, muokkaa-nappeja...
Oisit nyt pyytänyt jonkun koodaamaan samantien koko ohjelman itsellesi valmiiksi.
Opettele aluksi tiedostojen luku ja kirjoitus ja luo oma rutiinisi jolla niitä käsittelet.
Tuon jälkeen opettelet sitten LoadPicture funktion.
Haku auttaa varmasti.
Seuraavanlaisen koodinpätkän löysin testitiedostojeni joukosta...
Eli pieni ohjelma suorasaantikannan kanssa leikkimiseen. Siitä sitten vain soveltamaan.
Option Explicit Private Type Henkilotietue etunimi As String * 15 sukunimi As String * 25 End Type Const MyName As String = "Muutos" Private Sub Command1_Click() Dim YhdenTietueenPituus As Long, TietueidenLukumaara As Long, TiedostonPituus As Long Dim UusiSukunimi As String, UusiEtunimi As String, abu As String Dim Nimet As Henkilotietue Dim muutos As Boolean Dim i As Integer YhdenTietueenPituus = Len(Nimet) Open App.Path & "\nimet.rnd" For Random As #1 Len = YhdenTietueenPituus TiedostonPituus = LOF(1) TietueidenLukumaara = TiedostonPituus / YhdenTietueenPituus If TietueidenLukumaara = 0 Then MsgBox "Ei vielä nimiä tiedostossa." & vbCrLf & _ "Lisää ensimmäinen.", vbInformation, MyName i = 1 Else Do abu = InputBox("Anna indeksi, väliltä 1-" & Str(TietueidenLukumaara), _ MyName) If abu = "" Then Exit Sub 'Peruttu aliohjelman suoritus If IsNumeric(abu) Then 'Jos kyseessä on numero... i = CInt(abu) If i > TietueidenLukumaara Then If MsgBox("Haluatko lisätä uuden nimen?", vbYesNo, MyName) = _ vbYes Then i = TietueidenLukumaara + 1 Exit Do 'niin päästään pois do-loopista End If Else Exit Do 'niin päästään pois do-loopista End If End If Loop End If Get #1, i, Nimet Do UusiSukunimi = InputBox$("Muuta sukunimeä (Cancel tyhjää tietueen)", _ MyName, Nimet.sukunimi) If Len(UusiSukunimi) > 25 Then If MsgBox("Sukunimen pituus voi olla max 25 merkkiä." & vbCrLf & _ "Leikataanko ylimääräiset pois?", vbQuestion + vbYesNo, MyName) = vbYes Then _ Exit Do End If Loop Until Len(UusiSukunimi) <= 25 If UusiSukunimi <> Nimet.sukunimi Then 'Sukunimi muuttunut? Nimet.sukunimi = UusiSukunimi muutos = True End If Do UusiEtunimi = InputBox$("Muuta etunimeä (Cancel tyhjää tietueen)", _ MyName, Nimet.etunimi) If Len(UusiEtunimi) > 15 Then If MsgBox("Etunimen pituus voi olla max 15 merkkiä." & vbCrLf & _ "Leikataanko ylimääräiset pois?", vbQuestion + vbYesNo, MyName) = vbYes Then _ Exit Do End If Loop Until Len(UusiEtunimi) <= 15 If UusiEtunimi <> Nimet.etunimi Then 'Etunimi muuttunut? Nimet.etunimi = UusiEtunimi muutos = True End If If muutos Then 'Jos muutoksia, niin sijoitetaan ne tiedostoon Put #1, i, Nimet MsgBox "Etu- ja/tai sukunimi muuttunut." & vbCrLf & "Päivitetään...", _ vbInformation, MyName Else MsgBox "Ei muutoksia", , MyName End If Close #1 End Sub
Edit: muutama kommentti
Kannattaa sitten lisätä doevents noihin do silmukoihin...
Aihe on jo aika vanha, joten et voi enää vastata siihen.