8,476

(1 replies, posted in Script)

Sorry for delay. Missed your message.


I made example for you.

8,477

(6 replies, posted in Reports)

Please, send me your project to support@drive-software.com
with link on this topic.


Thanks.

8,478

(4 replies, posted in Russian)

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


скачайте пожалуйста пример, как вывести текущее время
http://myvisualdatabase.com/forum/misc. … download=1


на счет логина пользователя, подсказать не могу, так как мне необходимо видеть для этого скрипт вашего проекта.

Попробуйте по аналогии этого кода, разукрашивать не более ста строк, вам необходимо добавить данную строку
if c > 100 then c := 100;

procedure Form1_TableGrid1_OnChange (Sender: string);
 var
    i,c: integer;
 begin
    Form1.TableGrid1.BeginUpdate;    
    c := Form1.TableGrid1.RowCount - 1;
    if c > 100 then c := 100;
    for i := 0 to c do
    begin
       if Form1.TableGrid1.Cells[3,i] = 'Yes' then Form1.TableGrid1.Cell[3,i].Color := clRed;
       if Form1.TableGrid1.Cells[3,i] = 'No' then Form1.TableGrid1.Cell[3,i].Color := clGreen;
    end;
    Form1.TableGrid1.EndUpdate; 
end;
procedure Form1_TableGrid1_OnChange (Sender: string);
 var
    i,c: integer;
 begin
    Form1.TableGrid1.BeginUpdate;    
    c := Form1.TableGrid1.RowCount - 1;
    for i := 0 to c do
    begin
       if Form1.TableGrid1.Cells[3,i] = 'Yes' then Form1.TableGrid1.Cell[3,i].Color := clRed;
       if Form1.TableGrid1.Cells[3,i] = 'No' then Form1.TableGrid1.Cell[3,i].Color := clGreen;
    end;
    Form1.TableGrid1.EndUpdate; 
end;

обратите внимание, в начале и в конце есть строки кода
Form1.TableGrid1.BeginUpdate;
Form1.TableGrid1.EndUpdate;


которые позволяют оптимизировать прорисовку, попробуйте их

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

8,482

(3 replies, posted in Script)

Here you can download example:

Можете, просто откройте ваш проект в версии 1.45 и запустите его, таким образом он обновится.
Никаких других действий не требуется.

Готово )

8,485

(1 replies, posted in Russian)

Добрый день )


Посмотрите данный видео урок
https://www.youtube.com/watch?v=cNnEXexH1dk


в нем ComboBox используется для выбора группы абонента.
В вашем случае, вместо абонентов будут изделия, а вместо группы, названия изделий.


Если не разберетесь, отправьте пожалуйста ваш проект на support@drive-software.com

Сложно прогнозировать, с учетом предновогодних праздников и выходных, но возможно успею сделать это до нового года.

8,487

(3 replies, posted in Russian)

Скачайте пожалуйста бета версию 1.48, добавил в ней функцию DecimalSeparator
https://www.dropbox.com/s/6rz92s72djtmv … 8.zip?dl=0


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

procedure Form1_Edit2_OnKeyPress (Sender: string; var Key: Char);
begin

    case Key of
         '0'..'9', #8: begin end;

         ',','.': IF Pos(DecimalSeparator, Form1.Edit2.Text)=0 Then Key:=DecimalSeparator Else Key:=#0;

         Else Key:=#0;
    end;

end;  

Пожалуйста, попробуйте еще раз прикрепить ваш проект (архив .zip) к сообщению, удалив из него exe и dll файл.

В текущей версии, изменять структуру без потери данных нельзя,


чтобы не терять данные, можно изменить структуру, используя стороннюю бесплатную программу SQLite Studio (http://sqlitestudio.pl/), затем необходимо также изменить структуру базы через My Visual Database, при запуске проекта отказаться от пересоздания базы данных, таким образом данные не будут потеряны.


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

8,490

(15 replies, posted in SQL queries)

// comments
ShowMessage('Hello'); // comments

8,491

(3 replies, posted in General)

Please, download and install latest version:
http://myvisualdatabase.com/download/myvisualdb.exe

8,492

(3 replies, posted in General)

Turn on the option to close form after save, then you can change behavior using script.


Create event OnClick for button using for save record.

procedure Form2_buttonSave_OnClick (Sender: string; Action: string);
begin
    Form2.buttonSave.dbDoCloseForm := False; // cancel closing window
    Form2.buttonSave.dbDontResetID := True; 
end;


If you need, i can make example project for you.

8,493

(15 replies, posted in SQL queries)

I  made example for you:

8,494

(43 replies, posted in Russian)

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

Можно немного упростить

begin
      frmMain.TableGrid_vkhidna.BeginUpdate;
      c := frmMain.TableGrid_vkhidna.RowCount - 1;
      for i := 0 to c do
      begin
            if ValidDate(frmMain.TableGrid_vkhidna.Cells[5,i]) then
            begin
                  if StrToDate(frmMain.TableGrid_vkhidna.Cells[5,i]) < Now then frmMain.TableGrid_vkhidna.Cell[5,i].Color := clRed;
            end;
      end;
      frmMain.TableGrid_vkhidna.EndUpdate;
   end;

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


Сделал для вас пример.
Скрипт каждые две секунды делает SQL запрос на количество записей в таблице базы данных, если оно изменилось, значит запись была добавлена либо удалена, и происходит обновление записей в компоненте TableGrid


но данный скрипт не узнает, если запись была просто отредактирована, к сожалению пока нет механизма, чтобы это отловить.


Скачайте пожалуйста проект с примером:

8,497

(2 replies, posted in Russian)

пример:

if ValidFloat(Form1.Edit1.Text) then // проверяем, является ли значение - числом
begin
   if StrToFloat(Form1.Edit1.Text) > 0 then ShowMessage('Значение больше нуля'); // преобразуем текст в число (StrToFloat) и сравниваем
end;

8,498

(15 replies, posted in SQL queries)

tcoton wrote:

Do you think it would be possible to capture the Windows user login to log who performed changes in the database?

Yes, you can get user name using function GetUserName


example:

ShowMessage(GetUserName);

8,499

(8 replies, posted in Russian)

у данного компонента есть свойство DateMode, выберите в нем значение UpDown


p.s.
Не смотря на то, что в компоненте не будет видно года, и компонент используется для сохранения даты, год все равно будет сохранен в базу данных, тоже самое и для поиска. Т.е. свойство Format лишь задает внешний вид даты, и больше ничего, механизм работы компонента при этом не меняется.

Исправьте данный участок кода:

SQLExecute ('INSERT INTO logNAF (date, user, form, operation, type, docNum, docDate, docName, year, period, dept, actNum, actDate, indexNum, indexName, folderNum, internalNum, pages, room, scaff, rack, note)' +
     'VALUES ('+sCurrentDate+', "'+sUser+'", '+sForm+', '+sOperation+', '+sType+', '+sDocNum+', '+sDocDate+', '+sDocName+', '+sYear+', '+sPeriod+', '+sDept+', '+sActNum+', '+sActDate+', '+sIndexNum+', '+sIndexName+', '+sFolderNum+', '+sInternalNum+', '+sPages+', '+sRoom+', '+sScaff+', '+sRack+', '+sNote+')');

исправил

', '+sUser+',

на

', "'+sUser+'",