Topic: Ошибка To many actual parameters при выполнении запроса с INNER JOIN

Доброго времени суток!
После выполнения скрипта с INSERT пытаюсь вывести данные в TableGrid1 формы F_Data2 и постоянно получаю ошибку:

procedure F_Col_Button1_OnAfterClick (Sender: TObject);
begin
F_Data2.TableGrid1.dbSQLExecute('SELECT T4.id, T3.FullName, T4.Col, T4.Prim FROM Group AS T1 ' +
'INNER JOIN SubGroup AS T2 ON T1.id = T2.id_Group ' +
'INNER JOIN Works AS T3 ON T2.id = T3.id_SubGroup ' +
'INNER JOIN Zvit AS T4 ON T3.id = T4.id_Works ' +
'WHERE T1.id='+F_Data2.TB1.text+' AND T4.Data='+FormatDateTime('DD.MM.YYYY',F_Data.DateTimePicker1.DateTime)+'AND T4.UEGG='+F_Data.ComboBox1.text);
end;


Где: F_Data2 и F_Data - Формы
        TB1 - EditBox

Заранее всем спасибо!

I'm just learning

Re: Ошибка To many actual parameters при выполнении запроса с INNER JOIN

DateTime)+'AND T4.UEGG


перед AND нужен пробел может быть?...

Re: Ошибка To many actual parameters при выполнении запроса с INNER JOIN

Antikass,
спасибо, что обратили внимание на тему!
Последовал Вашему совету, но увы результат тот же. (((

I'm just learning

Re: Ошибка To many actual parameters при выполнении запроса с INNER JOIN

какую ошибку ты получаешь сообщение?


Я думаю, тебе нужно сделать это.
Добавить "+"

Пример ниже.


receiveOrder.tgReceiveOrder.dbSQL := 'SELECT DISTINCT suppliers.supplierName,productSupplier.supplier_part_number,productSupplier.description,' +
  'orders.orderQty,orders.receivedDate,orders.receivedQty,products.LineNumber FROM orders ' +
  'LEFT OUTER JOIN suppliers on orders.id_suppliers = suppliers.id LEFT OUTER JOIN productSupplier on orders.id_productSupplier = productSupplier.id ' +
  'LEFT OUTER JOIN products on orders.id_products = products.id WHERE orders.orderRef = "'+receiveOrder.cmbPO.Text+'"';
On a clear disk you can seek forever

5 (edited by Ronin751 2020-06-12 10:29:21)

Re: Ошибка To many actual parameters при выполнении запроса с INNER JOIN

какую ошибку ты получаешь сообщение?

To many actual parameters

CDB,
Спасибо Вам огромное, что уделили внимание и потратили своё время!
Последовал Вашему совету. Поставил кавычки до и перед значениями, и запрос выполнил не через dbSQLExecute, а с первоначальным dbSQL. ВСЁ ЗАРАБОТАЛО КАК НУЖНО.
Спасибо Вам и успехов!

P.S. Прошу прощения за излишнюю назойливость, но не подскажите ли какая разница между запросами через dbSQL и dbSQLExecute?

I'm just learning

6 (edited by CDB 2020-06-13 01:19:50)

Re: Ошибка To many actual parameters при выполнении запроса с INNER JOIN

Я не совсем уверен, но, насколько я знаю, SQLExecute "действие" оператора SQL. dbSQL можно использовать для заполнения таблицы или кнопки для выполнения оператора SQL.

Таким образом, сам SQLExecute работает с базой данных, где dbSQL работает с компонентом, а затем для подключения к базе данных требуется SQLExecute.



I'm not quite sure, but as far as I know, SQLExecute is the "action" of an SQL statement. dbSQL can be used to populate a table or button to execute an SQL statement.

Thus, SQLExecute itself works with the database, where dbSQL works with the component, and then SQLExecute is required to connect to the database.

On a clear disk you can seek forever

Re: Ошибка To many actual parameters при выполнении запроса с INNER JOIN

Я считал, что dbSQL-это нечто типа строки. Грубо говоря, если создать некую переменную типа String и ей дать значение «SELECT * FROM SomeTable”, а затем закинуть эту переменную в dbSQLExecute, то  выполним запрос. Думаю, dbSQL-это и есть та самая переменная.

I'm just learning

8 (edited by CDB 2020-06-13 10:31:32)

Re: Ошибка To many actual parameters при выполнении запроса с INNER JOIN

Они похожи, но, если вы используете dbSQL, вам придется использовать SQLExecute без аргументов для запуска запроса к базе данных.


У Дмитрия или Константина было бы лучшее объяснение. Константин здесь на русском форуме как K245

On a clear disk you can seek forever