Добрый день!
Кодер из меня ещё тот!
Помогите понять что - где не так.
есть TableGrid сформированная SQL-запросом - FrmOne.TG_PayRoll
из TableGrid данные из определённых ячеек записываем в отдельную таблицу.
кому интересно, выглядит это так:
// Передача в оплату!
procedure FrmOne_TG_PayRoll_OnDoubleClick (Sender: TObject; ACol, ARow: Integer; Value: String; var Accept: Boolean);
var i: integer;
Fam, Nam, First, pay, recip, Mo, BIK, RS, app, sql: string;
begin
Mo := (copy(FrmOne.DTP_PayRoll_Year.sqlDate, 2, 7));
i := FrmOne.TG_PayRoll.SelectedRow;
Fam := FrmOne.TG_PayRoll.Cell[1,i].AsString ;
Nam := FrmOne.TG_PayRoll.Cell[2,i].AsString ;
First := FrmOne.TG_PayRoll.Cell[3,i].AsString ;
Pay := FrmOne.TG_PayRoll.Cell[16,i].AsString ;
recip := FrmOne.TG_PayRoll.Cell[17,i].AsString ;
BIK := FrmOne.TG_PayRoll.Cell[18,i].AsString ;
RS := FrmOne.TG_PayRoll.Cell[19,i].AsString ;
app := FrmOne.TG_PayRoll.Cell[20,i].AsString ;
if IDYES = MessageBox('Передать в оплату?'+#13#13+(Fam)+(' ')+(Nam)+(' ')+(First)+#13#13+('за')+(' ')+(Mo)+#13#13+('начислено')+(' ')+(pay)+#13#13+('получатель')+(' ')+(recip)+#13#13+('БИК')+(' ')+(BIK)+#13#13+('Счет №')+(' ')+(RS)+#13#13+('Назначение')+(' ')+(app), 'Передача в оплату', MB_YESNO+MB_ICONQUESTION)
then
begin SQLExecute('INSERT INTO TblPayRoll (Famaly, LastName, FirstName, Transfer, Mounth, RecipientPay, BIK, RS, appointment) VALUES("'+Fam+'", "'+Nam+'", "'+First+'", "'+Pay+'", "'+Mo+'", "'+recip+'", "'+BIK+'", "'+RS+'", "'+app+'")')
end
else if IDNO
then
begin
ShowMessage('Вы отменили действие');
end
end;
Хотелось бы строки данные из которых были записаны в таблицу выделить цветом, для этого был написан следующий код:
procedure FrmOne_BtSavePay_OnClick (Sender: TObject; var Cancel: boolean);
var s, i: integer;
Mo, sql: string;
begin
// Присваиваем переменной начальное значение
// i := 0;
// переменная для сравнения выбранной даты с db
Mo:= (copy(FrmOne.DTP_PayRoll_Year.sqlDate, 2, 7));
// цикл - пройти все строки начиная с первой (0)
for i := 0 to FrmOne.TG_PayRoll.RowCount-1 do
// если в db PruffPayment = 1 (да/нет = 1/0)
if SQLExecute('SELECT PruffPayment FROM TblPayRoll WHERE PruffPayment = 1')
// и совпадает месяц
and (Mo = SQLExecute('SELECT Mounth FROM TblPayRoll WHERE Mounth = "'+Mo+'"'))
// и совпадает фамилия
and (FrmOne.TG_PayRoll.Cell[1,i].AsString = SQLExecute('SELECT Famaly FROM TblPayRoll WHERE Famaly = "'+FrmOne.TG_PayRoll.Cell[1,i].AsString+'"'))
// и совпадает имя
and (FrmOne.TG_PayRoll.Cell[2,i].AsString = SQLExecute('SELECT LastName FROM TblPayRoll WHERE LastName = "'+FrmOne.TG_PayRoll.Cell[2,i].AsString+'"'))
// и совпадает отчество
and (FrmOne.TG_PayRoll.Cell[3,i].AsString = SQLExecute('SELECT FirstName FROM TblPayRoll WHERE FirstName = "'+FrmOne.TG_PayRoll.Cell[3,i].AsString+'"'))
// и совпадает сумма
and (FrmOne.TG_PayRoll.Cell[16,i].AsString = SQLExecute('SELECT Transfer FROM TblPayRoll WHERE Transfer = "'+FrmOne.TG_PayRoll.Cell[16,i].AsString+'"'))
then
begin
//ShowMessage('Есть совпадение');
// окрасить всю строку
for s := 0 to FrmOne.TG_PayRoll.Columns.Count-1
do frmOne.TG_PayRoll.Cell[s,i].Color := $00ff82d7;
end
Загвоздка в том что при наличии одного совпадения в таблице отвечающему
SQLExecute('SELECT PruffPayment FROM TblPayRoll WHERE PruffPayment = 1')
в TableGrid окрашиваются и те у которых PruffPayment = 0....
и обратная ситуация при
SQLExecute('SELECT PruffPayment FROM TblPayRoll WHERE PruffPayment = 0')
не окрашивается ни одной строки