Re: Отображение данных из поля таблицы в форме My Visual DB

DriveSoft wrote:

annihillator
Должно работать. Приложите ваш проект, протестирую.

Re: Отображение данных из поля таблицы в форме My Visual DB

К сожалению проект не приложен, возможно слишком большой размер. Создайте ZIP архив без exe и dll файлов.

Dmitry.

Re: Отображение данных из поля таблицы в форме My Visual DB

DriveSoft wrote:

К сожалению проект не приложен, возможно слишком большой размер. Создайте ZIP архив без exe и dll файлов.


Вот ссылка:

https://www.dropbox.com/s/za7zezqr86z4xwa/DBa.zip?dl=0

29 (edited by sibprogsistem 2018-12-14 04:04:51)

Re: Отображение данных из поля таблицы в форме My Visual DB

готово
1. для onShow не нужно было капировать условия чекбокса.. В с войствах установил начальные значения
2. В свойствах групбокса (Жидкость и смазка) было Enbled=False, это и создавало ошибку..

Post's attachments

Attachment icon DBa.rar 7.49 kb, 297 downloads since 2018-12-14 

Re: Отображение данных из поля таблицы в форме My Visual DB

sibprogsistem wrote:

готово
1. для onShow не нужно было капировать условия чекбокса.. В с войствах установил начальные значения
2. В свойствах групбокса (Жидкость и смазка) было Enbled=False, это и создавало ошибку..

Архив поврежден или имеет неизвестный формат

Re: Отображение данных из поля таблицы в форме My Visual DB

annihillator wrote:

Архив поврежден или имеет неизвестный формат

наверное у вас другой архиватор
вот архив в 7zip

Post's attachments

Attachment icon DBa.7z 6.82 kb, 307 downloads since 2018-12-14 

Re: Отображение данных из поля таблицы в форме My Visual DB

Добрый день. Хочу сделать форму в которой будет CheckBox и TableGrid при выборе значения в CheckBox в TableGrid отображаются выборочные данные. Как это реализовать?

Re: Отображение данных из поля таблицы в форме My Visual DB

annihillator wrote:

Добрый день. Хочу сделать форму в которой будет CheckBox и TableGrid при выборе значения в CheckBox в TableGrid отображаются выборочные данные. Как это реализовать?


Приветствую.


Если я правильно понял вопрос, то так

procedure Form1_CheckBox1_OnClick (Sender: TObject);
begin
    If Form1.CheckBox1.Checked then Form1.TableGrid1.dbUpdate else Form1.TableGrid1.ClearRows;
end;

при этом компонент TableGrid1 должен быть настроен, также должна быть установлена настройка "Показать дочерние записи", чтобы компонент автоматически не показал данные при показе формы самостоятельно.

Dmitry.

Re: Отображение данных из поля таблицы в форме My Visual DB

Ошибся. Не Checkbox, а Combobox. Прошу прощения.

Re: Отображение данных из поля таблицы в форме My Visual DB

В принципе это стандартный функционал, реализуется без скриптов, просто настройте кнопку с действием Поиск, в первый список добавьте данный ComboBox. В свойстве Increm.Search данного комбобокса выберите кнопку, которую ранее настроили с действием Поиск и готово, таким образом данная кнопка будет автоматически нажиматься при изменении в ComboBox. Саму кнопку можете скрыть, установив ее свойство Visible = False

Dmitry.

Re: Отображение данных из поля таблицы в форме My Visual DB

DriveSoft wrote:

В принципе это стандартный функционал, реализуется без скриптов, просто настройте кнопку с действием Поиск, в первый список добавьте данный ComboBox. В свойстве Increm.Search данного комбобокса выберите кнопку, которую ранее настроили с действием Поиск и готово, таким образом данная кнопка будет автоматически нажиматься при изменении в ComboBox. Саму кнопку можете скрыть, установив ее свойство Visible = False

Огромное спасибо,  все заработало.

Re: Отображение данных из поля таблицы в форме My Visual DB

Дмитрий, хотел вас попросить объяснить мне один момент.

В приложенном проекте, в форме frmCardAuto, при запуске проекта, если я добавляю новое авто, а затем перехожу на вкладку "Сведения о владельце", информация из TextBox и CheckBox несанкционированно сохраняется в таблице. А после того, как я добавил сведения о владельце программа не сохраняет данные, так как видит дубликат. В чем здесь дело???

Вот ссылка на проект

https://www.dropbox.com/sh/xlwmsnoqrqi5 … g2PSa?dl=0

Re: Отображение данных из поля таблицы в форме My Visual DB

Пожалуйста опишите поподробней, на форме frmCardAuto нет вкладки "Сведения о владельце", есть "Информация о владельцах"
Также я не вижу на форме CheckBox, речь о какой то другой форме?

Dmitry.

Re: Отображение данных из поля таблицы в форме My Visual DB

DriveSoft wrote:

Пожалуйста опишите поподробней, на форме frmCardAuto нет вкладки "Сведения о владельце", есть "Информация о владельцах"
Также я не вижу на форме CheckBox, речь о какой то другой форме?

В общих чертах так:

Я через Form1 хочу добавить новый автомобиль: Нажимаю кнопку "Новое авто".
Открывается форма "frmCardAuto", я заполняю поля в графах "Общая информация". Не нажимая кнопку "Ок" внизу формы, хочу добавить информацию о влдельце автомобиля, для чего выбираю вкладку "Информация о владельцах" и нажимаю кнопку "Добавить". При вызове фомы "frmOwners" я вижу как информация из раздела "Общая информация" сохраняется в БД. Я добавляю владельца нажимаю "Ок". И теперь при нажатии "Ок" система сообщает мне о наличии дубликата в БД. Т.Е. произошло сохранение в БД данных из формы, вне зависимости от моего желания сохранить инфо. Видимо это связано с тем что для ввода данных о владельце в таблицу добавляется id автомобиля.

Как то так.

Re: Отображение данных из поля таблицы в форме My Visual DB

Попробуйте данную функцию для проверки дубликата

function CheckDublicate (Action, sTable, sField, sValue: string; id: integer;): boolean; // процедура проверки на дубликаты
var
   s: string;
   sIdSQL: string;

   arrFields: array of string;
   arrValues: array of string;

   sWhere: string;
   i,c: integer;
begin
    result := False;
    arrFields := SplitString(sField, ';');
    arrValues := SplitString(sValue, ';');
    if Length(arrFields) <> Length(arrFields) then exit;

    sWhere := '';
    c := Length(arrFields)-1;
    for i := 0 to c do
    begin
        if arrValues[i] <> 'NULL' then
            sWhere := sWhere + arrFields[i]+' LIKE ' + arrValues[i] + ' AND '
        else sWhere := sWhere + arrFields[i]+' IS NULL AND '
    end;

    if sWhere<>'' then SetLength(sWhere, Length(sWhere)-4);

    //if Action = 'NewRecord' then
    if id = -1 then
    begin
          s := SQLExecute ('SELECT Count(*) FROM '+sTable+' WHERE '+sWhere);
          if StrToInt(s) > 0 then result := True;
    end;

    //if Action = 'ShowRecord' then
    if id > 0 then
    begin
          if id <> -1 then sIdSQL := ' AND (id <> '+ IntToStr(id) +')';
          s := SQLExecute ('SELECT Count(*) FROM '+sTable+' WHERE ('+ sWhere +') ' + sIdSQL);
          if StrToInt(s) > 0 then result := True;
    end;
end;

разница лишь в этих строка

    //if Action = 'NewRecord' then
    if id = -1 then


    //if Action = 'ShowRecord' then
    if id > 0 then
Dmitry.

Re: Отображение данных из поля таблицы в форме My Visual DB

Еще вопрос. Подскажите пожалуйста что добавить в скрипт на проверку дубликатов, чтобы он не считал за дубликаты пустые ячейки?

Re: Отображение данных из поля таблицы в форме My Visual DB

попробуйте так

function CheckDublicate (Action, sTable, sField, sValue: string; id: integer;): boolean; // процедура проверки на дубликаты
var
   s: string;
   sIdSQL: string;

   arrFields: array of string;
   arrValues: array of string;

   sWhere: string;
   i,c: integer;
begin
    result := False;
    arrFields := SplitString(sField, ';');
    arrValues := SplitString(sValue, ';');
    if Length(arrFields) <> Length(arrFields) then exit;

    sWhere := '';
    c := Length(arrFields)-1;
    for i := 0 to c do
    begin
        if arrValues[i] = 'NULL' then continue;
        sWhere := sWhere + arrFields[i]+' LIKE ' + arrValues[i] + ' AND '

        //if arrValues[i] <> 'NULL' then
        //    sWhere := sWhere + arrFields[i]+' LIKE ' + arrValues[i] + ' AND '
        //else sWhere := sWhere + arrFields[i]+' IS NULL AND '
    end;

    if sWhere<>'' then SetLength(sWhere, Length(sWhere)-4) else exit;

    //if Action = 'NewRecord' then
    if id = -1 then
    begin
          s := SQLExecute ('SELECT Count(*) FROM '+sTable+' WHERE '+sWhere);
          if StrToInt(s) > 0 then result := True;
    end;

    //if Action = 'ShowRecord' then
    if id > 0 then
    begin
          if id <> -1 then sIdSQL := ' AND (id <> '+ IntToStr(id) +')';
          s := SQLExecute ('SELECT Count(*) FROM '+sTable+' WHERE ('+ sWhere +') ' + sIdSQL);
          if StrToInt(s) > 0 then result := True;
    end;
end;
Dmitry.