Miten saan tallennettua makrolla Accessin tauluun arvoja? Taulussa on vain avain, laskuri ja Tulos. Makrossa laskettu tulos täytyisi tallentaa, insertoida tauluun. En ole oivaltanu miten tällä minimaalisella kokemuksellani.
Arvojen tallennus accessiin
Lissu
5404
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 5
Vanhimmat
Yksi vaihtoehto:
Dim dbs as Database
Dim rst as Recordset
... lasketaan tulokselle joku arvo ...
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Taulu")
rst.AddNew
rst!Tulos = JokuArvo
rst.Update
rst.Close
Set rst = Nothing
Set dbs = Nothing
Toinen vaihtoehto:
... lasketaan tulokselle joku arvo ...
DoCmd.RunSQL "INSERT INTO Taulu (Tulos) VALUES (" & JokuArvo & ")"
no _periaatteessa_ accessin makrollakin voi arvoja tallentaa, esim näin:
Macro Action: Run SQL
SQL Statement: insert into taulu (sarake1, sarake2) values (arvo1, arvo2);
Mutta. Makrot ovat tosi kökköjä, eikä nitä kannata käyttää kuin ihan muutamassa tietyssä tilanteessa (joista autokeys yhtenä, toim. huom.)
Kuten nimimerkki mmm tuossa jo hieman aiemmin opasti, niin on parempi käyttää sopivaa koodinpätkää, jonka teet Module-puolelle.
Edellisten vinkkien pohjalta sain pelaamaan mutta mitä tarkoitat moduleilla? Kerrotko hieman lisää niiden käytöstä. Lomakkeellani on todellakin tarkoitus suorittaa mm laskentaa ja arvojen asetusta ja ajatukseni oli tehdä ne makroilla, mutta jos modulit parempia täytyy perehtyä asiaan. Toiminnallisuutta olen saanut kyllä mukavasti erilaisilla Lost_focus, yms tapahtumanlaukaisimilla.
Käytössäsi on siis jokin tietojen syöttölomake, nimeltään "Form1". Voit tiputella lomakkeelle erilaisia kontrolleja, vaikkapa textbox:eja, button:eita jne.
Kullekin kontrollille annetaan aina yksilöivä nimi. buttonin, jonka nimeksi tulee "Button1".
Jos olet jo tehnyt makroja, niin olet saattanut esim luoda "Macro1"-nimisen makron, jonka Action:ksi on annettu MsxBox. MsgBox:n Message:ksi on taas laitettu jotain muuta hömppää, esim "Hei!".
No nythän tämä makro voidaan liittää tuohon button1:een. [Button1 > Event > On click > Macro1]. Tämä lienee selvää.
Ihan samalla tavalla buttoniin on mahdollista liittää varsinaista Visual Basic -koodia. Valitse [Button1 > Event > On Click ]-kohdassa Marco1:n sijasta [Event Procedure] ja klikkaa "..."-nappulaa siinä vieressä.
Access avaa sinulle visual basic -editorin, sekä tekee aliohjelmaasi varten jotain tällaista:
----
Private Sub Button1_Click(Cancel As Integer)
End Sub
---
Noh, kirjoita noiden kahden rivin väliin tämä:
msgbox "tämä teksti tulee visual basic -koodista"
Palaa lomakkeelle, vaihda Form View, paina nappulaa, ja tuo teksti pitäisi tulla näkyviin.
No siinäpä oli sama asia tehtynä sekä makrolla että visual basic:lla. Olennainen ero niillä on se, että visual basicilla voi tehdä paljon enemmän asioita kuin makroilla. Koodissa voit viitata kaikkiin avoinna oleviin formeihin, laskea tuloksia yhteen, tehdä sääntöjä, käydä välillä lukemassa jotain tietokannasta, kirjoittaa sinne jotain jne.
Makroilla pääsee tiettyyn pisteeseen asti, sitten homma menee leikkimiseksi. Jos sovelluksesi ei ole kovin iso, niin ehkä ne riittävät. Vaiva visual basicin käytön opettelusta ei kuitenkaan ole iso.
Katso nimimerkki mmm:n lähettämää koodia, se olisi periaatteessa myöskin sijoitettavissa helposti visual basic -puolelle.
--
TioMS
...Kun sai kynän ja paperia.
Kiitoksia selvennyksestä. Minulla on näemmä käsitteet hiukka sekasin. Makro Moduli. Juuri kuvaamasi tekniikan mukaan olen tuota lomaketta väsännyt. VB on tuttu mutta siinä on omat access kiekurat joita täytyy opetella.
Seuraava rojekti on saada combobox1:sen valinnan perusteella täytettyä combobox2. Siinä näin aamulle ajankulua.