Q34PM32O54G6130


А зачем? я ведь ответил уже на вопросы )

pha1984
1.
К сожалению не могу открыть ваш проект, нажат на кнопку Демонстрация, ничего не происходит.
Также не ясно, что именно не получается? если данные наполняются с помощью кнопки Поиск, то в ней вы также можете указать, по какому именно полю необходимо отсортировать результат поиска.


2.  Необходимо установить свойство формы:

Code.KeyPreview := True;

в событии формы OnShow либо в самом низу скрипта между begin и end.


3. Это одно и тоже, просто для новых версий тоже самое можно написать короче

Form1.GridEmployees.sqlValue

вместо

inttostr(Form1.GridEmployees.dbitemid)

6,803

(3 replies, posted in Russian)

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


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

Sergey
Каким образом появляется форма, на которой расположен TableGrid?
Если форма появляется с помощью скрипта, тогда TableGrid вам необходимо обновить также с помощью скрипта, например:


Form2.TableGrid1.dbUpdate; // обновляем содержимое компонента
Form2.Show; // показываем форму

If I understood you correctly, you should use ComboBox instead TextBox, then create event OnShow of the current form, and place this script to enable quick search in ComboBox:



procedure Form1_OnShow (Sender: string; Action: string);
begin
   Form1.ComboBox1.Style := csDropDown; 
end;

Also you can attach your project (zip-file without exe and dll)
I'll try to help you.

6,806

(12 replies, posted in FAQ)

voukefalas76 wrote:

Thank you very much.Even If I don't know a lot from programming it is almost very helpful with the example that sent me.
Could you please if this Line is common wih all programs? "(Sender: string; Action: string);"
And if I would like to restore the database from back up,how I should do that?
Thank you again for helping me with this.

(Sender: string; Action: string)
It's not use in this example, here you can get more info about events OnShow and OnClose
http://myvisualdatabase.com/help_en/script/form.html


Database is just one file. To restore the database, you should copy database file from backup folder to the current folder of your project and rename it to "sqlite.db"

6,807

(1 replies, posted in Script)

Hello,


Here you can download an example:
http://myvisualdatabase.com/forum/viewtopic.php?id=1438

6,808

(3 replies, posted in FAQ)

Hello,


Usually you don't need any script when you using scanner, you need just set focus to textbox after scanning you will see code from barcode in the textbox, because scanner will send code like keystrokes.

В настройках грида вы можете указать по какой колонке необходимо отсортировать данные.

6,810

(63 replies, posted in Russian)

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

ORDER BY tasks.dateCompletion, details.dateCompletion

6,811

(63 replies, posted in Russian)

Вконце запроса добавить

ORDER BY tasks.dateCompletion

6,812

(35 replies, posted in Russian)

К сожалению скриптом это не реализовать.

6,813

(35 replies, posted in Russian)

Увы пока нет.

Nervis wrote:

Журнал посещений - Form10
Компоненты для заполнения - Form11

Поправил.

6,815

(35 replies, posted in Russian)

pha1984
2. Действительно ли есть практический смысл показывать в гриде все 5000 записей?
FoxPro скорей всего подгружает новые данные в грид по мере скролла.

6,816

(63 replies, posted in Russian)

kunar80

SELECT
tasks.contentTask,
strftime('%d.%m.%Y',tasks.dateCompletion),
details.contentDetails,
strftime('%d.%m.%Y',details.dateCompletion),
(CASE WHEN ((SELECT Count(*) FROM details WHERE details.id_tasks=tasks.id AND details.status=1) > 0 OR details.status=1) then 'НА КОНТРОЛЕ' else  '' end),

department.department, 
otdel.otdel, 
pozition.pozition, 
abonents.person

FROM tasks

LEFT OUTER JOIN details ON details.id_tasks = tasks.id

LEFT OUTER JOIN department ON details.id_department = department.id
LEFT OUTER JOIN otdel ON details.id_otdel = otdel.id
LEFT OUTER JOIN pozition ON details.id_pozition = pozition.id
LEFT OUTER JOIN abonents ON details.id_abonents = abonents.id
Nervis wrote:

Попытался обойтись без sql и сделать все обычным скриптом. Но вновь столкнулся с проблемой.
У нас есть таблица. В ней 3 колонки (имя пользователя, дата входа и дата выхода). При открытии главной формы кнопкой сохраняется имя пользователя и текущее время. При закрытии главной формы 2-ой кнопкой сохранения записываем в таблицу последнюю дату. Информация должна сохраниться в одной строке, но на деле сохраняется отдельно в 2-х строках. Подобный пример на картинке. Можно ли как-то обойти это? Спасибо)

Приложите пожалуйста ваш проект, посмотрю почему так происходит.

Nervis wrote:

C именем пользователя получилось. А вот с датами к сожалению нет. Версия программы 1.46.

для версии 1.46 можно так

SQLExecute('INSERT INTO autorisationjournal (date/time_enter, date/time_exit) VALUES ('''+FormatDateTime('yyyy-MM-DD hh:nn:ss.000', Form1.DateTimePicker1.DateTime)+''','''+FormatDateTime('yyyy-MM-DD hh:nn:ss.000', Form1.DateTimePicker2.DateTime)+''');');

6,819

(4 replies, posted in General)

Hello,


Yes.

A form with only the "close"

procedure Form1_OnShow (Sender: string; Action: string);
begin
    Form1.BorderIcons := biSystemMenu;
end;

A form without buttons

procedure Form1_OnShow (Sender: string; Action: string);
begin
    Form1.BorderIcons := 0;
end;

6,820

(35 replies, posted in Russian)

pha1984 wrote:

Ув. Дмитрий, почему когда я открываю проект и хочу ввести данные то возникают тормоза. Например на форме NovayaForma при вводе записи в поле Имя, Фамилия, Отчество буквы пишутся очень медленно. В чем проблема? Проект можете скачать с 2 поста выше текушего.

об этом я уже вам говорил ранее, у вас с каждым нажатием кнопки происходит обновление гридов, что бессмысленно

procedure NovayaForma_OnKeyDown (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
......

psih12
Согласен, данные свойства я планирую вынести в инспектор объектов, чтобы это можно было сделать визуально, пока есть проблема в компоненте "Инспектор объектов", который является сторонней разработкой, очень медленно начинает работать, если в нем много свойств.

6,822

(4 replies, posted in Russian)

Alex
Посмотреть с какой целью? )

Nervis

1. попробуйте так:

SQLExecute('INSERT INTO autorisationjournal (name_of_user) VALUES ('''+sUser+''');');

2.  и так, если все равно будет ругаться на sqlDateTime, скорей всего у вас старая версия программы

SQLExecute('INSERT INTO autorisationjournal (date/time_enter, date/time_exit) VALUES ('+Form1.DateTimePicker1.sqlDateTime+','+Form1.DateTimePicker2.sqlDateTime+');');
psih12 wrote:

1. Хотелось бы, чтобы для поля базы данных была возможность проверки данных, как это сделано в Excel. Примеры: выбран тип данных "Дата" - чтобы была возможность указания промежутка, в пределах которого можно ввести дату. Если выбран тип "число", то также чтобы была возможность указать, в каком диапазоне можно вводить данные. Например, поле названо "День рождения", значит можно вводить только числа от 1 до 31. Ну и т.п.
2. Необходима "защита от дурака". Например, если нажать на кнопку "Script", удалить сам скрипт и запустить проект, то выдает ошибку "BEGIN Expected at 2:1", что не есть хорошо.


1.
Вы можете задать максимальную и минимальную дату с помощью скрипта
например:

Form1.DateTimePicker1.MaxDate := ...
Form1.DateTimePicker1.MInDate := ...

Для компонента Edit можно сделать следующий скрипт

procedure Form1_Edit1_OnChange (Sender: string);
begin
    if (Form1.Edit1.Value < 1) or (Form1.Edit1.Value > 31) then Form1.Edit1.Value := 1;
end;

2. Согласен, необходимо поправить.

6,825

(4 replies, posted in Russian)

Alex wrote:

И еще вопросик. Таких ячеек под 100.
Есть-ли возможность посчитать сколько красных и сколько зеленых (пустых, непустых)?
Спасибо.


Можно, необходимо завести две переменные, в которых можно это подсчитать, например

var
   iRed, iGreen: integer;
begin

....

iRed := 0;
iGreen := 0;

if Form1.TableGrid1.Cells[2,i] = '' then 
begin
   Form1.TableGrid1.Cell[1,i].Color := clGreen;
   Inc(iGreen); // каждый раз прибавляем 1 в переменную
end else
begin
   Form1.TableGrid1.Cell[1,i].Color := clRed;
   Inc(iRed); // каждый раз прибавляем 1 в переменную
end;

// выводим значение этих переменных например в компонент Label
Form1.Label1.Caption := IntToStr(iGreen);
Form1.Label2.Caption := IntToStr(iRed);