我得到了:
第32行,第16行,未终止的字符串常量,代码:800A0409错误。
我该如何调试?我在ALM中为查询报告创建了一个VB脚本,我将在Windows Scheduler中安排它。
是否有其他优化的方法来实现目标?
参考http://eyeontesting.com/questions/2159/sql-queries-in-api.html
Sub Query()
Dim qcServer, qcDomain, qcProject, qcUser, qcPassword, sSql
qcServer = "XXXXXXXXXXX"
qcDomain = "XXXXXXXXXXX"
qcProject = "XXXXXXX"
qcUser = "XXXXXXXX"
qcPassword = "XXXXXXX"
Set tdc = CreateObject("tdapiole80.tdconnection")
'Check to see that the tdc object exists
If tdc Is Nothing Then
MsgBox "The tdc object is empty"
End If
'Establish the connection and log in
tdc.InitConnectionEx qcServer
tdc.Login qcUser, qcPassword
tdc.Connect qcDomain, qcProject
'Create the tdc Command Object
Set oCommand = tdc.Command
'Build the query
sSql = "SELECT
TEST.TS_NAME AS "Test Case Name",
TESTCYCL.TC_STATUS as "Test Case Status",
CYCL_FOLD.CF_ITEM_NAME as "Test Set Folder Name",
--CYCL_FOLD.CF_ITEM_ID as "Folder ID",
CYCL_FOLD.CF_ITEM_PATH AS "Folder Path",
TESTCYCL.TC_USER_01 as 'ExternalDefectID',
TESTCYCL.TC_EXEC_DATE AS 'Execution Date',
TESTCYCL.TC_ACTUAL_TESTER AS 'Tester'
FROM
CYCL_FOLD LEFT OUTER JOIN CYCLE ON CYCL_FOLD.CF_ITEM_ID = CYCLE.CY_FOLDER_ID
LEFT OUTER JOIN TESTCYCL ON TESTCYCL.TC_CYCLE_ID = CYCLE.CY_CYCLE_ID
LEFT JOIN TEST ON TEST.TS_TEST_ID = TESTCYCL.TC_TEST_ID
WHERE
CYCL_FOLD.CF_ITEM_PATH LIKE 'AAAAASAAHAADAAAAAAA%' /*Folder Path ID*/
ORDER BY
CF_ITEM_NAME"
'Set the SQL command to the Test Coverage query
oCommand.CommandText = sSql
'Execute the query and store in the SQLResults resultset.
Set SQLResults = oCommand.Execute
'Prepare the worksheet
Worksheets("Sheet1").Range("A:G").ClearContents
'Set the header row titles.
Worksheets("Sheet1").Range("A1") = "Test Case Name"
Worksheets("Sheet1").Range("B1") = "Test Case Status"
Worksheets("Sheet1").Range("C1") = "Test Set Folder Name"
Worksheets("Sheet1").Range("D1") = "Folder Path"
Worksheets("Sheet1").Range("E1") = "ExternalDefectID"
Worksheets("Sheet1").Range("F1") = "Execution Date"
Worksheets("Sheet1").Range("G1") = "Tester"
'Start populating data on row 2 (leaving the header information above).
iExcelRow = 2
'Iterate through the query results and populate the worksheet.
For iRecord = 1 To SQLResults.RecordCount
'Write the values to the worksheet
Worksheets("Sheet1").Range("A" & iExcelRow) = SQLResults.FieldValue("Test Case Name")
Worksheets("Sheet1").Range("B" & iExcelRow) = SQLResults.FieldValue("Test Case Status")
Worksheets("Sheet1").Range("C" & iExcelRow) = SQLResults.FieldValue("Test Set Folder Name")
Worksheets("Sheet1").Range("D" & iExcelRow) = SQLResults.FieldValue("Folder Path")
Worksheets("Sheet1").Range("E" & iExcelRow) = SQLResults.FieldValue("ExternalDefectID")
Worksheets("Sheet1").Range("F" & iExcelRow) = SQLResults.FieldValue("Execution Date")
Worksheets("Sheet1").Range("G" & iExcelRow) = SQLResults.FieldValue("Tester")
'Increment the iteration
iExcelRow = iExcelRow + 1
SQLResults.Next
Next
'Disconnect from Quality Center
If tdc.Connected = True Then
tdc.Disconnect
End If
'Log off the server
If tdc.LoggedIn Then
tdc.Logout
End If
'Release the TDConnection object.
tdc.ReleaseConnection
'Adjust the column width
Worksheets("Sheet1").Columns("A1:G1").EntireColumn.AutoFit
Set SQLResults = Nothing
Set oCommand = Nothing
Set tdc = Nothing
MsgBox "Done"
End Sub
答案 0 :(得分:2)
可能就是这个
sSql = "SELECT
TEST.TS_NAME AS "Test Case Name",
TESTCYCL.TC_STATUS as "Test Case Status",
CYCL_FOLD.CF_ITEM_NAME as "Test Set Folder Name",
--CYCL_FOLD.CF_ITEM_ID as "Folder ID",
CYCL_FOLD.CF_ITEM_PATH AS "Folder Path",
TESTCYCL.TC_USER_01 as 'ExternalDefectID',
TESTCYCL.TC_EXEC_DATE AS 'Execution Date',
TESTCYCL.TC_ACTUAL_TESTER AS 'Tester'
FROM
CYCL_FOLD LEFT OUTER JOIN CYCLE ON CYCL_FOLD.CF_ITEM_ID = CYCLE.CY_FOLDER_ID
LEFT OUTER JOIN TESTCYCL ON TESTCYCL.TC_CYCLE_ID = CYCLE.CY_CYCLE_ID
LEFT JOIN TEST ON TEST.TS_TEST_ID = TESTCYCL.TC_TEST_ID
WHERE
CYCL_FOLD.CF_ITEM_PATH LIKE 'AAAAASAAHAADAAAAAAA%' /*Folder Path ID*/
ORDER BY
CF_ITEM_NAME"
要执行多行字符串,您需要concatenate shorter strings并使用line continuation character _
,并在字符串文字中嵌入双引号,您需要escape them by doubling them up:
sSql = "SELECT " & _
"TEST.TS_NAME AS ""Test Case Name""," & _
"TESTCYCL.TC_STATUS as ""Test Case Status""," & _
"CYCL_FOLD.CF_ITEM_NAME as ""Test Set Folder Name""," & _
"--CYCL_FOLD.CF_ITEM_ID as ""Folder ID""," & _
"CYCL_FOLD.CF_ITEM_PATH AS ""Folder Path""," & _
"TESTCYCL.TC_USER_01 as ""ExternalDefectID""," & _
"TESTCYCL.TC_EXEC_DATE AS ""Execution Date""," & _
"TESTCYCL.TC_ACTUAL_TESTER AS ""Tester""" & _
"FROM " & _
"CYCL_FOLD LEFT OUTER JOIN CYCLE ON CYCL_FOLD.CF_ITEM_ID = CYCLE.CY_FOLDER_ID " & _
"LEFT OUTER JOIN TESTCYCL ON TESTCYCL.TC_CYCLE_ID = CYCLE.CY_CYCLE_ID " & _
"LEFT JOIN TEST ON TEST.TS_TEST_ID = TESTCYCL.TC_TEST_ID " & _
"WHERE " & _
"CYCL_FOLD.CF_ITEM_PATH LIKE 'AAAAASAAHAADAAAAAAA%' /*Folder Path ID*/ " & _
"ORDER BY " & _
"CF_ITEM_NAME"