Я уверен, что есть действительно простое решение по этому вопросу, но я пробовал все, что знаю без успеха.Использование TOP в простой строке SQL (VB6)
Я пытаюсь изменить эту полностью рабочую строку SQL, чтобы получить только результаты Топ-25, а не все результаты. Пробелы исправлены на этом посту. (Я использовал TOP 25 и т.д. с базами данных/Access Jet в течение многих лет без каких-либо проблем)
"SELECT * FROM " & "data.CSV" & " ORDER BY " & "Elapsed" & " DESC "*
Для Top 25 SQL синтаксиса Я тестируемой:
1."SELECT TOP 25 FROM " & "data.CSV" & " ORDER BY " & "Elapsed" & " DESC "
2."SELECT TOP 25 * FROM " & "data.CSV" & "ORDER BY " & "ELAPSED" & " DESC "
3."SELECT TOP 25" & " ORDER BY " & "ELAPSED" & " DESC " & FROM" & " data.CSV"
Ни в одном из этих трех продуктов любые результаты из файла данных линейных тестов 45 строк. Нет ошибок, все компилируются.
Редактировать: Исправлены пробелы рабочей строки. Фактический код используется правильно. Исправленная недостающая строка двойной кавычки 2.
Любые советы, оцененные.
Редактировать: Код добавлен.
Private Sub Command4_Click() '*** Print direct to report ***
Dim Cn1 As ADODB.Connection
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field
Dim strData, iSQLStr As String
Dim sData() As String
Dim c, i, s As Integer
On Error Resume Next
Set Cn1 = New ADODB.Connection
Cn1.ConnectionString = _
"Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"DefaultDir=" & "C:\"
Cn1.Open
Set rs = New ADODB.Recordset
rs.Fields.Append "Room", adVarChar, 2
rs.Fields.Append "Procedure", adVarChar, 2
rs.Fields.Append "Group", adVarChar, 12
rs.Fields.Append "Label", adVarChar, 12
rs.Fields.Append "Time_In", adVarChar, 22
rs.Fields.Append "Time_Out", adVarChar, 22
rs.Fields.Append "Elapsed", adVarChar, 8
rs.Open
'iSQLStr = "Select TOP 25" & " ORDER BY " & "Elapsed" & " DESC " & "FROM" & " data.csv"
'iSQLStr = "Select TOP 25 * FROM" & " data.csv" & " ORDER BY " & "Elapsed" & " DESC "
iSQLStr = "Select * FROM " & "data.csv" & " ORDER BY " & "Elapsed" & " DESC "
Set rs = Cn1.Execute(iSQLStr)
Set DataReport1.DataSource = rs
DataReport1.Show vbModal
rs.Close
End Sub
ваш первый будет ** NOT ** сбор. у вас нет пробелов между строками, поэтому вы создаете 'SELECT ... FROMdata.CSVORDER BYElapsed Desc', что является прямой синтаксической ошибкой. И вы пытаетесь выбрать из. CSV-файла, или находитесь в базе данных с именем 'data', с таблицей с именем' CSV'? –
Ваш второй должен работать с дополнительными пространствами, указанными @MarcB. Кроме того, ему не хватает двойной кавычки конца ... '" SELECT TOP 25 * FROM "&" data.CSV "&" ORDER BY "&" ELAPSED "&" DESC "' – jradich1234
Ваш второй оператор не выбирает любые строки, поэтому он не удастся. Ваш третий оператор не оставляет пробела между именем файла и 'ORDER BY', а' DESC' не заключен в двойные кавычки. У вашего 4-го оператора есть 'ORDER BY' перед предложением' FROM', которое не разрешено в любой СУБД. Это беспорядок. – JNevill