tabel in gebruik door andere gebruiker of proces ?

Status
Niet open voor verdere reacties.

DolfRoovers

Nieuwe gebruiker
Lid geworden
20 mrt 2008
Berichten
1
hallo,

deze error krijg ik op .fields append .createfield(vrst!rapportageperiode, dbDouble)

fout 3211 tijdens uitvoering:

de database-engine kan de tabel tblperiodemonitorTMP niet vergrendelen. De tabel is momenteel in gebruik door een andere gebruiker of ander proces

De bedoeling van deze recordset is dat we eerst gaan kijken of de velden al bestaan, zoniet gaan we deze aanmaken, in het 2de deel van de code gaat er dan informatie in deze tabellen worden gezet die uit tblperiodemonitor gehaald wordt en in tblperiodemonitortmp gezet wordt.


Private Sub cmdSelect_Click()

Dim vDb As DAO.Database

Dim vrst As DAO.Recordset

Dim vRstTMP As DAO.Recordset

Dim tdfNew As TableDef

Dim prpLoop As Property

Dim sqlQ As String

Dim sqlqTMP As String

Dim teller As Integer

Dim aantal As String

Dim tabel As TableDef

Dim vrstclose As TableDef




'Create new table with the selected fields


sqlQ = "select * "

sqlQ = sqlQ & " from tblPeriodemonitor "

sqlQ = sqlQ & " where left(tblPeriodemonitor.rapportageperiode,4) = " & Me.cbojaar

sqlQ = sqlQ & " AND Celid = " & Me.cbocelid

sqlQ = sqlQ & " order by tblperiodemonitor.rapportageperiode"



sqlqTMP = "select * from tblPeriodemonitorTMP"


Set vDb = CurrentDb

Set vrst = vDb.OpenRecordset(sqlQ, dbOpenDynaset, dbSeeChanges)

Set vRstTMP = vDb.OpenRecordset(sqlqTMP, dbOpenDynaset)

teller = CurrentDb.TableDefs("tblperiodemonitortmp").Fields.count

If Not (vrst.BOF And vrst.EOF) Then

vrst.MoveFirst

Set tdfNew = vDb.TableDefs("tblperiodemonitortmp")

With tdfNew

Do While Not vrst.EOF

For I = 2 To teller

aantal = CurrentDb.TableDefs("tblperiodemonitorTMP").Fields(I).Name

If vrst!rapportageperiode = aantal Then _

Else

.Fields.Append .CreateField(vrst!rapportageperiode, dbDouble)
vrst.MoveNext

Next I

Loop

On Error Resume Next

'DoCmd.DeleteObject acTable, "tblPeriodemonitorTMP"

On Error GoTo 0

' vDb.TableDefs.Append tdfNew



End With

'' vdb.Close

Else

End If



'Fill the new database with the data of the selected period


sqlQ = "select * "

sqlQ = sqlQ & " from tblPeriodemonitor "

sqlQ = sqlQ & " where left(tblPeriodemonitor.rapportageperiode,4) = " & Me.cbojaar

sqlQ = sqlQ & " AND Celid = " & Me.cbocelid

sqlQ = sqlQ & " order by tblperiodemonitor.rapportageperiode"


sqlqTMP = "select * from tblPeriodemonitorTMP"

Set vrst = vDb.OpenRecordset(sqlQ, dbOpenDynaset)

Set vRstTMP = vDb.OpenRecordset(sqlqTMP, dbOpenDynaset)

If Not (vrst.BOF And vrst.EOF) Then

For I = 7 To vrst.Fields.count - 1

vRstTMP.AddNew

vRstTMP.Fields("Description") = vrst.Fields(I).Name

vrst.MoveFirst

Do While Not vrst.EOF

vRstTMP.Fields(vrst!rapportageperiode) = vrst.Fields(vRstTMP!Description)

vRstTMP.Fields("Bu") = Me.cbocelid.Column(1)

vrst.MoveNext

Loop

vRstTMP.Update

Next I

End If


End Sub
 
Eerdere recordset

Het lijkt me dat je eerder in dit script al een recordset hebt geopend waar deze tabel bij betrokken is. Dat zorgt ervoor dat de tabeldefinitie niet meer bewerkt kan worden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan