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 SubEdit: muutama kommentti
Kannattaa sitten lisätä doevents noihin do silmukoihin...
Aihe on jo aika vanha, joten et voi enää vastata siihen.