---
title: "Jobba med recordset"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/97754-jobba-med-recordset"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Jester"
published: "2004-02-19T21:22:57.000Z"
updated: "2004-02-21T00:37:06.000Z"
replies: 8
views: 275
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/97754-jobba-med-recordset"
---

# Jobba med recordset

## #1 — Jester, 2004-02-19T21:22Z

Ave

Undrar om någon kan hjälpa mig med följande.
Proceduren skall hämta värden från en tabell och lagra dessa i ett recordset. Med hjälp av värdena i  setet skall nya poster skapas i en annan tabell.
Koden ser ut som följer och jag får ett typkonverteringsfel i RunSQL raden.
Mina främsta frågor är:
1\. Är det rätt upplagt med recordset?
2\. Varför funkar inte RunSQL satsen? Kan jag göra det på annat sätt?

```
Private Sub cmdNyInmatning_Click()

Dim startTime As Variant
Dim endTime As Variant
Dim rs As New ADODB.Recordset
Dim strSQL As String

startTime = DLookup("Open", "Tbl_Positioner", "Posit_ID=" & Me.cboPosit)
endTime = DLookup("Close", "Tbl_Positioner", "Posit_ID=" & Me.cboPosit)

strSQL = "SELECT Timmar FROM Tbl_Timmar WHERE Timmar BETWEEN #" & startTime & "# AND #" & endTime & "# ORDER BY Timmar"

rs.Open strSQL, CurrentProject.Connection

While Not rs.EOF
    DoCmd.RunSQL "INSERT INTO Tbl_PersKontroll (Datum, Post_ID, Tim) VALUES('#Me.txtDate#','Me.cboPosit','rs.Timmar') "
    rs.MoveNext
    Wend

Här skall lite annan kod ligga men så långt har jag inte kommit än.. 

End Sub
```

Permalänk: https://www.webforum.nu/p/97754

## #2 — Jon, 2004-02-19T22:06Z

Vad är det för datatyp på Tbl_PersKontroll.Tim och Tbl_PersKontroll.Post_ID?
Är det ett tal så ska det vara

"INSERT INTO Tbl_PersKontroll (Datum, Post_ID, Tim) VALUES('#Me.txtDate#',Me.cboPosit,rs.Timmar) "

Sen är mina ado-minnen suddiga men kan det inte vara så att det egentligen ska vara:

"INSERT INTO Tbl_PersKontroll (Datum, Post_ID, Tim) VALUES('#Me.txtDate#',Me.cboPosit,rs!Timmar) "
 :)

Sen ser det lite udda ut att Post_ID ligger i en combo som heter cboPosit men det kanske är så?

Permalänk: https://www.webforum.nu/p/1280236

## #3 — Jester, 2004-02-19T22:41Z

Ave

Datum förklarar ju sig själv, Post_ID är ett tal, Tim är i datumformat. Det funkade inte att utelämna ' - tecknen och
rs!timmar förbättrade inte resultatet....tyvärr..tack för hjälpen iaf.

Anledningen att Post_ID kommer från en kombo är att de värdena väljs i ett formulär från en tredje tabell.

Permalänk: https://www.webforum.nu/p/1280248

## #4 — LarsG, 2004-02-20T08:26Z

Du behöver bara en SQL-sats

```
DoCmd.RunSQL "INSERT INTO Tbl_PersKontroll (Datum, Post_ID, Tim) " & _
" select #"  & Me.txtDate & "#,'" & replace(Me.cboPosit,"'","''") & "',Timmar from tbl_timmar "
```

Permalänk: https://www.webforum.nu/p/1280330

## #5 — Jester, 2004-02-20T09:44Z

Ave

Man tackar allra mjukast, fungerar kanon efter att jag utvecklat koden lite som följer!!! :birp

```
DoCmd.RunSQL "INSERT INTO Tbl_PersKontroll (Datum, Post_ID, Tim) " & _
" select #" & Me.txtDate & "#,'" & Replace(Me.cboPosit, "'", "''") & "',Timmar from tbl_timmar WHERE Timmar BETWEEN #" & startTime & "# AND #" & endTime & "# "
```

Nu skall jag bara försöka lista ut vad det är du gjort så jag kan bli lite klokare oxå... . Så lite följdfrågor därför.. :e 

Varför en replace på cboPosit? Vad gör en replace?
Går det att få bort meddelandet om X antal poster har lagts till osv osv... ser ju inte riktigt snyggt ut..

Permalänk: https://www.webforum.nu/p/1280368

## #6 — Engine^, 2004-02-20T12:07Z

Replace byter ut tecken i en sträng. I det här fallet så byts en apostrof mot två för att komma undan *sql injections*.

För att slippa meddelandet (jag antar att det är RunSQL som ger det) får du skriva om det lite...

```
CurrentProject.Connection.Execute "INSERT INTO Tbl_PersKontroll (Datum, Post_ID, Tim) " & _
  "SELECT #" & Me.txtDate & "#, '" & Replace(Me.cboPosit, "'", "''") & "', Timmar FROM tbl_timmar " & _
  "WHERE Timmar BETWEEN #" & startTime & "# AND #" & endTime & "#", , adExecuteNoRecords
```

Permalänk: https://www.webforum.nu/p/1280460

## #7 — Jester, 2004-02-20T14:57Z

Okej, tack för tipset, skall prova det

Varför används inte replace på det två andra?

Permalänk: https://www.webforum.nu/p/1280573

## #8 — Engine^, 2004-02-20T16:08Z

Tänkte aldrig på det, men det ska användas för alla fält som användaren själv skriver in värden i.

Permalänk: https://www.webforum.nu/p/1280604

## #9 — Jester, 2004-02-21T00:37Z

Ok...kanske för att de andra är tidsformaterade #

Jag försökte sätta in en radbrytning i min SQL kod och då blev det helt plötsligt typfel.....verkar lite skumt det där....spelar det någon roll var man sätter in radbrytningen i dylik sql-sats?

Permalänk: https://www.webforum.nu/p/1280956

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/97754-jobba-med-recordset
