2015-06-08 4 views
0

У меня есть форма с двумя кнопками с двумя разными событиями, одна из которых устанавливает заказ, чтобы другой был отклонен. Для моего stringgrid я выбираю записи из базы данных, а для событий buttonClick я создаю запрос UPDATE с advStringGrid.Selectedtext, значение которого я помещаю в запрос UPDATE. Но проблема в том, что когда я сначала нажимаю кнопку «Готово», а после этого нажимаю кнопку «Отклонить», не закрывая форму, значение строки остается только до первого щелчка. Возможно, theres вариант «немедленно» или без закрытия формы, чтобы получить новое значение для переменной advStringGrid.Selectedtext.Использование StringGrid selectedText в разных событиях, delphi

procedure TfTodoList.setRefusedbtnClick(Sender: TObject); 
var 
    i: Integer; 
begin 

    if (Sender = setRefusedbtn) and (State = 0) then 
    begin 

    qryExec.Sql.Text := 'Update KitchenOrderRow Set StatusID = 1' + 
     ' Where (OrderId in (Select OrderId from KitchenOrderHeader ' + 
     ' Where Invoice = ' + IntToStr(Orders[X].Invoice) + 
     ')) and (InvRowId = ' + IntToStr(Orders[X].InvRowId) + ')'; 

    advOrderGridClickCell(Sender, X, Y); 
    end 
    else if (State = 1) and (setRefusedbtn = Sender) then 
    begin 
    ProductName := advOrderGrid.SelectedText; 
    qryExec.Sql.Text := 'Update KitchenOrderRow Set StatusID = 1' + 
     ' where productName = ''' + ProductName + ''' and StatusID = ' + 
     IntToStr(qryStatusStatusID.asInteger) + ''; 
    State := 0; 
    // fk_lib.logisse(nil, qryExec.Sql.Text); 
    end; 

    qryExec.ExecSQL; 
    advOrderGrid.RemoveSelectedRows; 
end; 
+1

«Для моего stringgrid я выбираю записи из базы данных». Обновляете ли данные после обновления? –

+0

Нет, как я могу это сделать? –

ответ

0

Если вы обновляете некоторые значения в наборе данных, которые используются в DBGrid, вы должны обновить набор данных, подключенный к DbCrid. Закрыть/Открыть форму. После выполнения запроса обновления выполните следующие действия:

Grid.Datasorce.DataSet.Refresh; 

или

Grid.Datasorce.DataSet.Close; 
Grid.Datasorce.DataSet.Open; 

Update:

Если сетка не подключен напрямую с базой данных через datalink(datasource) вы можете обновить его, как выполнить ту же самую процедуру который используется для заполнения сетки данными.

+0

Но я использую advstringgrid и adoquery, я добавил 'advOrderGrid.Refresh;' но ничего не меняется. –

+0

Если вы используете adoquery для получения значений для stringgrid, выполните 'AdoQuery.Refresh' или 'AdoQuery.Close; AdoQuery.Open ' –

+0

@JuuriPeeter или просто повторите процедуру для получения данных в stringgrid после выполнения запроса на обновление –

Смежные вопросы