make-date变量

s2j5cfk0  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(298)

首先我很抱歉英语不好,但我会尽力的。
我有一个在vba宏中运行的oracle查询,我需要将sqlselect中的日期设置为与表单元格相关的变量,我已经设法使sqlconsult工作了。
我真的很感激一些帮助,我真的卡住了,向下去的工作代码。

Private Sub cmdConexaoBD_Click()

Dim sql As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim i As Integer

'define a conexão com o banco de dados
Set cn = New ADODB.Connection

cn.CursorLocation = adUseClient

cn.Open "Driver={Microsoft ODBC for Oracle}; " & _
"CONNECTSTRING=database;uid=username;pwd=password;"

Set rs = New ADODB.Recordset

sql = "SELECT NUMOS,MIN(DTINICIOOS),MAX(DTFIMOS),MAX(DTFIMOS)-MIN(DTINICIOOS) FROM PCMOVENDPEND WHERE DATA >= TRUNC(SYSDATE) GROUP BY NUMOS"

rs.Open sql, cn

Range("A1").Value = "OS"
Range("B1").Value = "DT"
Range("C1").Value = "DT"
Range("D1").Value = "TEMPO"

i = 1

If Not rs.EOF Then

Do While Not rs.EOF

Range("A" & i + 1).Value = rs(0)
Range("B" & i + 1).Value = rs(1)
Range("C" & i + 1).Value = rs(2)
Range("D" & i + 1).Value = rs(3)
rs.MoveNext
i = i + 1

Loop

End If

cn.Close

End Sub

写在哪里 WHERE DATA >= TRUNC(SYSDATE) “data”实际上是date(葡萄牙语),我想把date设置为一个引用一个表单元格的变量,这样我就可以在电子表格中更改它,并且在不更改代码的情况下导入该日期的数据。
希望我说清楚了,谢谢!

s8vozzvw

s8vozzvw1#

例如:

Dim dt

dt = format(Range("F1").Value,"mm/dd/yyyy")  'your date is in F1

sql = " SELECT NUMOS,MIN(DTINICIOOS),MAX(DTFIMOS),MAX(DTFIMOS)-MIN(DTINICIOOS) " & _
      " FROM PCMOVENDPEND " & _ 
      " WHERE DATA >= to_date('" & dt & "','mm/dd/yyyy') GROUP BY NUMOS "
uoifb46i

uoifb46i2#

最好使用绑定变量,因此需要这样的内容:

Set dbADOCommand = New ADODB.Command 
Set dbADOParameter = New ADODB.Parameter 

sql = "SELECT NUMOS,MIN(DTINICIOOS),MAX(DTFIMOS),MAX(DTFIMOS)-MIN(DTINICIOOS) FROM PCMOVENDPEND WHERE DATA >= :bindDate GROUP BY NUMOS"

dbADOCommand.CommandText = sql
dbADOCommand.CommandType = adCmdText 
dbADOCommand.NamedParameters = true 
dbADOCommand.Prepared = true 

Set dbADOParameter = dbADOCommand.CreateParameter("bindDate", _ 
                                                  ADODB.DataTypeEnum.adDBDate, _ 
                                                  ADODB.adParamInput, _ 
                                                  8, _ 
                                                  "2020-01-01")
dbADOCommand.Parameters.Append dbADOParameter 

Set dbADORecordSet = New ADODB.Recordset
Set dbADORecordSet = dbADOCommand.Execute

相关问题