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

77

(11 replies, posted in Russian)

delphinsl wrote:

Дмитрий подскажите пожалуйста, каким образом данные из объектов формы можно передать в отчет?

В правой части окна дизайнера отчетов найдите вкладку "Variables", где вы сможете найти переменные, содержащие данные из компонентов, который были внесены в первый список в настройках кнопки с действием "Отчет". Эти переменные вы можете разместите на форме отчета как обыкновенные поля.

наверное у вас в поиске учавствует этот TableGrid. проверьте кнопку поиск

нашел эту тему версия MVDB 4.04
подскажите как сделать чтобы менялся курсор, или чтобы пользователю понятно было что идет поиск, тот скрипт, который выше не работает. база порядка 300 тыс записей при запросе идет отбор (примерно 5-10 сек) в котором учавствуют датапикеры. так вот при нажатии на кнопкку датапикеры становятся белыми (какбуд-то очищаютя), а курсор при этом не меняется остается ввиде стрелочки crDefault (и пользователь пытается тыкать еще и еще, ему не понятно что уже запущен процесс), бывает очень редко курсор меняется на загрузку виндовс (крутится)

компоненты учавствующие в поискемогут быть кобмбобоксы, editы, датапиккеры и т.д., т.е. какие вы копмоненты укажите учавствуют в поиске по тем значение и будет отбор в отчет. например в поиске учавствуют едит (фио) и датапикер (дата рождения), в едите указываете "Иванов" в датапикере 01.01.2017, в отчет попадут все записи иванов дата рожд 01.01.2017.  если в поиске учавствует грид то выбранная запись в гриде попадет в отчет

Отлично! Спасибо!!!

Добрый день!
Подскажите кто-нибудь, есть ли возможность с помощью кнопки отчет передать значение DateTimePicker, расположенный на форме, в fastreport, или это возможно только через кнопку отчетSql и надо при этом обязательно прописывать весь запрос через select.
сейчас так, но при этом надо писать длинный select

SELECT
strftime('%d.%m.%Y', {DateTimePicker1}) as DateField,
'{Memo1}' as MemoField 

спасибо!

Так?

так из той версии, в которой работают юзеры этот .pas можно удалить, главное у себя оставить для дальнейшего редактирования

85

(33 replies, posted in Russian)

Добрый день! заметил если в Гриде font поменять цвет текста, то и весь грид становится этим же цветом, после этого приходится в Additional менять цвет. не помню было ли это в версиях 3.х

86

(12 replies, posted in FAQ)

Спасибо!!! хм оказалось все просто. Спасибо еще раз!

87

(12 replies, posted in FAQ)

На Form1 есть TableGrid1 при клике на который открывается форма frmBook на которой есть TableGrid1 и TableGrid2, так вот в них отображаюся все записи таблиц users и files, а должны только дочернии записи редактируеимой записи. Пароли на пользователях "1" на admin-admin

88

(12 replies, posted in FAQ)

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

89

(12 replies, posted in FAQ)

спасибо попробую!

90

(12 replies, posted in FAQ)

Добрый день!
хотел сделать так: вход будет по логин/пароль, user (он же автор) должен на гриде видеть только те книги, в которых он автор ну и открыть конечно же их, и отредактировать (добавить файл, или изменить категорию), админ же будет видеть все записи всех пользователей ну и конечно же редактировать тоже, для этого и надо чтоб в гриде отображался и пользователь и его книга.
вход по логин/пароль взят от сюда http://myvisualdatabase.com/forum/viewtopic.php?id=1633
достаточно чтобы автор видел только свои записи, но без отображение в гриде имени автора это не получается

91

(10 replies, posted in Russian)

так наверное

procedure lethal (Sender: string; var Cancel: boolean);
var
   i, c: integer;
begin
    c := Base.TableGrid1.RowCount - 1;
    for i := 0 to c do
    begin
       if Base.TableGrid1.Cells[1,i] >'0' then Base.TableGrid1.Cells[1,i] := clRed then    Base.TableGrid1.Cell[1,i].Color := clRed;
        end;
end;

92

(12 replies, posted in FAQ)

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

93

(5 replies, posted in Russian)

на действие SQL запрос используется select. в вашем случае надо использовать onclic для button

Упс, Дмитрий быстрей ответил

что значит прикрутить календарь?

наверное так

 select * from main where otvet  = (1) and data > ( '+FrmOth.DateTimePicker4.sqlDate+')

96

(13 replies, posted in Russian)

DriveSoft wrote:

pt.82
Для каждого ComboBox-а должна быть отдельная таблица БД, в вашем случае вы сохраняете все в таблице db_items ?
Либо я не понял задумку.

да хотел сохранять все в таблицу db_items, т.е. если выбрано в первом комбобоксе 2 записи а во втором 3, то в в db_items должно записаться 6 записей. как по аналогии если на форме 2 комбобокса (без mutiselect) то в таблицу запишится одна запись  в поля id_combobox1, id_combobox2 ну т.е id записей таблиц на которые настроены comboboxы и есть связ с записываемой базой.
или я не так понимаю данный скрипт?

97

(13 replies, posted in Russian)

Дмитрий, подскажите а как будет выглядеть скрипт если на форме 2,3 и т.д комбобокса с multiselect, которые необходимо сохранить. Нужно использовать вложеный цикл? набросал скрипт, но что то он не правильно отрабатывает

procedure frmEmployee_OnShow (Sender: string; Action: string);
var
    idEmp: string;
    idUsers, idFiles: integer;
    Results: TDataSet;
    i,c,d: integer;
begin
    isChanged := False;
    frmEmployee.ComboBox2.SetAllCheckBoxes(false);
    frmEmployee.ComboBox4.SetAllCheckBoxes(false);

    if Action='ShowRecord' then
    begin

        idEmp := IntToStr(frmEmployee.Button10.dbGeneralTableID);
        SQLQuery('SELECT id_Users FROM db_items WHERE id_db_main='+idEmp, Results);
        SQLQuery('SELECT id_db_files FROM db_items WHERE id_db_main='+idEmp, Results);
        while not Results.Eof do
          begin
            idFiles := Results.FieldByName('id_db_files').asInteger;
            d := frmEmployee.ComboBox4.Items.Count-1;
            for i := 1 to d do
            begin
                if frmEmployee.ComboBox4.dbIndexToID(i) = idUsers then
                  frmEmployee.ComboBox4.ItemsChecked[i] := True;
            end;
            Results.Next;
          end;


        while not Results.Eof do
          begin
            idUsers := Results.FieldByName('id_Users').asInteger;
            c := frmEmployee.ComboBox2.Items.Count-1;
            for i := 1 to c do
            begin
                if frmEmployee.ComboBox2.dbIndexToID(i) = idUsers then
                    frmEmployee.ComboBox2.ItemsChecked[i] := True;
            end;

            Results.Next;
          end;


          end;
        end;



procedure frmEmployee_Button10_OnAfterClick (Sender: string);
var
    i,c,d: integer;
    idEmp: string;
    idUsers: string;
    idFiles: string;

begin
    if isChanged then
            idEmp := IntToStr(frmEmployee.Button10.dbGeneralTableID);
            SQLExecute('DELETE FROM db_items WHERE id_db_main='+idEmp);


            c := frmEmployee.ComboBox2.Items.Count-1;
            d := frmEmployee.ComboBox4.Items.Count-1;
            for i := 1 to c do
          begin
            if frmEmployee.ComboBox2.ItemsChecked[i] then
            begin
             idUsers := IntToStr(frmEmployee.ComboBox2.dbIndexToID(i));
             for i := 1 to d do
              begin
              if frmEmployee.ComboBox4.ItemsChecked[i] then
              idFiles := IntToStr(frmEmployee.ComboBox4.dbIndexToID(i));
              SQLExecute('INSERT INTO db_items (id_db_main, id_db_files, id_Users) VALUES('+idEmp+','+idFiles+', '+idUsers+')');
              end ;

             end;

         end;

 end;

Добрый день! подскажите не появилось время реализовать
1)Возможно ли использую свойство multiselect компонента ComboBox сразу нескольким записям сохранить данные в компонентах, которые в данный момент находятся на форме в том числе и связи
2)есть ли проект, в котором выбрав запись в гриде сделать ее копию в том числе и связи и при этом открылась открылась форма новой запись с заполненными данными выделенной записи в грид.
ps
проект приложил он черновой много лишнего повыкидывал. для чего надо пришел документ в нем например 5 приложений. 1) создаем документ присоединяем файлы,  2) созданный документ надо раздать определенным пользователям и вот тут проблемка, можно конечно создать опять документ привязать файлы и прявязать пользователя (исполнителя), а хотелось бы создать документ один раз, затем его через комбобок используя multiselect привязать сразу многим пользователям, или создать документ затем при помощи кнопки копия создать такой же и в копиях менять только пользователей.
Спасибо!

по поиску от -до у компонента DateTimePicker есть свойство Filter где можно выбрать больше меньше и и кнопку поиск привязать к DateTimePicker

можно еще вопрос скрипт запускается но при выводе значений в гриде ошибка "" is not valid date and time

if ((Form1.GridEmployees.Cells[4,i] <> 'Выполнено') and ((StrToDateTime(Form1.GridEmployees.Cells[3,i]) <= Now) or (Form1.GridEmployees.Cells[3,i] = '' )))  then Form1.GridEmployees.Cell[3,i].Color := clRed;

опять же если использовать в or условия по отдельности то срабатывает
задача в чем состоит: если невыполнено и дата исполнения меньше сегодняшней или пусто то красным.
по отдельности раскрашивает