26

(6 replies, posted in Russian)

DriveSoft wrote:

В приложенной вами проекте нет файла forms.xml, поэтому его никак не открыть.

Извините, перезалил

27

(7 replies, posted in Russian)

привет, попробуйте реализовать через скрипт.

SqlExecute('SELECT SUM(поле в талице  которое нужно суммировать) FROM имя_таблицы WHERE id=' +1(2-3-4 ит.д)  );

28

(6 replies, posted in Russian)

andrey.yugay wrote:

Дмитрий, доброго времени,

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

программа приаттачена:
код в части: procedure form1_TableGrid1_OnCellClick (Sender: TObject; ACol, ARow: Integer); 
...
            for rows :=1 to i do
            begin
                Form1.XML.Lines.Add('          <product>');
                Form1.XML.Lines.Add('            <ndsAmount>0</ndsAmount>');
                Form1.XML.Lines.Add('            <priceWithTax>'+ IntToStr(m) +'</priceWithTax>');
                m:=m+1;

            end;
...
еще загвоздка, что id материала могут идти не по порядку (т.е. пользователь, может что-то удалить)

29

(6 replies, posted in Russian)

Дмитрий, доброго времени,

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

Да, убрал 150%, поставил 100 масштаб. все получилось
Можно ли как то программно установить данный масштаб?

Дмитрий, доброго времени суток.
В приложении форма выглядит отлично, но при запуске самой программы есть разница в размере шрифта (вложение).
Неудобно каждый элемент подгонять.

Можете подсказать как решить данную проблему?

Заранее благодарю

win10 x64, пробовал и на 6,2 и b6.3

32

(36 replies, posted in Russian)

Дмитрий, доброго времени суток.
С новым годом.
подскажите пожалуйста как можно избежать ошибки во вложенном файле
с ув. Андрей

33

(5 replies, posted in Russian)

mcsimm wrote:

Pt.82, Дмитрий, спасибо! Ещё спасибо Baster.89 за эту тему На всякий случай приложу слегка переделанный проект, вдруг кому пригодится.
Дмитрий, ешё такой вопрос или пожелание, это уже ближе к теме Что реализовать в первую очередь?  - может стоит добавить в стандартные действия для кнопок вариант "Сохранить запись" (без закрытия формы). Возможен еще вариант, что после нажатия кнопки "Сохранить" поля формы очищаются - это может пригодиться при массовом внесении записей в БД. Для этого, в принципе, я и затевал эти SQL-запросы.

Доброго дня,
Без закрытия есть в настройках самой кнопки - Сохранить запись. Нужно убрать галочку - Закрывать форму.
Очищение полей я делаю так -  после нажатия сохранить, добавляю скрипт на нажатие кнопки новая запись. если кнопка не нужно, то можно все в скрипте прописать (какие поля очищать) на процедуру AfterClick

с Ув. Андрей

34

(36 replies, posted in Russian)

DriveSoft wrote:

andrey.yugay
в вашем скрипте я вижу синтаксическую ошибку, а именно отсутствует слово begin после заголовка процедуры.
Если это не поможет, приложите пожалуйста ваш проект.

Доброго. это я для сокращения текста убрал.
немного переделал, но результата 0.
проект во вложении + файл для загрузки

проблема еще в том, что в старой базе, где все работало, сейчас тоже не работает. не пойму, может что не так с обновлением?

с Ув. Андрей

35

(36 replies, posted in Russian)

Дмитрий. доброго времени!
приобрели программу.
подскажите пожалуйста, что не так?:

procedure fMain_Button1_OnClick (Sender: string; var Cancel: boolean);
         
            //1// № вагона
            if arrStr[1] = '' then arrStr[1] := 'NULL';
           
            //2// Станция дислокации
            if arrStr[2] = '' then arrStr[2] := 'NULL';
           
            //3// индекс поезда
            if arrStr[3] = '' then arrStr[3] := 'NULL';
           
            //4// дата дислокации // приводим дату к формату, который необходим для записи в БД
            if arrStr[4]<>'' then // если данные есть
            sDate1 := '"'+ FormatDateTime('yyyy-MM-DD 00:00:00.000', StrToDate(arrStr[4])) + '"'
            else sDate1 := 'NULL'; // иначе значение NULL
           
            //5// операция
            if arrStr[5] = '' then arrStr[5] := 'NULL';
           
            //6// Станция назначения
            if arrStr[6] = '' then arrStr[6] := 'NULL';
           
            //7// код грузополучателя
            if arrStr[7] <> '' then arrStr[7] := ''''+ ReplaceStr(arrStr[7], '''', '''''') + ''''
            else arrStr[7] := 'NULL';

            //8// наименование грузополучателя
            if arrStr[8] <> '' then arrStr[8] := ''''+ ReplaceStr(arrStr[8], '''', '''''') + ''''
            else arrStr[8] := 'NULL';

            //9// станция отправления
            if arrStr[9] = '' then arrStr[9] := 'NULL';
           
            //10// дата отправления // приводим дату к формату, который необходим для записи в БД
            if arrStr[10]<>'' then // если данные есть
            sDate2 := '"'+ FormatDateTime('yyyy-MM-DD 00:00:00.000', StrToDate(arrStr[10])) + '"'
            else sDate2 := 'NULL'; // иначе значение NULL

            //11// груз
            if arrStr[11] = '' then arrStr[11] := 'NULL';
           
            //12// собственник
            if arrStr[12] = '' then arrStr[12] := 'NULL';
           
            //13// род
            if arrStr[13] <> '' then arrStr[13] := ''''+ ReplaceStr(arrStr[13], '''', '''''') + ''''
            else arrStr[13] := 'NULL';
           
            //14// № накладной
            if arrStr[14] = '' then arrStr[14] := 'NULL';
           
            //15// состояние
            if arrStr[15] = '' then arrStr[15] := 'NULL';

            //16// парк
            if arrStr[16] = '' then arrStr[16] := 'NULL';
           
            //17// код неисправности
            arrStr[17] := ReplaceStr(arrStr[17], ',', '.');
            if arrStr[17] = '' then arrStr[17] := 'NULL';
           
            //18// вес груза
            arrStr[18] := ReplaceStr(arrStr[18], ',', '.');
            if arrStr[18] = '' then arrStr[18] := 'NULL';
           
            //19// грузоподъемность вагона
            arrStr[19] := ReplaceStr(arrStr[19], ',', '.');
            if arrStr[19] = '' then arrStr[19] := 'NULL';

    // проверяем, для избежания дубликатов, данная проверка не обязательна, и зависит от вашей ситуации
    //sval := SQLExecute('SELECT id FROM currency WHERE (date = ' + sDate + ') AND (id_valute = ' +  ValuteID + ') AND (value = ' + arrStr[2] + ') ;');
    //if sval = '' then // если в переменной sval - пусто, значит SQL запрос ничего не вернул, и дубликата данных нет
   
    // с помощью SQL запрос вставляем данные в БД
    SQLExecute ('INSERT INTO t_data (num_wag, st_dislok, index_poezda, d_dislok, oper, st_naznach, code_poluchatelya, name_poluchatelya, st-otprav, d_otpravleniya, gruz, sobstven, rod, naklad, sostoyanie, park, neispr_code, ves, gruzopod) VALUES ('+ arrStr[1] +', '+ arrStr[2] +', '+ arrStr[3] +', '+ sDate1 +', '+ arrStr[5] +', '+ arrStr[6] +', '+ arrStr[7] +', '+ arrStr[8] +', '+ arrStr[9] +', '+ sDate2 +', '+ arrStr[11] +', '+ arrStr[12] +', '+ arrStr[13] +', '+ arrStr[14] +', '+ arrStr[15] +', '+ arrStr[16] +', '+ arrStr[17] +', '+ arrStr[18] +', '+ arrStr[19] +');');
   
    // выводим в компонент надписи, какое количество строк с данными обработано
    fMain.Label1.Caption := 'Загружено строк ' + IntToStr(i) + ' из ' + IntToStr(c);
   
    // необходимо, чтобы надпись в Label один обновилась
    Application.ProcessMessages;
     end;
          sl.Free; // уничтожаем объект, после работы с ним
          fMain.TableGrid1.dbUpdate; // заставляем TableGrid обновить данные
     end;
     OpenDialog.Free; // уничтожаем объект, после работы с ним
end;

Данные не грузятся, вообще ничего не происходит - кроме обновления таблицы(

с Ув. Андрей

36

(36 replies, posted in Russian)

Дмитри,
Спасибо огромное, все помогло

с Ув. Андрей

37

(36 replies, posted in Russian)

DriveSoft wrote:

andrey.yugay
рассмотрите возможность логгирования данных более простым и универсальным способом:
http://myvisualdatabase.com/forum/viewtopic.php?id=3642

Дмитри, доброго времени суток,
сделал с этого проекта...
загвоздка вот в чем

есть связи с таблицами, как мне их прописать в коде?
пример

'BEGIN '+
    '    INSERT INTO logs(w_date, plant, operation, username, id_rec, date, agent, st, stcode)  VALUES (datetime(''now'', ''localtime''), ''SHC'', ''DELETE RECORD'', '+sUserName+', NEW.id, NEW.shc_data, NEW.shc_agent, NEW.id_st, NEW.id_st)

NEW.id_st ссылается на другую таблицу... если я оставляю так, то в логах появится только номер записи... как мне предопределить, что там на основании ID выберется другое значение, к примеру, stname (наименование станции)


еще один вопрос... не пойму где причина. есть комбобокс (связи настроены) все нормально. лишнего кода нет. на кнопку сохранить настроенно действие, что бы комбобокс4 участвовал в сохранении записи, но при нажатии сохранить, не добавляет запись.. в чем может быть проблема?

код только такой
procedure frmContracts_ComboBox4_OnChange (Sender: string; Action: string);
begin
    if   frmContracts.ComboBox4.text ='' then
         frmContracts.Edit14.text := ''
    else frmContracts.Edit14.text := SQLExecute('SELECT stname FROM st WHERE stCode = '+frmContracts.ComboBox4.text );
end;

прошу помочь

с Ув. Андрей

38

(36 replies, posted in Russian)

Дмитрий, доброго времени суток,
подскажите пожалуйста в чем может быть проблема
     if sLastActionForm = 'NewRecord' then sOperation := 'Новая запись';
     if sLastActionForm = 'ShowRecord' then sOperation := 'Изменение записи';

операция не заносится в логи.
как буд-то не определяет, что пользователь делал

с Ув. Андрей

*полный код; все данные нормально сохраняются

procedure frmContracts_Button1_OnAfterClick (Sender: string);
begin
  frmcontracts.DateTimePicker1.Checked := False;
  frmContracts.ComboBox6.Text := frmContracts.Edit1.Text;

     sCurrentDate := '"' + FormatDateTime('yyyy-MM-DD hh:nn:ss', now) + '"';
     sID := IntToStr(frmContracts.Button1.dbGeneralTableID);
     sDate := '"' + FormatDateTime('yyyy-MM-DD hh:nn:ss', frmContracts.DateTimePicker1.Date) + '"';
     sAgent := '"'+frmContracts.Edit1.Text+'"';
     sST := '"'+frmContracts.Edit14.Text+'"';
     sCodeST := '"'+frmContracts.ComboBox4.Text+'"';
     sCemType := '"'+frmContracts.ComboBox1.Text+'"';
     sPack := '"'+frmContracts.ComboBox2.Text+'"';
     sTonn := '"'+frmContracts.Edit4.sqlValue+'"';
     sCost := '"'+frmContracts.Edit5.sqlValue+'"';
     sTotal := '"'+frmContracts.Edit6.sqlValue+'"';
     sContract := '"'+frmContracts.Edit7.Text+'"';
     sF1 := '"'+frmContracts.Edit8.sqlValue+'"';
     sF2 := '"'+frmContracts.Edit9.sqlValue+'"';
     sF3 := '"'+frmContracts.Edit10.sqlValue+'"';
     sF4 := '"'+frmContracts.Edit11.sqlValue+'"';
     if sSAP = 'NULL' then sSap := '' else sSap := '"'+frmContracts.Edit13.Text+'"';
     sBroker := '"'+frmContracts.Edit12.Text+'"';
     sAddit := '"'+frmContracts.Edit3.Text+'"';
     if frmContracts.CheckBox1.sqlValue = '1' then sAnn := 'Да' else sAnn := 'Нет';

     if sLastActionForm = 'NewRecord' then sOperation := 'Новая запись';
     if sLastActionForm = 'ShowRecord' then sOperation := 'Изменение записи';

     SQLExecute ('INSERT INTO logs (w_date, plant, operation, username, id_rec, date, agent, st, stcode, cemtype, pack, tonn, cost, total, contract, f1, f2, f3, f4, sap, broker, addit, ann)' +
     'VALUES ('+ sCurrentDate +' , "ШЦ", "'+ sOperation +'", '+ sUserName +', '+ sID +','+ sDate +', '+ sAgent +', '+ sST +', '+ sCodeST +', '+ sCemType +', '+ sPack +', '+ sTonn +', '+ sCost +', '+ sTotal +', '+ sContract +', '+ sF1 +', '+ sF2 +', '+ sF3 +', '+ sF4 +', '+ sSAP +', '+ sBroker +', '+ sAddit +', "'+ sAnn +'")');


     frmLog.Logs.dbUpdate;
end;

39

(36 replies, posted in Russian)

DriveSoft wrote:

andrey.yugay

Дмитрий, доброго,
да, это то, что нужно.

1) есть какая нибудь реализация по автозавершению слов именно в тектовом поле?
Пример по огранизации, польз-ль начинает вводить и ему предлагаю варианты.... По комбобокс не подходит, т.к. там будут вводить новые организации
2) В форме редактирования скриптов пропали +.... данных много, раньше все сваричивалось, сейчас приходится искать по тексту.
3) Еще вопрос, как с вами связаться на счет покупки?

с УВ. Андрей.


1. Автозаврешение слов есть только в ComboBox, для этого установите его свойство Style = csDropDown
Затем поместите на форму компонент Edit, а для компонента ComboBox создайте событие

procedure Form2_ComboBox1_OnChange (Sender: string);
begin
    Form2.Edit1.Text :=  Form2.ComboBox1.Text;
end;

procedure Form2_OnShow (Sender: string; Action: string);
begin
    Form2.ComboBox1.Text := Form2.Edit1.Text;
end;

таким образом информация из CombBox будет дублироваться в Edit, компонент Edit сделайте невидимым, но данные в базу данных сохраняйте именно с компонента Edit

проект с примером приложил к сообщению


2. Нажмите правой кнопкой мыши в окне скриптов и поставьте галочку "Code folding"


3. support@drive-software.com
страница покупки
http://myvisualdatabase.com/purchase_ru.html

Дмитрий, доброго.
Да, получилось. но немного доработал, спасибо огромное.

в принципе этот проект содержит в себе многие функции, которые есть на сайте - авторизация, формулы, sql запросы, (отчеты тут не нужны, есть отчетная ввкладка), связи, иморт, выгрузка в excel, если вдруг кому будет нужен , могу скинуть.

в планах внедрить бэкап, т.к. информации много, и нужно будет "на всякий случай"
пока не дошел до этого... польз-и тестируют. как дадут добро можно под шумок внедрить

на счет закупок, выслал нашим специалистам

с Ув. Андрей

40

(36 replies, posted in Russian)

DriveSoft wrote:
andrey.yugay wrote:

Дмитрий, доброго времени суток.
Подскажите как можно реализовать.

на форме есть две кнопки - показать запись.
1) показывает на текущей форме
2) открывает новую форму для редактирования.

как можно сделать, что бы под одним пользователем работала 1 кнопка, а 2 под другими?
при открытии основной формы, есть разграничение прав, но если поставить запрет на все кнопки в режиме чтения, все равно срабатывает 2 и открывает форму.
может есть вариант, настроить Action на кнопку? т.е. прописать при определении прав.
пример ( за корректность не ручаюсь, т.к. опыта не было)

frmContracts.Button1Edit1. * Action = "None";
frmContracts.Button2Edit2. * Action = "None";

Заранее благодарю за вашу помощь.
Программу как и обещал будем брать, нужны будут ваши контакты, что бы отдел закупок связался с вами

с Ув. Андрей

Здравствуйте.


Так можно удалить действие для кнопки

Form1.Button1.dbActionType := adbNone;  

Дмитрий, доброго,
да, это то, что нужно.

1) есть какая нибудь реализация по автозавершению слов именно в тектовом поле?
Пример по огранизации, польз-ль начинает вводить и ему предлагаю варианты.... По комбобокс не подходит, т.к. там будут вводить новые организации
2) В форме редактирования скриптов пропали +.... данных много, раньше все сваричивалось, сейчас приходится искать по тексту.
3) Еще вопрос, как с вами связаться на счет покупки?

с УВ. Андрей.

41

(36 replies, posted in Russian)

delphinsl wrote:

При выполнении данного SQL запроса, появляется вот такая ошибка. Началось с версии 3.3

select
SoispDog.num_dog,
strftime('%d.%m.%Y',SoispDog.date_dog),
soispdog.shifr_dog,
SoispDog.name_dog,
vedisp.numstage,                       
vedisp.namestage,
vedisp.ONTD,
strftime('%d.%m.%Y',vedisp.startstage),
strftime('%d.%m.%Y',vedisp.endstage)as dateend,
vedisp.trud,
vedisp.cashstage,
vedisp.NDS,
vedisp.vidcash,
Glisp.nameGi,
Soisp.nameisp,
vedisp.Zakl_OC,
vedisp.Zakl_TFC,
vedisp.udost,
(case when vedisp.otmstage=1 then 'да' else 'нет' end),
soispdog.id,               
soispdog.id_GLisp,
soispdog.id_soisp

from vedisp, soispdog, Glisp, soisp

where vedisp.id_soispdog=soispdog.id and soispdog.id_soisp=soisp.id and soispdog.id_Glisp=GLisp.id
and strftime('%m.%Y',vedisp.endstage)= strftime('%m.%Y',{DateTimePicker1}) and vedisp.otmstage='0'
order by dateend


может в моем коде что то вам поможет

select
id,
strftime('%d.%m.%Y',shc_data) as shc_data, 
shc_agent,
(SELECT IFNULL(st.stname, '') FROM st WHERE st.id=id_st),
(SELECT IFNULL(st.stcode,'') FROM st WHERE st.id=id_st), 
(SELECT cemtype.cemtypeName FROM cemtype WHERE cemtype.id=id_cemtype),
(SELECT pack.pacName FROM pack WHERE pack.id=id_pack),
shc_tonn,
shc_cost,
shc_total,
shc_contact,
shc_fact1,
shc_fact2,
shc_fact3,
shc_fact4,
shc_sap,             
shc_broker,
shc_add,
(case when shc_an = 1 then 'Да' else 'Нет' end)
                           
from shc_data   
WHERE ( Date(shc_data) >= Date({A1}) )  AND  ( Date(shc_data) <= Date({A2}) ) 

UNION ALL

select
id,
strftime('%d.%m.%Y',kaspi_data) as kaspi_data, 
kaspi_agent,
(SELECT IFNULL(st.stname, '') FROM st WHERE st.id=id_st),
(SELECT IFNULL(st.stcode,'') FROM st WHERE st.id=id_st), 
(SELECT cemtype_kaspi.cemtypeName_kapsi FROM cemtype_kaspi WHERE cemtype_kaspi.id=id_cemtype_kaspi),
(SELECT pack.pacName FROM pack WHERE pack.id=id_pack),
kaspi_tonn,
kaspi_cost,
kaspi_total,
kaspi_contract,
kaspi_fact1,
kaspi_fact2,
kaspi_fact3,
kaspi_fact4,
kaspi_sap,             
kaspi_broker,
kaspi_add,
(case when kaspi_an = 1 then 'Да' else 'Нет' end)
                         
from kaspi_data 
WHERE ( Date(kaspi_data) >= Date({A1}) )  AND  ( Date(kaspi_data) <= Date({A2}) )

UNION ALL

select
id,
strftime('%d.%m.%Y',bcc_data) as bcc_data, 
bcc_agent,
(SELECT IFNULL(st.stname, '') FROM st WHERE st.id=id_st),
(SELECT IFNULL(st.stcode,'') FROM st WHERE st.id=id_st), 
(SELECT cemtypebcc.cemtypeName_bcc FROM cemtypebcc WHERE cemtypebcc.id=id_cemtypebcc),
(SELECT pack.pacName FROM pack WHERE pack.id=id_pack),
bcc_tonn,
bcc_cost,
bcc_total,
bcc_contract,
bcc_fact1,
bcc_fact2,
bcc_fact3,
bcc_fact4,
bcc_sap,             
bcc_broker,
bcc_add,
(case when bcc_an = 1 then 'Да' else 'Нет' end)
                           
from bcc_data
WHERE ( Date(bcc_data) >= Date({A1}) )  AND  ( Date(bcc_data) <= Date({A2}) )

42

(36 replies, posted in Russian)

Дмитрий, доброго времени суток.
Подскажите как можно реализовать.

на форме есть две кнопки - показать запись.
1) показывает на текущей форме
2) открывает новую форму для редактирования.

как можно сделать, что бы под одним пользователем работала 1 кнопка, а 2 под другими?
при открытии основной формы, есть разграничение прав, но если поставить запрет на все кнопки в режиме чтения, все равно срабатывает 2 и открывает форму.
может есть вариант, настроить Action на кнопку? т.е. прописать при определении прав.
пример ( за корректность не ручаюсь, т.к. опыта не было)

frmContracts.Button1Edit1. * Action = "None";
frmContracts.Button2Edit2. * Action = "None";

Заранее благодарю за вашу помощь.
Программу как и обещал будем брать, нужны будут ваши контакты, что бы отдел закупок связался с вами

с Ув. Андрей

43

(36 replies, posted in Russian)

DriveSoft wrote:

andrey.yugay

 if    frmContracts.TableGrid1.Cells[7,1] = ' ' then frmContracts.TableGrid1.Cell[7,1].Color := clWhite

скорей всего в этой строке вместо 1 должно быть i

Дмитри. вы Бог!)
спасибо огромное, а то уже глаза в кучу

44

(36 replies, posted in Russian)

Дмитрий, извините, что беспокою в выходной день.
Столкнулся со странной ошибкой:

List index out of bounds (1) при следующих процедурах:
Подскажите пожалуйста, что делаю не так

//Закрашивание по условию
procedure frmContracts_TableGrid1_OnChange (Sender: string; Action: string);
    var
        i,c: integer;
    begin
        frmContracts.TableGrid1.BeginUpdate;
        c := frmContracts.TableGrid1.RowCount - 1;
        for i := 0 to c do
            begin
               if    frmContracts.TableGrid1.Cells[18,i] = 'Да' then frmContracts.TableGrid1.Cell[2,i].TextColor := clRed;
               if    frmContracts.TableGrid1.Cells[18,i] = 'Yes' then frmContracts.TableGrid1.Cell[2,i].TextColor := clRed;
               if    frmContracts.TableGrid1.Cells[14,i] = '' then frmContracts.TableGrid1.Cell[14,i].Color := clWhite
               else if    StrToFloat(frmContracts.TableGrid1.Cells[14,i]) = 0 then frmContracts.TableGrid1.Cell[14,i].Color := $008238
               else if    StrToFloat(frmContracts.TableGrid1.Cells[14,i]) = 0 then frmContracts.TableGrid1.Cell[14,i].Color := $008238
               else if    StrToFloat(frmContracts.TableGrid1.Cells[14,i]) < 0 then frmContracts.TableGrid1.Cell[14,i].Color := clRed;
               if    frmContracts.TableGrid1.Cells[7,1] = ' ' then frmContracts.TableGrid1.Cell[7,1].Color := clWhite
               else if    frmContracts.TableGrid1.Cell[7,i].AsFloat > frmContracts.TableGrid1.Cell[11,i].AsFloat then frmContracts.TableGrid1.Cell[11,i].Color := $008238
               else if    frmContracts.TableGrid1.Cell[7,i].AsFloat < frmContracts.TableGrid1.Cell[11,i].AsFloat then frmContracts.TableGrid1.Cell[11,i].Color := clRed;
            end;
       frmContracts.TableGrid1.EndUpdate;
            end;

Ошибка возникает при фильтрации... если строка только одна.

45

(36 replies, posted in Russian)

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

46

(36 replies, posted in Russian)

можно так
procedure frmContracts_TableGrid1_OnChange (Sender: string);
begin
    frmContracts.TableGrid1.Columns[3].Visible := not frmContracts.CheckBox1.Checked;
    frmContracts.TableGrid1.Columns[4].Visible := not frmContracts.CheckBox1.Checked;
    frmContracts.TableGrid1.Columns[5].Visible := not frmContracts.CheckBox1.Checked;
    frmContracts.TableGrid1.Columns[6].Visible := not frmContracts.CheckBox1.Checked;
...

Доброго дня, Дмитрий,
это не совсем то. Оно скрывает колонки, а мне нужно фильтрация внутри таблицы по данным.
т.е.
Chekbox2.checked = true then
              Контрагент (Edit1) при вводе данных, сразу фильтровал в таблице (TableGrid1);
Checkbox2. cheked = false then
              Показать все записи;

Можете подсказать как это реализовать? И как можно будет реализовать по фильту по дате

с Ув. Андрей

47

(36 replies, posted in Russian)

Дмитрий, подскажите пожалуйста.
Есть два текстбокса Код станции и Наименование станции.
Есть отдельная таблица (№, Наименование станции, Код станции)
Можно ли реализовать поиск по вводу кода станции (в текстбоксе)? - результат наименование станции (в текстбокс)?

48

(36 replies, posted in Russian)

Дмитрий, спасибо огромное. Буду разбираться.

49

(36 replies, posted in Russian)

Сорри. frmContracts - TableGrid1, *2,*3...  соответсвенно в 3 вкладках.
Можете подсказать , что не так:
procedure frmContracts_TableGrid1_OnChange (Sender: string);
    var
        i,c: integer;
    begin
        frmContracts.TableGrid1.BeginUpdate;
        c := frmContracts.TableGrid1.RowCount - 1;
        for i := 0 to c do
    begin
       if (frmContracts.TableGrid1.Cells[7,i]) = (frmContracts.TableGrid1.Cells[11,i]) then frmContracts.TableGrid1.Cell[11,i].Color := clLime;
       if (frmContracts.TableGrid1.Cells[7,i]) < (frmContracts.TableGrid1.Cells[11,i]) then frmContracts.TableGrid1.Cell[11,i].Color := clYellow;
       if (frmContracts.TableGrid1.Cells[7,i]) > (frmContracts.TableGrid1.Cells[11,i]) then frmContracts.TableGrid1.Cell[11,i].Color := clRed;
    end;
        frmContracts.TableGrid1.EndUpdate;
end;

последнее условие не срабатывает.

с ув. Андрей

50

(36 replies, posted in Russian)

Всем доброго времени суток. Начал пользоваться программй недавно. Планируем приорести.
Вопрос вот в чем - возможно ли реализовать фильтрацию через чекбокс, т.е.:
- есть текстбокс(контрагент) = в нем набирается текст (фильтрация %s) установлена, что бы отображалось в будущем не по всему вхождению;
- есть датагрид (таблица собранная с данными)
- есть чекбокс (2 нажатия)

возможно ли реализовать след - Если пользователь вводит данные в текстбокс с включенным чекбоксом датагрид отображало имя контрагента. и если отключить чек бокс, то показывал бы все данные

если нужна будет программа, напишите.

писал для след нужд - сбыт отдел, заносит данные по заводам, где что продали, сколько вогонов отправили и.т.д. + инфомацию по контрагентам. так же реализовано авторизация по пользователям. настройка польз-й.