Någon som kan hjälpa mej med detta, har kört fast nu. Jag tycker du har en strulig struktur i ditt program. Det ser ut som du har två databnaser en för parametrar och en med data. Båda använder samma variabel, con. Gissar på att du arbetar mot fel databas när du försöker öppna dit recordset. Jo kan verka lite rörigt nu, men det är riktigt, jobbar mot två olika databaser, en som jag läser lite parametrar ur och en databas som jag skall spara inmatade värden i. Vill nämlige inte ha dessa i samma databas. Löste det, bytte variabeln "con" så det inte va samma och så hade jag strula till ett registervärde så j ava ju inne i fel databas......så kan det gå tack iaf Databas strul......
Kör med följande kod i form load:
<code>
InitADO
If con.Errors.Count > 0 Then
MsgBox "anslutningen misslyckades!" & vbCrLf & con.Errors(0).Description
ClearADO
Else
stbStatus1.Panels(4) = " Databas: CONNECTED"
End If
InitADOParamet
If con.Errors.Count > 0 Then
MsgBox "Anslutningen misslyckades! till parametdatabasen" & vbCrLf & con.Errors(0).Description
ClearADOParamet
End
Else
End If
' fyller comboboxen
Set rst = CreateRecordset("tblBankObjekt", dbOpenAsTable)
Do While Not rst.EOF
Combo1.AddItem rst("ObjektID") & " - " & rst("Placering")
rst.MoveNext
Loop
rst.Close
ClearADOParamet
</code>
På en knapp har jag denna kod som skall spara ner värden som är ifyllt i några textrutor och värdet från comboboxen som valts:
<code>
Dim sTemp, sLuft, sAnstNr As String
sTemp = GetSetting("EmC", "Drift", "Temp", "0")
sLuft = GetSetting("EmC", "Drift", "Luft", "0")
sAnstNr = GetSetting("EmC", "Drift", "AnstNummer", "-")
strObjekt = Left(Combo1.Text, InStr(Combo1.Text, " ") - 1)
SQL = "insert into tblBankar (Varde1, Varde2, Varde3, Temp, Luft, Datum, AnstNr, ObjektId) " & _
"values('" & txtVarde1 & "'," & txtVarde2 & ",'" & txtVarde3 & "','" & sTemp & "','" & sLuft & "','" & Date & "'," & sAnstNr & ",'" & strObjekt & "')"
' kör insert
con.Execute SQL
</code>
****
InitADOParamet Och InitADO finns i en modul och ser ut så här:
<code>
Public Sub InitADOParamet()
Dim sDbP As String
sDbP = "d:\Databaser\Param.mdb"
Set con = New ADODB.Connection
ConnectionString2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDbP & ";Persist Security Info=False"
' öppnar anslutningen
On Local Error Resume Next
con.Open ConnectionString2
End Sub
Och
Public Sub InitADO()
Dim sDbPath As String
sDbPath = GetSetting("EMC", "Param", "Db")
'"d:\Databaser\Logg.mdb"
Set con = New ADODB.Connection
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDbPath & ";Persist Security Info=False"
' öppnar anslutningen
On Local Error Resume Next
con.Open ConnectionString
End Sub
</code>
Och
<code>
Public Function CreateRecordset(Indata As String, RecordsetType As dbRecordsetType) As ADODB.Recordset
Select Case RecordsetType
Case 1
Dim rsTmp As New ADODB.Recordset
rsTmp.CursorLocation = adUseClient
rsTmp.Open Indata, con, adOpenDynamic, adLockBatchOptimistic, adCmdTable
Case Else
Set rsTmp = con.Execute(Indata)
End Select
Set CreateRecordset = rsTmp
Set rsTmp = Nothing
End Function
</code>
Problemet är när jag skall spara i databasen som jag får upp medelandet att tabellen inte kan hittas, men jag vet att den finns och är rätt. Allt funka bra tills jag utökade programmet med att lägga till InitADOParamet och "fylla" en combobox, den funktionen är som den skall iaf.
fast har jag iaf kört
/PeterSv: Databas strul......
Sv: Databas strul......
Allt funkade ju när jag bara jobbade mot en databas, den jag sparade datan i. Så strulet blev ju när jag skall öppna två olika databaser.
Hur kan ett bra tillvähagångssätt vara då för att öbbna två oliga databaser?Sv: Databas strul......
/peter