Синтаксическая ошибка в ожидаемом выполнении VBA SQL ACCDB «DELETE», «INSERT», «SELECT», «PROCEDURE» или «UPDATE» - PullRequest
0 голосов
/ 06 марта 2019

Я хочу сделать кнопку для подсчета действий в Outlook.

У меня есть следующий код, но, к сожалению, он не работает:

Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Set conn = New ADODB.Connection

conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=P:\UHD-GEOBAN\SPOC und Incident\Screenshots\Sven\VBA\statistik.accdb; Persist Security Info=False;"
conn.Open
'DB: ID; currentDate; spocmail; onlinebankingmail
conn.Execute ("IF (NOT EXISTS(select * from tbl_statistics WHERE currentDate = '" & Date & "'))BEGIN INSERT INTO tbl_statistics(currentDate, spocmail) VALUES('" & Date & "', '1') END ELSE BEGIN UPDATE tbl_statistics SET spocmail = spocmail + 1 WHERE currentDate = '" & Date & "' END")

Я также хотел бы знать, возможно ли поместить длинные операторы SQL в несколько строк в коде VBA

Спасибо вперед

1 Ответ

0 голосов
/ 06 марта 2019
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Set conn = New ADODB.Connection

conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=P:\UHD-GEOBAN\SPOC und Incident\Screenshots\Sven\VBA\statistik.accdb; Persist Security Info=False;"
conn.Open
set rs = new ADODB.Recordset
rs.open "Select * from tbl_statistics where currentdate = #" & format(date(),"dd mmm yyyy") & "#" ,conn
'unless you're in the US not specifying the date format will bite you
if rs.eof then 
     conn.execute "INSERT INTO tbl_statistics(currentDate, spocmail) VALUES('#" & format(Date,"dd mmm yyyy")  & "#', '1') 

else
   conn.execute "UPDATE tbl_statistics SET spocmail = spocmail + 1 WHERE currentDate = '#" & format(Date,"dd mmm yyyy" & "#"
end if
...