Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Muutosten tallentaminen tekstitiedostoon (VB)

Sepe [03.06.2004 15:13:37]

#

Seuraavanlainen ongelma:
Teen ohjelmaa, jossa tekstitiedostosta luetaan comboboxiin Nimi. Klikkaamalla Nimeä combossa, tekstitiedostosta luetaan tekstiboxiin vastaava Numero. Ideana on, että käyttäjä pääsisi muuttamaan tarpeen vaatiessa tota numeroa ja tallentamaan muutokset tekstitiedostoon. Saisko siis vinkkiä siitä miten muutosten tallentaminen tapahtuu? Kaikenlaista räpellystä on yritetty, mutta en ole saanut hommaa toimimaan kunnolla.

setä [03.06.2004 18:00:50]

#

Onko pakko olla tekstitiedosto. Hajatiedostolla (Random) homma olisi yksinkertaisempi.

Sepe [04.06.2004 07:57:32]

#

Mielellään tekstitiedosto, mutta voinhan mä tuota randomiakin kokeilla jos ei tekstit:n kanssa onnistu.

setä [04.06.2004 08:03:32]

#

Jos nimiä ja numeroita on useita (oletettavasti), tulee tekstitiedoston kanssa ylimääräistä sähellystä tiedoston avaamiseksi ja sulkemiseksi lukua ja kirjoitusta varten. Hajatiedostoa voi lukea ja sinne kirjoittaa samalla avauksella ja riviä voi suoraan osoittaa indeksillä. siksi se on paljon sujuvampi. kerro tarkemmin, mitä tiedostossa on. Nimi ja puh. numeroko vai jokin muu numero ?

Sepe [04.06.2004 08:30:50]

#

Tiedostossa on n. 13 tietuetta, joissa on nimi ja eräänlainen kerroin muotoa 2,34. Ja tuo kerroin on siis se mitä käyttäjän pitäis päästä muuttamaan.

setä [04.06.2004 09:34:34]

#

Jos nimiä on noin vähän kannattaa tiedot lukea Comboon ohjelman käynnistyksen yhteydessä ja tallentaa ohjelman päättyessä ja haluttaessa ohjelman aikana. Kerroin voidaan tallentaa myös Comboon kokonaislukuna. Jos 2 desimaalia riittää niin satakertaisina. Voi myös käyttää indeksoitua liukulukumuuttujaa. Luku- ja tallennusrutiinit riippuvat hieman siitä, miten nimi ja kerroin erotetaan toisistaan ja onko nimessä etu ja sukunimi. Kertoimen näyttö ja muokkaus onnistuu esim. seuraavasti:

Private Sub Combo1_Click()
   txtKerroin = Combo1.Itemdata(Combo1.ListIndex)/100
End sub

Private Sub txtKerroin_Keypress(KeyAscii As Integer)
   If KeyAscii = 13 Then
     Combo1.Itemdata(Combo1.ListIndex) = 100 * txtKerroin
   End If
End Sub

BadSource [04.06.2004 09:35:08]

#

Jos tiedostossa on vain n. 13 tietuetta, niin mikset lue kerralla kaikkia arvoja taulukkoon, Nimi ja Kerroin omaan sarakkeeseen, kun ohjelmasi käynnistyy? Comboon luet nimet taulukosta. Ja kun klikkaat combosta nimeä, niin esität vain taulukosta vastaavan kertoimen. Kun kerrointa muuttaa, se päivitetään taulukkoon ja textitiedosto kirjoitetaan uudestaan taulukon arvojen mukaan lyhyellä silmukalla.

Edit: setä kerkes edelle

Vastaus

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

Tietoa sivustosta