Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Recordset.Index ja runtime error 3015 + toinen kysymys

OlliK [16.03.2005 15:57:35]

#

Moi! Olen tässä aloittelemassa ohjelmoijan-uraani ja olen nettiä ja Visual Basic Step by Step -kirjaa käyttäen hieman opiskellut. Nyt olisi vuorossa ruokareseptien selausohjelma jolla harjoittelen tietokantojen käyttöä. Nyt olen vaiheessa jossa pitäisi tehdä reseptien haku tietokannasta. Koodi näyttää tältä:

Private Sub cmdHaku_Click()
    SearchStr = InputBox("Anna hakusana", "Reseptien haku.") 'kysyy hakusanaa
    DatResepti.Recordset.Index = "resepti"  'hae resepteistä
    DatResepti.Recordset.Seek ">=", SearchStr 'suorita haku
    If DatResepti.Recordset.NoMatch Then 'jos ei löydy...
        MsgBox "Käyttämälläsi hakusanalla ei löytynyt tuloksia.", vbCritical, "Virhe" '...niin valitetaan
    End If
End Sub

Haku ei kuitenkaan toimi vaan aina tulee runtime error 3015: "'resepti' isn't an index in this table. Look in the indexes collection of the TableDef object to determine the valid index names."
En ymmärrä mitä tuo virheilmoitus tarkoittaa, onko vika koodissani vai tietokannassa? Jos on niin miten korjaan asian? Tietokanta on tehty Accessilla.

Toinen kysymys:
Tarkoituksenani on myös tehdä itse tietueet näyttävästä tekstiobjektista locked ettei kukaan vahingossa poistaisi tietokannassa jo olevaa tietoa vaikkapa ajankulukseen mustaillessa tekstiä... Joten reseptien lisäysominaisuuden päätin sijoittaa toiseen formiin, jotenkin niin että textboxiin kirjoitetaan uusi resepti ja painetaan nappia niin se tallentuu tietokantaan. Miten tämä onnistuu? En keksinyt mitään ainakaan vielä.

Kiitos jo etukäteen.

Hellami [17.03.2005 01:26:40]

#

1. "resepti" -indexiä ei ole kannassa.
Tai sen käsityksen tuo virheilmoitus antaa

2:n en osaa sanoa mitään :p

OlliK [17.03.2005 17:43:47]

#

Hellami kirjoitti:

1. "resepti" -indexiä ei ole kannassa.
Tai sen käsityksen tuo virheilmoitus antaa

Juu sellaistahan se sanoo.. En vain löydä mitään virheellistä tuosta tietokannastani. Mitä se index siinä sitten tarkoittaa jos se ei ole se joka datafield -ominaisuudessa on?
Ja mistä saan selville mikä se index on tuossa minun tietokannassani?

Antti [18.03.2005 13:36:23]

#

1. Tietokantaan voidaan lisätä niille sarakkeille indeksi, joita käytetään hakuun. Kannasta riippuen indeksilisätään eri tavoilla. Tutkippa kantaasi ja katso kuinka sen lisääminen onnistuisi.

2. Luettaessa recordsettiä voit määritellä lukituksen:
DatResepti.Recordset.LockType = adLockReadOnly

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta