Excel UserForm to Collect Data for Access

R

ryguy7272

I am trying to come up with a way of linking to an Access DB, via an Excel
interface, such as a UserForm, because many people in my firm do not have
Access installed on their workstations. I’m sure this is possible, but I
don’t know the best way to approach the problem. I’m thinking of posting the
Excel UserForm on our firm’s Intranet (WAN or LAN), and then ask users to
open the UserForm, input some basic information, and then save the changes
and so on and so forth. Is there some way to do all of this on a LAN or a
WAN? Could the Excel file reside on a public network drive, and
automatically download to am Access DB every time there is a chance (i.e.,
each time a user inputs something into the UserForm)? I would appreciate any
and all help with this project.

Regards,
Ryan---
 
N

NateBuckley

Hello, I'll attempt to help by throwing some snippits of code your way.

Let's say you have a Userform, and on that userform you have a txtBox called
txtBoxName, you also have a button named btnSendToDB

You have a database that holds one table called names and within this tabel
is a single field called name

So, basically we want the user to input their name and click on the button
and it will update the database with this new record.

Private Sub cmdBtnSendToDB_Click()
Dim usrName As String
Dim dbConnection As ADODB.Connection
Dim recordSet As ADODB.recordSet
Dim strSQL As String

Set dbConnection = New ADODB.Connection
Set recordSet = New ADODB.recordSet
'The variable that'll hold the data within txtBoxName
usrName = Me.txtBoxName.Value
strSQL = "INSERT INTO names [fldName] VALUES '" & usrName & "'"
'Make sure your path is correct or you'll get an Authentication error.
dbConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" &
ThisWorkbook.Path & "/database/db.mdb;"
dbConnection.CursorLocation = adUseClient
' This will open up the recordSet, using the SQL statement and the
dbConnection - Connection.
recordSet.Open strSQL, dbConnection

'Close of the connection.
dbConnection.Close
Set dbConnection = Nothing

End Sub

I haven't tested but as long as your path is correct, this should work.
Remember to add the correct Reference in "Tools - > References" I've added
the one called "Microsoft ActiveX Data Objects 2.8 Library" this may be
slightly different, depending what version you have. Adding this enables all
the ADODB things that you see being used here.


Hope this helps a little.
 
N

NateBuckley

Change where it says [fldName] to just [name] as otherwise it'd be looking
for a field named [fldName]. I just put fld in front because I find it better
to name all things in this fashion (makes it easier to see what I'm looking
at this way).



NateBuckley said:
Hello, I'll attempt to help by throwing some snippits of code your way.

Let's say you have a Userform, and on that userform you have a txtBox called
txtBoxName, you also have a button named btnSendToDB

You have a database that holds one table called names and within this tabel
is a single field called name

So, basically we want the user to input their name and click on the button
and it will update the database with this new record.

Private Sub cmdBtnSendToDB_Click()
Dim usrName As String
Dim dbConnection As ADODB.Connection
Dim recordSet As ADODB.recordSet
Dim strSQL As String

Set dbConnection = New ADODB.Connection
Set recordSet = New ADODB.recordSet
'The variable that'll hold the data within txtBoxName
usrName = Me.txtBoxName.Value
strSQL = "INSERT INTO names [fldName] VALUES '" & usrName & "'"
'Make sure your path is correct or you'll get an Authentication error.
dbConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" &
ThisWorkbook.Path & "/database/db.mdb;"
dbConnection.CursorLocation = adUseClient
' This will open up the recordSet, using the SQL statement and the
dbConnection - Connection.
recordSet.Open strSQL, dbConnection

'Close of the connection.
dbConnection.Close
Set dbConnection = Nothing

End Sub

I haven't tested but as long as your path is correct, this should work.
Remember to add the correct Reference in "Tools - > References" I've added
the one called "Microsoft ActiveX Data Objects 2.8 Library" this may be
slightly different, depending what version you have. Adding this enables all
the ADODB things that you see being used here.


Hope this helps a little.

ryguy7272 said:
I am trying to come up with a way of linking to an Access DB, via an Excel
interface, such as a UserForm, because many people in my firm do not have
Access installed on their workstations. I’m sure this is possible, but I
don’t know the best way to approach the problem. I’m thinking of posting the
Excel UserForm on our firm’s Intranet (WAN or LAN), and then ask users to
open the UserForm, input some basic information, and then save the changes
and so on and so forth. Is there some way to do all of this on a LAN or a
WAN? Could the Excel file reside on a public network drive, and
automatically download to am Access DB every time there is a chance (i.e.,
each time a user inputs something into the UserForm)? I would appreciate any
and all help with this project.

Regards,
Ryan---
 
R

ryguy7272

Wow!! Thanks Nate!! The code looks quite nice; elegant and efficient. I
made the changes that you recommended, and got this error:

Run-time Error:
Syntax error in INSERT INTO statement.


Below is my code, behind UserForm1:
Private Sub btnSendToDB_Click()
Dim usrName As String
Dim dbConnection As ADODB.Connection
Dim recordSet As ADODB.recordSet
Dim strSQL As String

Set dbConnection = New ADODB.Connection
Set recordSet = New ADODB.recordSet
'The variable that'll hold the data within txtBoxName
usrName = Me.txtBoxName.Value
strSQL = "INSERT INTO Names [Name] VALUES '" & usrName & "'"

dbConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source
=C:\Documents and Settings\rms\Desktop\Access Models\ Reports.mdb"
dbConnection.CursorLocation = adUseClient

' This will open up the recordSet, using the SQL statement and the
dbConnection - Connection.
recordSet.Open strSQL, dbConnection

'Close of the connection.
dbConnection.Close
Set dbConnection = Nothing

End Sub


The UserForm has a TextBox named ‘txtBoxName’ and a CommandButton named
‘btnSendToDB’. The DB is named ‘Reports’, it has several tTables, one of
which is named ‘Names’ and in that Table, I have a Field named ‘Number’ which
is of Data Type AutoNumber and I have a Field named ‘Name’ which is of Field
Type Text.

Do you have any idea what could be causing that INSERT INTO Error?


Regards,
Ryan---


--
RyGuy


NateBuckley said:
Change where it says [fldName] to just [name] as otherwise it'd be looking
for a field named [fldName]. I just put fld in front because I find it better
to name all things in this fashion (makes it easier to see what I'm looking
at this way).



NateBuckley said:
Hello, I'll attempt to help by throwing some snippits of code your way.

Let's say you have a Userform, and on that userform you have a txtBox called
txtBoxName, you also have a button named btnSendToDB

You have a database that holds one table called names and within this tabel
is a single field called name

So, basically we want the user to input their name and click on the button
and it will update the database with this new record.

Private Sub cmdBtnSendToDB_Click()
Dim usrName As String
Dim dbConnection As ADODB.Connection
Dim recordSet As ADODB.recordSet
Dim strSQL As String

Set dbConnection = New ADODB.Connection
Set recordSet = New ADODB.recordSet
'The variable that'll hold the data within txtBoxName
usrName = Me.txtBoxName.Value
strSQL = "INSERT INTO names [fldName] VALUES '" & usrName & "'"
'Make sure your path is correct or you'll get an Authentication error.
dbConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" &
ThisWorkbook.Path & "/database/db.mdb;"
dbConnection.CursorLocation = adUseClient
' This will open up the recordSet, using the SQL statement and the
dbConnection - Connection.
recordSet.Open strSQL, dbConnection

'Close of the connection.
dbConnection.Close
Set dbConnection = Nothing

End Sub

I haven't tested but as long as your path is correct, this should work.
Remember to add the correct Reference in "Tools - > References" I've added
the one called "Microsoft ActiveX Data Objects 2.8 Library" this may be
slightly different, depending what version you have. Adding this enables all
the ADODB things that you see being used here.


Hope this helps a little.

ryguy7272 said:
I am trying to come up with a way of linking to an Access DB, via an Excel
interface, such as a UserForm, because many people in my firm do not have
Access installed on their workstations. I’m sure this is possible, but I
don’t know the best way to approach the problem. I’m thinking of posting the
Excel UserForm on our firm’s Intranet (WAN or LAN), and then ask users to
open the UserForm, input some basic information, and then save the changes
and so on and so forth. Is there some way to do all of this on a LAN or a
WAN? Could the Excel file reside on a public network drive, and
automatically download to am Access DB every time there is a chance (i.e.,
each time a user inputs something into the UserForm)? I would appreciate any
and all help with this project.

Regards,
Ryan---
 
D

Dick Kusleika

I am trying to come up with a way of linking to an Access DB, via an Excel
interface, such as a UserForm, because many people in my firm do not have
Access installed on their workstations. I’m sure this is possible, but I
don’t know the best way to approach the problem. I’m thinking of posting the
Excel UserForm on our firm’s Intranet (WAN or LAN), and then ask users to
open the UserForm, input some basic information, and then save the changes
and so on and so forth. Is there some way to do all of this on a LAN or a
WAN? Could the Excel file reside on a public network drive, and
automatically download to am Access DB every time there is a chance (i.e.,
each time a user inputs something into the UserForm)? I would appreciate any
and all help with this project.

Here's a tutrorial that will help get you started, but it doesn't write back
to the database.
http://www.dailydoseofexcel.com/archives/2004/05/24/navigate-a-recordset-with-a-userform-part-i/
 
R

ryguy7272

I just got it (from the Access Programming DG):
Private Sub btnSendToDB_Click()
Dim usrName As String
Dim dbConnection As ADODB.Connection
Dim recordSet As ADODB.recordSet
Dim strSQL As String

Set dbConnection = New ADODB.Connection
Set recordSet = New ADODB.recordSet
'The variable that'll hold the data within txtBoxName
usrClient = Me.txtBoxName.Value

strSQL = "INSERT INTO tblClients ([Clients]) VALUES ('" & usrClient & "')"

dbConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source
=C:\Documents and Settings\rshuell\Desktop\Access Models\Diego_Reports.mdb"
dbConnection.CursorLocation = adUseClient

' This will open up the recordSet, using the SQL statement and the
dbConnection - Connection.
recordSet.Open strSQL, dbConnection

'Close of the connection.
dbConnection.Close
Set dbConnection = Nothing

End Sub

Hope this helps others.......



Regards,
Ryan---
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top