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
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