Хм, CreateQueryDef в Access 2002
2 отговора
440 прегледа
Хм, CreateQueryDef в Access 2002
Имам следния код:
Dim db As DAO.Database
Dim str As String
Dim q As DAO.QueryDef
str = "UPDATE блабла" & _
"t1.id= t2.id" & _
"SET t1.flag = 1 " & _
"WHERE t2.id1= " & Me.id1
Set db = CurrentDb
Set q = db.CreateQueryDef("test", str)
q.Execute
q.Close
Debug.Print q.RecordsAffected
Set db = Nothing
Та проблемът ми е следният. Query-то си бачка и си ъпдайтва. Обаче тая кретения като стигне до криейта ми праска съобщението "Object already exists". И наистина е така. Ако сменя името на test1 си завършва кода успешно. И така до следващото изпълненеие на кода
Седя и се чудя къде бъркам. Четох в хелпа, ама ....
Мерси предварително, за всеки който откликне.....
Dim db As DAO.Database
Dim str As String
Dim q As DAO.QueryDef
str = "UPDATE блабла" & _
"t1.id= t2.id" & _
"SET t1.flag = 1 " & _
"WHERE t2.id1= " & Me.id1
Set db = CurrentDb
Set q = db.CreateQueryDef("test", str)
q.Execute
q.Close
Debug.Print q.RecordsAffected
Set db = Nothing
Та проблемът ми е следният. Query-то си бачка и си ъпдайтва. Обаче тая кретения като стигне до криейта ми праска съобщението "Object already exists". И наистина е така. Ако сменя името на test1 си завършва кода успешно. И така до следващото изпълненеие на кода
Седя и се чудя къде бъркам. Четох в хелпа, ама ....
Мерси предварително, за всеки който откликне.....
Re: Хм, CreateQueryDef в Access 2002
Ами предварително провери дали съществува Query-то и го изтрий.
Dim db As DAO.Database
Dim str As String
Dim q As DAO.QueryDef
Dim t As New ADODB.Recordset
t.Open "SELECT NAME FROM MSysObjects WHERE Name = 'test' ", CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
If Not t.EOF Then Application.CurrentDb.QueryDefs.Delete "test"
t.Close
str = "UPDATE ABC SET ABC.t = '456' WHERE (((ABC.t)='123'));"
Set db = CurrentDb
Set q = db.CreateQueryDef("test", str)
q.Execute
q.Close
Debug.Print q.RecordsAffected
Set db = Nothing
Dim db As DAO.Database
Dim str As String
Dim q As DAO.QueryDef
Dim t As New ADODB.Recordset
t.Open "SELECT NAME FROM MSysObjects WHERE Name = 'test' ", CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
If Not t.EOF Then Application.CurrentDb.QueryDefs.Delete "test"
t.Close
str = "UPDATE ABC SET ABC.t = '456' WHERE (((ABC.t)='123'));"
Set db = CurrentDb
Set q = db.CreateQueryDef("test", str)
q.Execute
q.Close
Debug.Print q.RecordsAffected
Set db = Nothing
Re: Хм, CreateQueryDef в Access 2002
Mersi,
ок става...
но ми се струва, че ще е по-елегантно в края на кода, демек...
Application.CurrentDb.QueryDefs.Delete "test"
set db = nothing
ок става...
но ми се струва, че ще е по-елегантно в края на кода, демек...
Application.CurrentDb.QueryDefs.Delete "test"
set db = nothing