while not dbgrdAdmissionProduct.DataSource.DataSet.Eof do
begin
varArticleUpdateId := dbgrdAdmissionProduct.Fields[1].AsString;
varFirstRecId := varFirstRecId + 1;
dmContanierIcon.quAdmissionProduct.Active := False;
dmContanierIcon.quAdmissionProduct.Close;
dmContanierIcon.quAdmissionProduct.SQL.Clear;
dmContanierIcon.quAdmissionProduct.SQL.Text := 'UPDATE dbt_AdmissionProduct SET p_id = '+IntToStr(varFirstRecId)+' WHERE p_product = "'+varArticleUpdateId+'"';
dmContanierIcon.quAdmissionProduct.ExecSQL;
dbgrdAdmissionProduct.DataSource.DataSet.Next;
end;
А почему тогда, при выполнении долгих операций в цикле я ставлю Application.ProcessMessages , и сворачиваю окно программы, переключаюсь на другое окно и развернуть окно программы уже не получается ? так ведь тоже операция на разворачивание окна в очередь становится, почему не разворачивает при щелчке на панели задач?
Проблемка опять с этим флоатом, дробную часть после "," не считает он дробным, хочет чтоб вместо "," стояла "." Не знаешь как быть в такой ситуации?
Для более глубокого понимания объясню на своем примере.
Данные берутся из Excel и добавляются в базу *.dbf
если в ячейке например число "450,55" он его не заносит в базу выдает ошибку
а если "450.55" то заносит, и еще если в ячейке после запятой нули тоже заносит "450,00". Как с этим бороться?
Я не хочу лезть в реестр и на каждом компе менять запятую на точку системно.
Так dmContanierIcon.quProductAll.ParamByName('_varP_visible').AsString := '1';
не запишется,
а если так: 'INSERT INTO dbt_ProductAll('p_visible, p_date, p_article) VALUES('+IntToStr(varP_visible)+ ', "'+DateToStr(varP_date)+ '", '+IntToStr(varP_parent)+',"'+varP_article+')';
то все хорошо работает, я просто хотел код защитить от SQL инъекции.
begin
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Workbooks.Open(vargPathFileProduct);
dmContanierIcon.quProductAll.Close;
dmContanierIcon.quProductAll.SQL.Clear;
varCounter := 0;
while ExcelApp.ActiveSheet.UsedRange.Rows.Count do
begin
varCounter := varCounter + 1;
varVariablePole := ExcelApp.Range['I'+IntToStr(varCounter)];
if varVariablePole = '' then Break else
begin
varP_article := varVariablePole;
Подскажите пожалуйста как правильно написать запрос следующего типа:
SELECT * FROM Lum, Lum2, Lum3 WHERE Lum.name, Lum2.name, Lum3.name LIKE "%'+varSearchArticle+'%"
После того как я UNIONом соединил три таблицы как по ним SQL запросом можно сделать поиск.
Есть три таблицы Lum, Lum2, Lum3 , и во всех таблицах есть одинаковое поле Name.
Как написать запрос чтоб при LIKE "%'+varSearchArticle+'%" работало по полям трех таблиц?
dbgrdAdmissionProduct.DataSource.DataSet.First;
varFirstRecId := 0;
while not dbgrdAdmissionProduct.DataSource.DataSet.Eof do
begin
varArticleUpdateId := dbgrdAdmissionProduct.Fields[1].AsString;
varFirstRecId := varFirstRecId + 1;
dmContanierIcon.quAdmissionProduct.Active := False;
dmContanierIcon.quAdmissionProduct.Close;
dmContanierIcon.quAdmissionProduct.SQL.Clear;
dmContanierIcon.quAdmissionProduct.SQL.Text := 'UPDATE dbt_AdmissionProduct SET p_id = '+IntToStr(varFirstRecId)+' WHERE p_product = "'+varArticleUpdateId+'"';
dmContanierIcon.quAdmissionProduct.ExecSQL;
dbgrdAdmissionProduct.DataSource.DataSet.Next;
end;