Skip to main content

Appending a record in Access using VBA NO SQL

I could not believe how hard it was to find a simple example on how to append a record on condition (in this cast the date has change) for Access, so after I got the code working I thought why not post it.

VBA is not my favourite language by any stretch of the imagination, so excuse any inappropriateness:

Code Sample:


' Append a record to the a Table if it is a new day for tracking purpose
Dim db As Database
Dim rsTracker As Recordset
Dim bDoAppend As Boolean
Dim iLastCount As Long

Set db = CurrentDb
Set rsTracker = db.OpenRecordset("TotalCountTrackerTbl", dbOpenDynaset)

' check if the database has a record, and if the date is valid
bDoAppend = IsNull(rsTracker("TrackDate"))
If rsTracker.RecordCount <> 0 Then
  rsTracker.MoveLast
Else
  ' no records so do append
  bDoAppend = True
End If

' still must not append then check if it is a new date since last record stored
If Not bDoAppend Then
  bDoAppend = DateDiff("d", rsTracker("CountDate"), Now) > 1
End If

' if we want to append then if the form data is valid append
' replace formwithdata with the form name and the DataItemWeWant with the field
If bDoAppend Then
  If Not IsNull(FormWithData.DataItemWeWant.Text) Then
    iLastCount = CLng(FormWithData.DataItemWeWant.Text)
    rsTracker.AddNew
    rsTracker("TrackDate") = Now
    rsTracker("TotalCount") = iLastCount
    ' Tell the database who put it there
    rsTracker("Comments") = "AutoAdd"
    rsTracker.Update
  End If
End If

' remember to close the rs
rsTracker.Close


Comments

Anonymous said…
Thanks. Seems so simple -- once you see the code.

John in Olympia

Popular posts from this blog

Bitcoin / Cryptocurrency – what is it and how can I benefit

What is it I started investigating Bitcoin when it was worth just over $1000 a bitcoin. I was interested in what it was and how it worked. A lot of people are saying we missed the boat, but I believe that everyone should at least try put a little money in now, or at least use a faucet (see below) to make a little micro-currency. You can read a Wiki article about bitcoin and its history etc. But what you need to know is that it is a currency, that is independent of country. No one really knows who invented the concept of a cryptocurrency since the person who published the paper used a nom de plume. All new cryptocurrencies work more or less the same way as Bitcoin. So as I explain below I interchange these terms. Bitcoin is the original cryptocurrency. How Bitcoin works The currency releases a coin based on a mathematical formula. There will never be more than 21 million bitcoins (other cryptocurrencies do not work like this). Each bitcoin can have divided into one hundred mil...

Access conversion NOTE1: default DateSerial in VBA/Access to SQL

I have started slowly converting my Access database to SQL. The reason is that I would like to take the application online. After trying to use Access's (version 2007) transfer tool, which did not work that well. I found Microsoft's SQL Migration Assistant 2008 for Access, nicknamed SSMA. Which you can download here . When you install there is a niggle about the license, which you need to download into their specified directory and it must be the name they provide. So about the create table. My one table would not convert and I could not see why. After looking at the SQL command I saw the problem was the use of DateSerial. I googled a few sites and could not find an answer The CREATE TABLE line was: [RequireUntilDate] datetime2(0) DEFAULT DateSerial(1980,1,1) NOT NULL, I clicked on the whole command and copied it and then in SQL Server Management Studio, I tried to create the table and found that if I specified the date in US date format it worked: [RequireUnti...

SMTP servers of South Africa

SMTP Settings Below is a list of SMTP sites in South Africa, using this and the ISP Map you can try and find which one works best for you. Telkom smtp.saix.net (ADSL) smtp.telkomsa.co.za (56k dial up) smtp.telkomsa.net Internet Solutions smtp.isdsl.net (ADSL) smtp.dial-up.net (56k dial up on IS) smtp.layerone.net (3g backbone) Vodacom smtp.vodacom.co.za smtp.vodamail.co.za MTN smtp.mtn.co.za Cell C smtp.cellc.co.za (GPRS) mail.cmobile.co.za (also used by Virgin) ABSA mail.absa.co.za iBurst smtp.wbs.co.za smtp.iburst.co.za @lantic smtp.lantic.net (ADSL,Dialup, ISDN) Sentech smtp.sentech.co.za MWEB smtp.mweb.net (ADSL) - this is to be retired End June 2012, use below instead smtp.mweb.co.za (56k dial-up & ADSL & business) iAfrica smtp.uunet.co.za smtp.iafrica.com Neotel smtp.neotel.co.za Tiscali NOW MWeb smtp.tiscali.co.za Netactive NOW MWeb smtp.netactive.co.za Global smtp.global.co.za Hertzner Use y...