26

(89 replies, posted in Russian)

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

27

(89 replies, posted in Russian)

Владимир спасибо буду пробовать. Это в услувие таблицы вклеить?

28

(89 replies, posted in Russian)

pavlenko.vladimir.v wrote:
senseyesenseye1983 wrote:

Спасибо за совет. Попробовал ну работает когда нажимаешь на таблицу, у которрой в поиске нашлось что-лио. Если не нашлось и таблица пустая то все равно кнопка недоступна....

а Вы колонки точно правильно посчитали? начинается с 0

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

Дело в том что по этой таблице не будут нажимать надо как то програмно щелкнуть строчку я это сделал выше скриптом но когда пустую таблицу ищет он материться

29

(89 replies, posted in Russian)

pavlenko.vladimir.v wrote:
senseyesenseye1983 wrote:
senseyesenseye1983 wrote:

Всем привет. Подскажите можно ли создать условие на TableGrid. К примеру если при нажатии кнопки Search в TableGrid1 ничего не найдено то Button1.Visible :=True;   если в TableGrid1 при нажатии кнопки нашлись записи то Button1.Visible :=False; ?

Мне просто нужна проверка если пользователь уже проголосовал то кнопка не работает если еще не голосовал то работает.  (В таблицу при голосовании записывается значение 1 или 2. Вот как это реализовать ? Я пробовал вот так но не выходит sad

procedure voting_TableGridgolos_OnChange (Sender: TObject);
var
    i, cR : integer;
begin
        cR := voting.TableGridgolos.RowCount-1;

        for i := 0 to cR do
        begin
            If (voting.TableGridgolos.Cells[2,i] ='1') then voting.Button2.Enabled := False;
            If (voting.TableGridgolos.Cells[2,i] ='2') then voting.Button2.Enabled := False;
            If (voting.TableGridgolos.Cells[2,i] ='') then voting.Button2.Enabled := True;
        end;
end;

я думаю, что у Вас все работает, проблема в счетчике, он просто переберает все строки...

procedure voting_TableGridgolos_OnChange (Sender: TObject);
begin
     If (voting.TableGridgolos.Cells[2,voting.TableGridgolos.SelectedRow ] ='1') then voting.Button2.Enabled := False;
     If (voting.TableGridgolos.Cells[2,voting.TableGridgolos.SelectedRow ] ='2') then voting.Button2.Enabled := False;
     If (voting.TableGridgolos.Cells[2,voting.TableGridgolos.SelectedRow ] ='') then voting.Button2.Enabled := True;
end;

и измените событие  с OnChange на OnCellClick



Спасибо за совет. Попробовал ну работает все хорошо. Единственное заметил что когда при поиске выдает пустую таблицу ( если нет вообще записей) то когда срабатывает скрипт :
procedure voting_OnShow (Sender: TObject; Action: string);
begin
      voting_TableGridgolos_OnCellClick(voting.TableGridgolos,0,0);
end;
procedure voting_TableGridgolos_OnChange (Sender: TObject);
begin
       voting.TableGridgolos.SelectedRow:=0;
       voting.TableGridgolos.SetFocus;
       voting_TableGridgolos_OnCellClick(voting.TableGridgolos,0,0);
end;

Происходит ошибка так как таблица пустая и он не может кликнуть sad Есть решения?
end;

30

(89 replies, posted in Russian)

senseyesenseye1983 wrote:

Всем привет. Подскажите можно ли создать условие на TableGrid. К примеру если при нажатии кнопки Search в TableGrid1 ничего не найдено то Button1.Visible :=True;   если в TableGrid1 при нажатии кнопки нашлись записи то Button1.Visible :=False; ?

Мне просто нужна проверка если пользователь уже проголосовал то кнопка не работает если еще не голосовал то работает.  (В таблицу при голосовании записывается значение 1 или 2. Вот как это реализовать ? Я пробовал вот так но не выходит sad

procedure voting_TableGridgolos_OnChange (Sender: TObject);
var
    i, cR : integer;
begin
        cR := voting.TableGridgolos.RowCount-1;

        for i := 0 to cR do
        begin
            If (voting.TableGridgolos.Cells[2,i] ='1') then voting.Button2.Enabled := False;
            If (voting.TableGridgolos.Cells[2,i] ='2') then voting.Button2.Enabled := False;
            If (voting.TableGridgolos.Cells[2,i] ='') then voting.Button2.Enabled := True;
        end;
end;

31

(89 replies, posted in Russian)

Всем привет. Подскажите можно ли создать условие на TableGrid. К примеру если при нажатии кнопки Search в TableGrid1 ничего не найдено то Button1.Visible :=True;   если в TableGrid1 при нажатии кнопки нашлись записи то Button1.Visible :=False; ?

32

(3 replies, posted in Russian)

k245 wrote:

Вы определитесь, что вы хотите: создать новый пароль для существующего пользователя или создать пользователя с нужным паролем.

Создать пароль для существующего пользователя, где пароль у него будет = первой букве Имени.
Дело в том что изначально пользователи импортируются в мою базу через экспорт с другой программы. А уже с моей базы мне надо подхватить их и задать пароль по первой букве имени.

33

(3 replies, posted in Russian)

// первоначальная проверка, есть ли в базе данных пользотель с правами администратора,
     //если нет, то создается администратор с логином admin и паролем admin
     if VarToStr( SQLExecute('SELECT count(id) FROM users WHERE administrator=1;') ) = '0' then
     begin
         ShowMessage('Пользователя с правами Администратора не найдено, поэтому он будет создан автоматически, с логином admin и паролем admin');
         SQLExecute('INSERT INTO users (login, password, read, write, remove, search, administrator) VALUES ("admin", "admin", 1, 1, 1, 1, 1);');
         frmLogin.edUser.Text := 'admin';
         frmLogin.edPassword.Text := 'admin';
     end;

Его нужно как то переделать я так понимаю ? Только чтобы учитывал Если Nomer = 500 и name = Рома - то создаем пароль - Р

34

(3 replies, posted in Russian)

Ребята а возможно в MVD создать новый пароль, который будет соответствовать первой букве Имени (имя уже есть изначально в базе данных) Цель: когда пользователь пытается войти в программу первый раз он набирает в edLogin: - 500, и в Password - первую букву Имени.
в Базе записано так  nomer - 500, name - Рома
Где капать ? smile

35

(3 replies, posted in Russian)

Огромное спасибо smile

36

(12 replies, posted in Russian)

pavlenko.vladimir.v wrote:
senseyesenseye1983 wrote:

А для checkboxa ?
SQLExecute('SELECT COUNT(id) FROM table_name WHERE file_name<>1');  ?? Как три состояния поймать ?

у чекбокса состояния в таблице выглядит так
1
0
Null
 
для записи или обновление используется переменная
Form1.CheckBox1.sqlValue


SQLExecute('SELECT COUNT(id) FROM bsm_off WHERE Rezerv =1');  Я все время так делал но все равно к кнопке приходилось привязывать checkbox... smile

37

(12 replies, posted in Russian)

А для checkboxa ?
SQLExecute('SELECT COUNT(id) FROM table_name WHERE file_name<>1');  ?? Как три состояния поймать ?

38

(12 replies, posted in Russian)

Большое спасибо за помощь smile Работает как надо!

39

(12 replies, posted in Russian)

Все разобрался нужно было добавить перебор smile
Спасибо.

40

(12 replies, posted in Russian)

Владимир спасибо уже более понятно. А у меня действие происходит не по сохранению а по поиску. Я после нажатия кнопки поиск не могу нажать на первую строчку чтоб дальше уже передать 1 строчку в textbox

После нажатия кнопки Поиска - нужно чтоб именно кликалась 1 запись.

В оконцовке задача стоит чтоб не дать человеку выйти из программы пока у него в таблице checkbox = 0 smile (я сделал через вычисляемое поле  0 = "ОЖИДАЕТ"
Все бы ничего но именно как понять что у тебя в таблице остались записи которые ОЖИДАЮТ. Когда в ручную кликаешь в таблице то все работает, но ведь этих записей около 1000 как понять остались ли в таблице те которые ОЖИДАЮТ.
Можно сделать сортировку но нужно кликнуть же на первой записи чтоб сработала кнопка реакции....
Form1.TableGrid.SelectedRow:=0; не работает после поиска..

41

(12 replies, posted in Russian)

sibprogsistem wrote:

не могу понять как сделать
не просто выделить а кликнуть скриптом первую запись в таблице...

Я вот не могу никак сделать такое условие: Кликаем на кнопку (поиск) показываеться таблица(TableGrid) и в ней нужно узнать если в cell 1 есть надпись ОЖИДАЕТ то мы отключаем кнопку выхода(bExit)

procedure frmBuxgalter_TableGrid_OnCellClick (Sender: TObject; ACol, ARow: Integer);
begin
       frmBuxgalter.Edit5.Text := frmBuxgalter.TableGrid.cells[1,arow];
       if frmBuxgalter.Edit5.Text = 'ОЖИДАЕТ' then frmBuxgalter.bExit.Visible :=False;
end;

Немогу никак после нажатия кнопки поиск кликнуть на 1 строчку чтобы передать в Edit5  ПРИНЯТО....Помогите smile

В MVD реализовано только загрузка вручную изображений больше вариантов нет ?

История такая. Вот у меня есть база на MySQL, созданая не в MVD, Я в программе создал копии этой таблицы и подключился к ней в MVD. Все ок, текстовые данные пользователей (а их 500) подтягиваются без проблем, но вот в таблице лежат фото каждая привязана к определенной записи пользователя. И все методы уже перепробовал чтобы при открытии определенного логина подгружалась его фото не выходит и все тут. Нельзя ли как то задать сетевой диск до этой директории?  Так как знаю путь где лежат эти фото ( он на сетевом диске Z:\ - и дальше в базе MySQL записан путь до фото ) 

Пробовал
Image1.Picture.LoadFromFile(<Z:\ - в в скриншоте путь>); но там еще надо привязать к логину по которому заходишь? Вообщем тупик sad
Ниже скриншот что мне показывает встроенная таблица в MVD из которой я хочу подгрузить фото

43

(18 replies, posted in Russian)

Ну да я так и сделал )) Только подстраховался сделал +3 smile)))))))))

44

(18 replies, posted in Russian)

k245 wrote:

Про триггеры слышали? Вот они как раз для этого.
Или на крайний случай хранимая процедура - её проще отлаживать smile

Брат, для меня это темный лес ))

45

(18 replies, posted in Russian)

indigen wrote:

Я думаю тут выход один:
1) Открываешь форму -> проверяешь переменную Action -> если == 'NewRecord', то генеруриуешь новое значение счетчика и сохраняешь запись без закрытия формы.
2) Узнаешь id вновь созданной записи и присваиваешь его кнопке сохранения (чтобы новую запись не создала, а отредактировала нужную) или сохраняешь все через скрипт.

А как выглядит скрипт Action - NewRecord  добавить новое значение счетчика?

46

(18 replies, posted in Russian)

senseyesenseye1983 wrote:

Собственно вот скриншот  при запуске двух приложений и одновременной добавлении запиcи счетчик одинаковый. Как обойти это ?

Моя база на MySQL может как то чтобы автоматически создавалась запись при нажатии кнопки New Record?

Народ вообще есть какое то решение этой задачки ?
Может есть какой то скрипт, при нажатии новой записи он автоматически создает счетчик, который сразу записывается в базу и уже потом другие пользователи при нажатии новой записи будут создавать другой счетчик>? А то так получается, я нажал на создание новой записи, счетчик присвоил значение и если я буду минут 5 думать сохранять или нет, если меня опередит другой пользователь то он создаст такой же номер счетчика и когда я буду сохранять то сохраню под чужим record_count  как обойти это ?
Давайте вместе решим эту задачку smile

У меня только на ум приходит одно добавить в событие onshow вот это smile
FormProduct.EditCounter3.Text := VarToStr( SQLExecute('SELECT record_count +3 FROM Product WHERE id = (SELECT MAX(id) FROM Product)') );

47

(6 replies, posted in Russian)

Вот это тебе поможет ?

48

(6 replies, posted in Russian)

Держи smile

49

(18 replies, posted in Russian)

Собственно вот скриншот  при запуске двух приложений и одновременной добавлении запиcи счетчик одинаковый. Как обойти это ?

Моя база на MySQL может как то чтобы автоматически создавалась запись при нажатии кнопки New Record?

50

(18 replies, posted in Russian)

Я вот тоже столкнулся с такой проблемой когда есть 1 таблица в которую попадают данные из двух клиентов. Например пользователь в сети начал создавать запись в таблице и record_count присвоел ему например 50. Все ок он создает  запись, и если в этот момент другой пользователь заходит и начинает тоже создавать новую запись то record_count тоже создаеться 50. Почему так может получаться?

На данный момент есть 2 программы но таблицы в них одинаковые. Но вот как то так sad

Я вот думаю может скриптом новую запись создавать чтоб сразу в базу присваивался номер типа что то этого:
begin
    if Action = 'NewRecord' then
    begin
       
    end;