Avatar billede steensommer Praktikant
12. oktober 2003 - 14:26 Der er 13 kommentarer og
1 løsning

sql - insert

Hej. Jeg har nogle problemer med vha en SQL-streng (fra en Excel-projektmappe) at indsætte data i en Access-database. Det skal lige nævnes at jeg er helt ny inden for SQL.
Jeg har lavet en Excel-formular med 6 text-felter og en kommandoknap. Til sidstnævnte har jeg tilknyttet følgende VBA:

Private Sub CommandButton2_Click()
Dim strSQL As String
Dim Path As String
Dim Rec As Recordset
Dim DB As Database
Dim HCV As String, CPR As String
Dim FNavn As String, ENavn As String, Adr As String, PostBy As String

Path = "\\srv\Registre\test.mdb"
Set DB = Workspaces(0).OpenDatabase(Path)

txtHCV.Text = [Patient nr].Fields(0).Value
txtFNavn.Text = Fornavn.Fields(1).Value
txtENavn.Text = Efternavn.Fields(2).Value
txtCPR.Text = [CPR nr].Fields(3).Value
txtAdr.Text = Adresse.Fields(4).Value
txtPostBy.Text = [Postnr og Bynavn].Fields(5).Value

strSQL = "INSERT INTO Patienter ([Patient nr], [Fornavn], [Efternavn], [CPR nr], [Adresse], [Postnr og Bynavn]) Values (" ' & HCV &'", '" & FNavn & "', '" & ENavn & "', '" & CPR & "', '" & Adr & "', '" & PostBy & "')"
conn.Execute (strSQL)
End Sub

Men det fungerer selvfølgelig ikke :0)
Avatar billede terry Ekspert
12. oktober 2003 - 14:32 #1
dont you need a connection variable? (conn)
conn.Execute
Avatar billede steensommer Praktikant
12. oktober 2003 - 14:34 #2
Det er da sikkert rigtigt - og hvorledes laves en sådan? Jeg er som nævnt fuldstændig nybegynder indenfor Access (SQL)
Avatar billede terry Ekspert
12. oktober 2003 - 15:03 #3
I have no idea as to how you do things in Excel but I assume you are using ADO. So you can try this

Dim conn as ADODB.Connection
set conn= NEW ADODB.Connection
conn.Provider="Microsoft.Jet.OLEDB.4.0"

Conn.Open "\\srv\Registre\test.mdb"


txtHCV.Text = [Patient nr].Fields(0).Value
txtFNavn.Text = Fornavn.Fields(1).Value
txtENavn.Text = Efternavn.Fields(2).Value
txtCPR.Text = [CPR nr].Fields(3).Value
txtAdr.Text = Adresse.Fields(4).Value
txtPostBy.Text = [Postnr og Bynavn].Fields(5).Value

strSQL = "INSERT INTO Patienter ([Patient nr], [Fornavn], [Efternavn], [CPR nr], [Adresse], [Postnr og Bynavn]) Values (" ' & HCV &'", '" & FNavn & "', '" & ENavn & "', '" & CPR & "', '" & Adr & "', '" & PostBy & "')"

conn.Execute (strSQL)

I have NOT checked this

conn.Open(path)
set rs = Server.CreateObject("ADODB.recordset")
rs.Open "Select * from Customers", conn
Avatar billede terry Ekspert
12. oktober 2003 - 15:03 #4
you can drop the last three lines
Avatar billede steensommer Praktikant
12. oktober 2003 - 15:11 #5
Den skriver: Object required ved følgende:

txtHCV.Text = [Patient nr].Fields(0).Value
Avatar billede terry Ekspert
12. oktober 2003 - 15:21 #6
As I said, I know nothing about Excel, so I cant really say what the problemis.

What are these variables, where are they declared?

txtHCV.Text and [Patient nr].Fields(0).Value
Avatar billede steensommer Praktikant
12. oktober 2003 - 15:32 #7
Ups der skulle stå:
HCV.Text and [Patient nr].Field(0).Value

..men det fungerer heller ikke. HCV.Text er første felt i en formular (lavet i Excel), FNavn.Text er andet felt osv. Resten efter "and" skulle være Access relateret: [Patient nr]: felt i access-databasen etc
Avatar billede terry Ekspert
12. oktober 2003 - 15:57 #8
Now you got me there!

You are saying that txtHCV.Text is a text in Excel and Patient nr].Fields(0).Value is the field in the Access database!

I think we need to go back to basics here!

"INSERT INTO ...." is used to PUT data INTO a database!

When you write (which is also not correct)

txtHCV.Text = [Patient nr].Fields(0).Value

this means that you are taking the value of a field in a table and assign it to a field in Excel.

So I think you need to start right from scratch and decide what it is you are trying to do!
Avatar billede steensommer Praktikant
12. oktober 2003 - 15:58 #9
Ok
Jeg PRØVER at indlægge data fra en formular i Excel TIL Access
Avatar billede terry Ekspert
12. oktober 2003 - 15:58 #10
This should be "something" like this.

txtHCV.Text = rs![Patient nr]
or
txtHCV.Text = rs.fields(0)

where rs is a recordset.
Avatar billede terry Ekspert
12. oktober 2003 - 16:00 #11
here is another Excel/Access question which you may get some ideas from

http://www.eksperten.dk/spm/410308
Avatar billede steensommer Praktikant
12. oktober 2003 - 16:33 #12
Det fungerer desværre ikke - om problemet ligger i Access eller Excel siden kan jeg ikke gennemskue. Jeg må lige prøve mig frem.
Avatar billede steensommer Praktikant
12. oktober 2003 - 16:50 #13
Hej Terry
Jeg fik følgende til at fungerer:

Private Sub CommandButton2_Click()
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
Dim Rs As Recordset

conn.Open "\\hjertesrv\faelles\Lotte og Susanne\Registre\test.mdb"
strSQL = "INSERT INTO Patienter ([Patient nr], [Fornavn], [Efternavn], [CPR nr], [Adresse], [Postnr og Bynavn]) Values ('" & HCV & "', '" & FNavn & "', '" & ENavn & "', '" & CPR & "', '" & Adr & "', '" & PostBy & "')"
conn.Execute (strSQL)

End Sub

Hvor HCV, FNavn etc er felter i formular fra Excel-tabel

Tak for hjælpen :0)
Avatar billede terry Ekspert
12. oktober 2003 - 19:27 #14
selv tak :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester