Jag får errorn "Object variable or with block not set" när jag köra följande kod: Det kanske är så att efter .recordsource så måste du sätta .Refresh för att den skall köra din sql-fråga. Jag ser dock ingen .Open på connection heller? Jag lade till " .Recordset.Open" innan .recordsource men det hjälpte inte. Jag fick errorn vid .recordeset.open istället. Jag prövade med att köra .refresh efter att jag hade ändrat recordsource men det hjälpte heller inte. Vad är felet? Ado objektet? det är en vanlig ado kontroll. vad vill du mera veta? det verkar som om din recordsource inte initieras riktigt.. dvs du har inget recordset att arbeta med överhuvudtaget ... Nu börjar jag bli lite smått sur på allt detta databas krånglet! Hej, du blandar ihop detta. Gör istället såhär... Jag börjar bli lite fundersam här...ingenting fungerar. Titta på denna kursen och se till att du gör allt rätt..Problem med ado och Access
<code>
Public Function Info(CmdVar As String) As Boolean
Dim I As Long
Dim LastRecord As Long
'On Error GoTo Err
frmInfo.Show
'-------init database----------
With frmInfo.Ado
.RecordSource = RecordSource
.Recordset.MoveLast ' här får jag errorn
LastRecord = .Recordset.AbsolutePosition
.Recordset.MoveFirst
End With
'------------------------------
'------laddar list-------------
With frmInfo
For I = 1 To 135 ' .Data.Recordset.Properties.Count
.Ado.Recordset.MoveNext
DoEvents
.lstCvars.AddItem (.lblCache.Caption)
Next I
End With
'------------------------------
Info = True
Exit Function
Err:
Unload frmInfo
MsgBox "An error oquired when viewing information about specified Command/Variable. No data have been damaged.", vbInformation
Info = False
End Function
</code>
CursorLocation= 3-adUseClient
ConnectString= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Frans\VB\ConfigEditor\Ny.mdb;Persist Security Info=False"
Vad ska jag göra för att det ska fungera?
En fråga till: Om jag vill skapa en databas från grunden(med kod) hur gör jag det? Dvs att jag inte öppnar en befintlig utan skapar en helt ny *.mdb
mvh CythSv: Problem med ado och Access
Försökte....
Sv: Försökte....
Du hittar all kod i mitt första inlägg. Den enda skillnaden är att jag har lagt in .open i min 'init del. Och jag får felmeddelandet vid .open (samma err som första gången). Hajar du?Sv: Försökte....
Beroende på vilken typ av kommando skall recordsource se ut på olika sätt ... Du visar inte vad recordsource är i din fråga, skickar bara med en variabel. vad innehåller variablen recordsource och vad har du för commandtype satt ??
ett exempel på recordsource / commandtype
adodc1.commandtype = adCmdTable
adodc1.recordsource = "Customers"
nu hämtar den all data från Customers tabellen i db'n ...
.open kan du skippa om du använder recordsource ... Däremot kan det vara ide att använda .refresh
// PatrikSv: Försökte....
Mitt problem kvarstår:
<code>
'Jag skapar databasen med följande kod vilket går alldeles utmärkt:
Dim db as Database
Dim tblDef as Tabledef
Dim fldDef as Field
Dim dbName as String
Private Sub cmdCreateDataBase_Click()
dbName = "F:\Frans\VB\Ado\Test.MDB"
if (Len(Dir(dbName))) then
Kill dbName
end if
Set db =DBEngine.Workspaces(0).CreateDatabase(dbName,_ dbLangGeneral)
'Skapar databasen
set tblDef = db.CreateTableDef("Tabellnamn")
'Skapar fältet i Tabellnamn tabellen
Set fldDef = tblDef.CreateField("Fältnamn", dbText)
'dbText är fältets datatyp
'Knyter fältet till tabellen
tblDef.Fields.Append fldDef
'Knyter tabellen till databasen
db.TableDefs.Append tblDef
----------------------------------------
'jag öppnar databasen med följande kod och det funkar som det ska:
Public Sub InitADO()
Set con = New ADODB.Connection
Set rst = New ADODB.Recordset
Dim ConnectionString As String
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Frans\VB\Ado\Test.MDB;Persist Security Info=False"
Ado.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Frans\VB\Test\InfoKälla\Quake.MDB;Persist Security Info=False"
Ado.RecordSource = "Select * From Commands"
' öppnar anslutningen
On Local Error Resume Next
con.Open ConnectionString
If con.Errors.Count > 0 Then
MsgBox "anslutningen misslyckades!" & vbCrLf & _
con.Errors(0).Description
ClearADO
End
Else
MsgBox "du är ansluten till databasen"
End If
End Sub
</code>
Vad ska jag göra efter detta för att skriva ett värde/läsa från databasen?
Jag har provat lite olika varianter men inga har lyckats. Det dumma är att allt funkar med den vanliga data1 kontrollen men när jag sedan ska göra det med ado så funkar det inte som det ska. Och om jag har förstått folk rätt så är det ado som gäller.
Tacksam för hjälp, smått desperat
/CythSv: Försökte....
<code>
Sub Form_Load()
ADOInit
' alternativ 1
set rst=con.execute("select * from command")
do while not rst.eof then
list1.additem rst(0)
rst.movenext
loop
rst.close
' alterntiv 2
Rst.Open "command",con
do while not rst.eof then
list1.additem rst(0)
rst.movenext
loop
rst.close
End Sub
Public Sub InitADO()
Set con = New ADODB.Connection
Set rst = New ADODB.Recordset
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Frans\VB\Ado\Test.MDB;Persist Security Info=False"
' öppnar anslutningen
On Local Error Resume Next
con.Open ConnectionString
If con.Errors.Count > 0 Then
MsgBox "anslutningen misslyckades!" & vbCrLf & _
con.Errors(0).Description
ClearADO
End
Else
MsgBox "du är ansluten till databasen"
End If
End Sub
</code>Sv: Försökte....
Jag lägger till en (OBS!) vanlig data1 kontroll till mitt formulär och väljer databasename och recordsource. Jag"knyter" även en label till data kontrollen. När jag sedan kör programmet och när jag trycker på data kontrollens knappar så händer inte ett skit. Jag prövar även att köra det med kod:
<code>data1.recordset.movefirst</code>
Men då får jag errorn "Object Variable or with block not set.".
Detta börjar gå mig på nerverna, absolut ingenting funkar när det gäller databaser. Jag har inte gjort några basala fel som att jag försöker öppna en tom databas eller en with sats som är fel.
Kan det vara någon kontroll/vb som är paj? Jag har visual studio enterprise, service pack 4, och mdac 2.6 installerat.
/CythSv: Försökte....
http://www.pellesoft.nu/learn/databas/access/addrec.htm
/Pelle