1

(24 replies, posted in Russian)

спасибо огромное! вот это то что надо. я благодарен!

2

(24 replies, posted in Russian)

Да спасибо. Помогло. Единственное что нельзя добавить проверку на дату? Если будет другое число то сохранение возможно! А то получается задействованы bolean и если дату меняешь при сохранении то не дает сохранить, так то запись уже не дубликат будет

3

(24 replies, posted in Russian)

Ну а хотя можно чтобы когда создается запись ( она изначально идет с bolean = NULL) - то больше одной записи не могли создать на одну и ту же дату ?  Или только состояние 0 или 1 можно учитывать?

4

(24 replies, posted in Russian)

Понял. Спасибо.

5

(24 replies, posted in Russian)

pavlenko.vladimir.v wrote:
senseyesenseye1983 wrote:

Я рано радовался... при проверки оказалось что он все таки дает сохранить то что нельзя.
Там еще один bolean взаимодействовует...
Надо я так понимаю склеивать три условия:
если RezervObr=0 то открывает Form2
если RezervObr = 0 и Obrabotka = 0 то открываем Form1
если не то не другое то сохраняем

А как Вы проверяете Rezerv, для каждой записи оно у Вас свое... То есть для новой записи оно еще не создано..

В базе у меня записаны уже эти значения:
fio                  dates              RezervObr            Obrabotka
MODEL     01.01.2022             0                               1        ----- Кнопка дает сохранить но только 1 раз так как даты будут совпадать
MODEL     01.01.2022             1                               1        ----- Кнопка не дает сохранить
MODEL      01.01.2022         NULL                       NULL  ------Кнопка не дает сохранить

Павел вот о чем я говорю как это реализовать? три условия ...

6

(24 replies, posted in Russian)

Я рано радовался... при проверки оказалось что он все таки дает сохранить то что нельзя.
Там еще один bolean взаимодействовует...
Надо я так понимаю склеивать три условия:
если RezervObr=0 то открывает Form2
если RezervObr = 0 и Obrabotka = 0 то открываем Form1
если не то не другое то сохраняем

7

(24 replies, posted in Russian)

Вот так вроде работает... спасибо smile
procedure Form1_Button4_OnClick (Sender: TObject; var Cancel: boolean);
var
  Dup_Id: String;
begin
    Dup_Id := SqlExecute('Select id From machines Where (model) = ' + (form1.Edit1.sqlValue) + ' '+
         'and (serialnumber) = ' + (form1.Edit2.sqlValue) + ' and Date(Dates) = date(' + form1.DateTimePicker1.sqlDateTime + ') '+
         'and RezervObr = 1 ');
         If Dup_Id <> '' then
         begin
           Showmessage('Есть такая запись нельзя сохранять');
           Cancel := true;
         end else
         begin
         Showmessage('Можно сохранять');
         Cancel := true;
         end;
end;

8

(24 replies, posted in Russian)

спасибо. большое
Я только не могу понять как склеить два цикла


procedure Form1_Button4_OnClick (Sender: TObject; var Cancel: boolean);
var
  Dup_Id: String;
  Dup_Id2: String;
begin
    Dup_Id := SqlExecute('Select id From machines Where (model) = ' + (form1.Edit1.sqlValue) + ' '+
         'and (serialnumber) = ' + (form1.Edit2.sqlValue) + ' and Date(Dates) = date(' + form1.DateTimePicker1.sqlDateTime + ') '+
         'and RezervObr = 1 ');
         If Dup_Id <> '' then
         begin
           Showmessage('Есть такая запись нельзя сохранять');
           Cancel := true;
         end else
         Dup_Id := SqlExecute('Select id From machines Where (model) = ' + (form1.Edit1.sqlValue) + ' '+
         'and (serialnumber) = ' + (form1.Edit2.sqlValue) + ' and Date(Dates) = date(' + form1.DateTimePicker1.sqlDateTime + ') '+
         'and RezervObr = 0 ');
         begin
         Showmessage('Можно сохранять');
           Cancel := true;
         end;
end;

Что если Rezerv = 0 - то можно сохранить если 1 то нельзя....
Извините за настырность smile

9

(24 replies, posted in Russian)

Друзья и все таки прошу Вашей помощи в решении головоломки ( по крайней мере для меня) я 100 разных вариантов перепробовал, много читал что то не получается написать необходимый скрипт. Суть его такова:
При сохранении проверяет на дубликат - но при этом если нашел дубликат и у него есть bolean = 0 то он тебе дает сохранить а если =1 то нет. Снизу прикрепил проект для понимания.

k245 Душевно smile

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

Вот скрипт:
procedure ChangeValues(value: boolean);
var
i,c: integer;
  s: string;
begin
    if value then s := '1' else s := '0';
    c := Form1.TableGridMasters.RowCount-1;
    for i := 0 to c do
    begin
        if Form1.TableGridMasters.Selected (i) then
        begin
        SQLExecute('UPDATE bsm_off SET Vidali = '+s + ' WHERE id='+IntToStr(Form1.TableGridMasters.dbIndexToID(i)));
        end;
    end;
    Form1.TableGridMasters.dbUpdate;
end;
procedure Form1_bVidali_OnClick (Sender: TObject; var Cancel: boolean);
begin
ChangeValues(True);
end;

12

(24 replies, posted in Russian)

Во спасибо наталкнул на другой способ smile

Я добавил на другую кнопку
procedure CheckDublicate (Sender: TObject; var Cancel: boolean);
var
Dup_Id,DOB,Fld_Concat: String;
begin
         DOB := FormatDateTime('yyyy-MM-DD 00:00:00.000',frmZakaz.DateTimePicker1.DateTime);
         Fld_Concat := frmZakaz.Edit22.Text + frmZakaz.Edit1.Text + DOB;
         Dup_Id := SqlExecute('Select id From bsm_off Where Upper(FIO) = "' + (frmZakaz.Edit22.Text) + '" and (productname) = "'
          + (frmZakaz.Edit1.Text) + '" and Date(Dates) = "' + DOB + '"');
         If Dup_Id <> '' then
         begin
         frmZakaz.Button14.Click; // Открываем форму которая сообщает об ошибке
         end else
         begin
         frmZakaz.Save.Click; // Сохраняем запись
         end;
end;

А сама кнопка сохранения называется Save  - и работает )) спасибо!!! Вот как хорошо что есть поддержка )

13

(24 replies, posted in Russian)

Помогите допилить кнопку которая имеет свойство сохранять и одновременно проверять на дубликат. У меня не получается прервать сохранение в таблицы если иметься признак дубликата. Ниже скрипт кнопки:
procedure frmZakaz_Save_OnClick (Sender: TObject; var Cancel: boolean);
var
maxID:string;
Dup_Id,DOB,Fld_Concat: String;
sDateV: string;
sDateZ: string;
sDateG: string;
begin
          if frmZakaz.DateTimePicker1.Checked then
          sDateV  := '"' + FormatDateTime('yyyy-MM-DD hh:mm:ss.000', frmZakaz.DateTimePicker1.Date) + '"'
          else sDateV := 'NULL';
          if frmZakaz.DateTimePicker2.Checked then
          sDateZ  := '"' + FormatDateTime('yyyy-MM-DD hh:mm:ss.000', frmZakaz.DateTimePicker2.Date) + '"'
          else sDateZ := 'NULL';
          if frmZakaz.DateTimePicker5.Checked then
          sDateG  := '"' + FormatDateTime('yyyy-MM-DD 00:00:00.000', frmZakaz.DateTimePicker5.Date) + '"'
          else sDateG := 'NULL';

          //Проверка на дубликат
         DOB := FormatDateTime('yyyy-MM-DD 00:00:00.000',frmZakaz.DateTimePicker1.DateTime);
         Fld_Concat := frmZakaz.Edit22.Text + frmZakaz.Edit1.Text + DOB;

         Dup_Id := SqlExecute('Select id From bsm_off Where Upper(FIO) = "' + (frmZakaz.Edit22.Text) + '" and (productname) = "'
          + (frmZakaz.Edit1.Text) + '" and Date(Dates) = "' + DOB + '"');

        // Если дубликат то ошибка и нельзя сохранить - но сохраняет sad
        If Dup_Id <> '' then
          Begin
            MessageBox('ВЫ ДОБАВИЛИ ПОВТОРЯЮЩИЙСЯ ЗАКАЗ!','Duplicate Error',MB_Ok+MB_ICONERROR);
            frmZakaz.Save.Cancel := True;  // Cancel the save if duplicate
          End;
          //Подскажите скрипт если запись повторяеться то нельзя будет кнопкой сохранить ее
          //Нужно если дубликат прервать дальнейшее выполнение скрипта

      // запись в таблицу bsm_off
    SQLExecute('INSERT INTO bsm_off (FIO,Dates,DateZ,sDateG,productname, vfamily, vname, vlastname,record_count,id_bsm_new) VALUES ("'+frmZakaz.Edit22.Text+'",'+sDateV+','+sDateZ+','+sDateG+',"'+frmZakaz.Edit1.Text+'", "'+frmZakaz.Edit11.Text+'","'+frmZakaz.Edit7.Text+'","'+frmZakaz.Edit8.Text+'","'+frmZakaz.EditCounter1.Text+'",
"'+frmZakaz.Combobox10.sqlvalue+'")');
    // получаем id последней записи в таблице В
    maxID := SQLExecute('SELECT MAX(id) FROM bsm_off');
   // запись в таблицу orderproduct
    SQLExecute('INSERT INTO orderproduct (FIO,Dates, DataZ,dater, productname, record_count, id_bsm_off) VALUES ("'+frmZakaz.Edit22.Text+'",'+sDateV+','+sDateZ+','+sDateG+',"'+frmZakaz.Edit1.Text+'", "'+frmZakaz.EditCounter2.Text+'", "'+maxID+'")');
   // обновление таблицы данных главной формы
   frmZakaz.TableGrid2.dbUpdate;

end;

14

(16 replies, posted in Russian)

k245 wrote:
frmMain.DoubleBuffered := True;

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

понял. спасибо

15

(16 replies, posted in Russian)

Вот прикрепил пример. Открывайте форму и закрывайте раза 3-4 и увидите что при открытии на долю секунды таблица обретает белый цвет хотя она черная. Как лечить ?

16

(16 replies, posted in Russian)

Заметил одну тенденцию. Выбираем стиль любой из предложенных, и при открытии другой формы на весь экран то ( если есть таблица раскрашена в любой цвет) при открытии формы на долю секунды таблица окрашивается в белый цвет а уже потом в черный. Точно такое же происходит если на форме есть любые панели. Если не выбираем никакой стиль, а устанавливаем дефолтом то все ок smile
Не могу понять или это из за Стилей или из за слабенького пенька, Может двойную буферизацию скриптом вкл?

17

(5 replies, posted in Russian)

Всем привет smile
Кто нибудь сталкивался с такой проблемой: есть таблица - туда записываются записи:
В самое БД это выглядит так:
record_count,Фамилия, Имя, Отчество, количество, дата.

Когда пытаюсь вывести все записи в FastRaport - то некоторые записи выглядят либо без имени либо без отчества либо без фамилии :
record_count,Фамилия,               Отчество, количество, дата.

В чем может быть причина. Программа на Mysql

18

(89 replies, posted in Russian)

derek wrote:

Привет Senseyesenseye, Vladimir,
Надеюсь, я понял - вы хотите имитировать нажатие «пробела» щелчком мыши?
Простой способ во вложении. Просто нажмите в поле редактирования
С Уважением
Derek.
.
I hope I understand - you want to simulate pressing the 'spacebar' by clicking the mouse?
A simple way is in the attachment.  Just click in the edit field

derek огромное Вам спасибо!

19

(89 replies, posted in Russian)

Я наверное уже всех так напрягаю, искренне извиняюсь за настырность, у меня есть небольшой вопрос по поводу эмуляции нажатия кнопки, а именно интересует как программно нажать на ПРОБЕЛ(SPACE)?

procedure SimulateKeyDown(Key: byte);
begin
keybd_event(Key, 0, 0, 0);
end;
Вот на ум что приходит но как тут это реализовать ? Может кто знает ?

20

(89 replies, posted in Russian)

Огонь smile Спасибо большое все получилось!

21

(89 replies, posted in Russian)

Все работает. Спасибо!!! 
<> '  ' - это означает что в Edit - пусто ? Да?
а как указать что что либо есть ?
И вообще может сделать проверку по БД ? Я работаю в MySQL и может как то так:
if Table1.FieldValues['...'] <> null then
begin
...
end;

22

(89 replies, posted in Russian)

Владимир не подскажешь как сделать условие на проверку Edit =
Есть Combobox куда запросом летит название фильма - из combobox я передаю в Edit5 название фильма и если в Edit 5 - есть какое то любое название (слово) то Label 3 =False; если Edit5 пустой - то Label5=True;
Пробовал в событии Edit такое пока без результатов sad
procedure voting_Edit5_OnChange (Sender: TObject);
begin
       if voting.Edit5.Text = '' then voting.Label3.Visible :=False;
       if voting.Edit5.Text = '*' then voting.Label7.Visible :=True;
end;

23

(10 replies, posted in Russian)

pavlenko.vladimir.v wrote:
senseyesenseye1983 wrote:

Всем привет. Подскажите как вывести в DateTimePicker текущую дату. Дело в том что когда ты открываешь форму с свойством "Показать запись" DateTimePicker  выдает тебе дату записи - а нужно чтоб была текущая дата
Уже перепробовал все:
Form1.DateTimePicker4.DateTime :=now;
Form1.Edit3.Text := DateToStr(now);
Не помогает...

Form1.DateTimePicker1.DateTime := Now;

Да спасибо разобрался. Убрал показать запись и вывел все через запросы smile

24

(10 replies, posted in Russian)

Всем привет. Подскажите как вывести в DateTimePicker текущую дату. Дело в том что когда ты открываешь форму с свойством "Показать запись" DateTimePicker  выдает тебе дату записи - а нужно чтоб была текущая дата
Уже перепробовал все:
Form1.DateTimePicker4.DateTime :=now;
Form1.Edit3.Text := DateToStr(now);
Не помогает...

25

(89 replies, posted in Russian)

pavlenko.vladimir.v wrote:
senseyesenseye1983 wrote:

Вот посмотрите пожалуйста. Я хотел бы чтобы пользователи голосовали, но при этом у каждого была всего одна попытка. Не получаеться с кнопками бороться smile
Я пошел немного другим путем сделав запрос к таблице:
vote.Edit2.Text := sqlexecute('select id from terminal_films_golos where lastname ='+frmLogin.edUser.sqlvalue);
Вроде заработало... Но все же как то голосование получается каким то странным smile Вам так не кажется ?
А вообще шкалу % проголосовавших реально сюда прицепить ? Так то я не встречал тут проектов про голосование может кому полезно будет.

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

Да все спасибо, благодоря Вашим советом разобрался и сделал привязку к пользователю. smile 
Подскажи есть ли в MVD возможность сделать процентный результат о ходе голосования ?