kunar80
Пришлите пожалуйста проект, с файлом, который пытаетесь импортировать )
посмотрю, где ошибка.

8,502

(8 replies, posted in Russian)

Речь точно про компонент ComboBox?
Для даты необходимо использовать компонент DateTimePicker, в свойсте которого Format, нужно написать необходимый формат даты, в вашем случае например так: d.MMMM

8,503

(9 replies, posted in Russian)

Чучкин Евгений
тогда просто напишите там о вашем проекте, я сам добавлю файл к вашему сообщению )

8,504

(24 replies, posted in General)

jean.brezhonek wrote:

Hello The Engineer

Well I'm waiting for DriveSoft's response about your traduction
To know if I go on with mine or if yours is OK for him
I go ahead with an operating mode about creating application with MDB

YY

Thank you also for your help )
I will use translations by The Engineer.

8,505

(24 replies, posted in General)

The Engineer wrote:

I have complete the English Manual v1.0 and sent the pdf file to be evaluated by Drive Software.

It as been created by The Engineer in UK

Thank you for the help.
Excellent translation!

8,506

(9 replies, posted in Russian)

Чучкин Евгений
Пожалуйста, выложите ваш проект лучше в этой теме
http://myvisualdatabase.com/forum/viewtopic.php?id=84


а то здесь он затеряется.

должно все работать, проверил в своем примере, все ок.


Пришлите пожалуйста ваш проект на support@drive-software.com

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


К сожалению даже примерно не могу сказать, слишком не скоро это будет )

8,509

(1 replies, posted in General)

Hello,


Thank you for bug report.
Bug is fixed, please, download again 1.48 beta version:
https://www.dropbox.com/s/6rz92s72djtmv … 8.zip?dl=0



function Form1.PageControl1.Color = clBtnFace; gives me error Undeclared Identifier: 'Color' at 398: 25

This property (Form1.PageControl1.Color) not exists, you can't change color of PageControl

8,510

(18 replies, posted in Russian)

Скачать бета версию 1.48:
https://www.dropbox.com/s/6rz92s72djtmv … 8.zip?dl=0



- Для компонента TableGrid добавлен метод BestFitRow (30.11.2014)
позволяет для указанной строки автоматически изменить ее высоту, в зависимости от содержимого ячеек



- Реализована возможность создания новых полей в БД без потери данных (08.01.2015)


- Реализована возможность создания и удаления таблиц в БД без потери данных (09.01.2015)


- Реализована возможность удаления полей из таблиц БД без потери данных (10.01.2015)


- Реализована возможность редактирования полей из таблиц БД без потери данных (14.01.2015)


- Реализована новая функция для скрипта SQLQuery (12.01.2015)
Позволяет получить результат SQL запроса в объект TDataSet
Пример, выводит список всех фамилий и имен в компонент Memo:

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);  
var
    Results: TDataSet;
begin
    SQLQuery('SELECT FirstName, LastName FROM person', Results);
    while not Results.Eof do
    begin
        Form1.Memo1.Lines.Add( Results.FieldByName('FirstName').AsString+' '+ Results.FieldByName('LastName').AsString);
        Results.Next;
    end;
    Results.Free;
end;



- Для компонента TableGrid добавлено свойство dbLimit (14.01.2015)
Позволяет задать максимальное количество записей, которое будет выведено в компонент.
Данное свойство работает только в том случае, когда в компонент выводится информация с помощью кнопки с действием "Поиск" или если используется опция компонента "Включить автовыполнение запроса"
пример:
Form1.TableGrid1.dbLimit := 1000;
Form1.TableGrid1.dbLimit := 0; // снимает ограничение на количество записей

Для компонента TableGrid добавил метод BestFitRow,
скачайте последнюю бета версию 1.48
https://www.dropbox.com/s/6rz92s72djtmv … 8.zip?dl=0


пример использования

procedure Form1_GridEmployees_OnColumnResize (Sender: string; ACol: Integer);
begin
    Form1_GridEmployees_OnChange ('');
end;

procedure Form1_GridEmployees_OnChange (Sender: string);
var
    i, c: integer;
begin
    // settings for header
    //Form1.GridEmployees.HeaderSize := 50;
    //Form1.GridEmployees.Columns[0].Header.MultiLine := True;
    //Form1.GridEmployees.Columns[0].Header.Caption := 'One line' + #13 + 'Two line';


    Form1.GridEmployees.Options := Form1.GridEmployees.Options or goRowResizing;

    c := Form1.GridEmployees.Columns.Count - 1;
    for i := 0 to c do
    begin
        Form1.GridEmployees.Columns[i].VerticalAlignment := taAlignTop;
        Form1.GridEmployees.Columns[i].WrapKind := wkWordWrap;
    end;

    c := Form1.GridEmployees.RowCount - 1;
    for i := 0 to c do Form1.GridEmployees.BestFitRow(i);

end; 


Можете скачать проект с данным примером:

8,512

(13 replies, posted in Russian)

mihel
Отправьте пожалуйста ваш проект на support@drive-software.com
посмотрю, где ошибка.

Извиняюсь, запутался уже в этих проектах )
https://www.dropbox.com/s/pncndbsl1hk72 … 5.zip?dl=0

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

//============== ИМПОРТ_1 =================================================
procedure frmChoice_bImportNAF_OnClick (Sender: string; var Cancel: boolean);
var
   OpenDialog: TOpenDialog;
   sl: TStringList;
   arrStr: array of string;

   i,c: integer;

   sid_sked: string; //опись
   sid_type: string; //тип дела
   sDocNum: string; //номер дела
   sDocName: string; //название
   sid_year: string; //год формирования
   sBeginDate: string; //начато
   sEndDate: string; //окончено
   sid_period: string; //срок хранения
   sPages: string; //количество страниц
   sid_room: string; //комната
   sid_scaff: string; //стеллаж
   sid_rack: string; //полка
   sNote: string; //примечание

   YY, MM, DD: string;



   sCurrentDate: string;
   sForm: string;
   sOperation: string;

   sSked: string;
   sType: string;
   sYear: string;
   sPeriod: string;
   sRoom: string;
   sScaff: string;
   sRack: string;
   sFileYes: string;

begin
     OpenDialog := TOpenDialog.Create(frmChoice);
     OpenDialog.InitialDir := 'd:\Archive 1.01\ImportCSV';
     if OpenDialog.Execute then
     begin
          sl := TStringList.Create;
          sl.LoadFromFile (OpenDialog.FileName); ///открытие файла

          c := sl.Count - 1;
          for i := 1 to c do
          begin
               arrStr := SplitString(sl[i], ';');

               //0 sid_sked
               if arrStr[0] <> '' then
               begin
                    sid_sked := SQLExecute ('SELECT id FROM sked WHERE sked LIKE "' + arrStr[0] +'"');
                    if sid_sked = '' then
                    begin
                         SQLExecute ('INSERT INTO sked (sked) VALUES ("'+ arrStr[0] +'");');
                         sid_sked := IntToStr(Last_Insert_id('sked'));
                         if sid_sked = '-1' then sid_sked := 'NULL';
                    end;
               end else sid_sked := 'NULL';

              //1 sid_type
               if arrStr[1] <> '' then
               begin
                    sid_type := SQLExecute ('SELECT id FROM type WHERE type LIKE "' + arrStr[1] +'"');
                    if sid_type = '' then
                    begin
                         SQLExecute ('INSERT INTO type (type) VALUES ("'+ arrStr[1] +'");');
                         sid_type := IntToStr(Last_Insert_id('type'));
                         if sid_type = '-1' then sid_type := 'NULL';
                    end;
               end else sid_type := 'NULL';

               //2 sDocNum
               if arrStr[2]<>'' then sDocNum := '"'+arrStr[2]+'"' else sDocNum := 'NULL';

               //3 sDocName
               if arrStr[3]<>'' then sDocName := '"' +  ReplaceStr(arrStr[3], '"', '""') + '"' else sDocName := 'NULL';

               //4 sid_year
               if arrStr[4] <> '' then
               begin
                    sid_year := SQLExecute ('SELECT id FROM year WHERE year LIKE "' + arrStr[4] +'"');
                    if sid_year = '' then
                    begin
                         SQLExecute ('INSERT INTO year (year) VALUES ("'+ arrStr[4] +'");');
                         sid_year := IntToStr(Last_Insert_id('year'));
                         if sid_year = '-1' then sid_year := 'NULL';
                    end;
               end else sid_year := 'NULL';

               //5 sBeginDate
               if arrStr[5]<>'' then
                  sBeginDate := '"'+ FormatDateTime('yyyy-MM-DD 00:00:00.000', StrToDate(arrStr[5])) + '"'
                  else sBeginDate := 'NULL';

               //6 sEndDate
               if arrStr[6]<>'' then
                  sEndDate := '"'+ FormatDateTime('yyyy-MM-DD 00:00:00.000', StrToDate(arrStr[6])) + '"'
                  else sEndDate := 'NULL';

               //7 sid_period
               if arrStr[7] <> '' then
               begin
                    sid_period := SQLExecute ('SELECT id FROM period WHERE period LIKE "' + arrStr[7] +'"');
                    if sid_period = '' then
                    begin
                         SQLExecute ('INSERT INTO period (period) VALUES ("'+ arrStr[7] +'");');
                         sid_period := IntToStr(Last_Insert_id('period'));
                         if sid_period = '-1' then sid_period := 'NULL';
                    end;
               end else sid_period := 'NULL';

               //8 sPages
               if arrStr[8]<>'' then sPages := '"'+arrStr[8]+'"' else sPages := 'NULL';

               //9 sid_room
               if arrStr[9] <> '' then
               begin
                    sid_room := SQLExecute ('SELECT id FROM room WHERE room LIKE "' + arrStr[9] +'"');
                    if sid_room = '' then
                    begin
                         SQLExecute ('INSERT INTO room (room) VALUES ("'+ arrStr[9] +'");');
                         sid_room := IntToStr(Last_Insert_id('room'));
                         if sid_room = '-1' then sid_room := 'NULL';
                    end;
               end else sid_room := 'NULL';

               //10 sid_scaff
               if arrStr[10] <> '' then
               begin
                    sid_scaff := SQLExecute ('SELECT id FROM scaff WHERE scaff LIKE "' + arrStr[10] +'"');
                    if sid_scaff = '' then
                    begin
                         SQLExecute ('INSERT INTO scaff (scaff) VALUES ("'+ arrStr[10] +'");');
                         sid_scaff := IntToStr(Last_Insert_id('scaff'));
                         if sid_scaff = '-1' then sid_scaff := 'NULL';
                    end;
               end else sid_scaff := 'NULL';

               //11 sid_rack
               if arrStr[11] <> '' then
               begin
                    sid_rack := SQLExecute ('SELECT id FROM rack WHERE rack LIKE "' + arrStr[11] +'"');
                    if sid_rack = '' then
                    begin
                         SQLExecute ('INSERT INTO rack (rack) VALUES ("'+ arrStr[11] +'");');
                         sid_rack := IntToStr(Last_Insert_id('rack'));
                         if sid_rack = '-1' then sid_rack := 'NULL';
                    end;
               end else sid_rack := 'NULL';

               //12 sNote
               if arrStr[12]<>'' then sNote := '"'+arrStr[12]+'"' else sNote := 'NULL';




               SQLExecute ('INSERT INTO one (id_sked, id_type, [docNum], [docName], id_year, [beginDate], [endDate], id_period, [pages], id_room, id_scaff, id_rack, [note]) VALUES ('+
               sid_sked +','+
               sid_type +','+
               sDocNum +','+
               sDocName +','+
               sid_year +','+
               sBeginDate +','+
               sEndDate +','+
               sid_period +','+
               sPages +','+
               sid_room +','+
               sid_scaff +','+
               sid_rack +','+
               sNote +
               ');');




                 sCurrentDate := '"' + FormatDateTime('yyyy-MM-DD hh:nn:ss.000', now) + '"';
                 sForm  := '"NULL"';
                 sSked   := '"'+arrStr[0]+'"';
                 sType   := '"'+arrStr[1]+'"';
                 sYear  := '"'+arrStr[4]+'"';
                 sPeriod  := '"'+arrStr[7]+'"';
                 sPages  := '"'+frmDocProcessingNAF.edPages.Text+'"';
                 sRoom  := '"'+arrStr[9]+'"';
                 sScaff  := '"'+arrStr[10]+'"';
                 sRack  := '"'+arrStr[11]+'"';
                 sNote  := '"'+frmDocProcessingNAF.mNote.Text+'"';
                 sFileYes  := '"NULL"';
                 sOperation := '"Додано"';


                 SQLExecute ('INSERT INTO logNAF (date, user, form, operation, sked, type, docNum, docName, year, beginDate, endDate, period, pages, room, scaff, rack, note, FileYes)' +
                 'VALUES ('+sCurrentDate+', "'+sUser+'", '+sForm+','+sOperation+','+sSked+','+sType+','+sDocNum+','+sDocName+', '+sYear+', '+sBeginDate+', '+sEndDate+', '+sPeriod+', '+sPages+', '+sRoom+', '+sScaff+', '+sRack+', '+sNote+', '+sFileYes+')');






               frmChoice.Label8.Caption := IntToStr(i) + ' з ' + IntToStr(c);
               Application.ProcessMessages;
          end;

          sl.Free;
          UpdateDatabase('sked');
          UpdateDatabase('type');
          UpdateDatabase('year');
          UpdateDatabase('period');
          UpdateDatabase('room');
          UpdateDatabase('scaff');
          UpdateDatabase('rack');
          frmChoice.TableGrid1.dbUpdate;
          frmActions.tgActions.dbUpdate;
     end;
     OpenDialog.Free;
     frmChoice.bSearch1.Click;  ////!!!!!Нажатие на кнопку ПОИСК (при этом видимые записи таблицы обновляются)


end;
//====================================================================


также можете скачать проект, в который я добавил данное изменение
https://www.dropbox.com/s/9cah43ts9yeyo … l.zip?dl=0

zoomix
Дело в том, что на форме frmEmployee
некоторые  компоненты  лежали на компоненте Panel1, а некоторые просто
по  верх  этого  компонента,  вы можете это заметить, если попытаетесь
подвигать  компонент Panel1, таким образом, не возможно было правильно
настроить  TabOrder,  исправил  эту  ошибку  в  вашем  проекте. Проект отправил вам на e-mail.

hustas wrote:

А как из разных таблиц поля калькулировать?

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

8,517

(1 replies, posted in Script)

Hello,


I made example for you.

var
   Timer: TTimer;

procedure Form1_OnShow (Sender: string; Action: string);
begin
     Timer := TTimer.Create (nil);
     Timer.OnTimer := @OnTimer;
     Timer.Interval := 600000 ; // value in ms = 10 min
     Timer.Enabled := True;
end;

procedure OnTimer;
var
    s: string;
begin
     s := SQLExecute ('SELECT COUNT(id) FROM employees WHERE lastname = "Smith"');
     if StrToInt(s) > 0 then ShowMessage('Record found');
end;

procedure Form1_OnClose (Sender: string; Action: string);
begin
     Timer.Free;
end; 

begin

end. 



Here you can download example project:

К сожалению не вижу вашего проекта. Можете отправить его на support@drive-software.com


Также, можете скачать данный пример:

zoomix
не должно быть никаких проблем с TabOrder, возможно другие компонент TextBox расположены на другом родительством элементе? тогда нумерация работает не много по другому.


Отправьте пожалуйста ваш проект на support@drive-software.com
со ссылкой на данное сообщение, посмотрю в чем причина.

8,520

(5 replies, posted in General)

Can you send me project, where it's don't work?
support@drive-software.com

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


1. На форме Form1, в настройках кнопки "Поиск", вы добавили компонент TableGrid в список "1. Выберите компоненты учавствующие в поиске", компонент не может одновременно участвовать в поиске и содержать результаты поиска.


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


3.  На форме FrmAbonent, в свойствах компонента EdLastName, FieldName выбрано ошибочно.


4. На форме FrmAbonent, в настройках компонента TableGrid1 необходимо снять галочку с опции "Включить автовыполнение запроса (Показать все записи таблицы)", в данном случае вам не нужны в этом компоненте все записи таблицы. Более подробней о настройках данного компонента можно прочитать здесь:
http://myvisualdatabase.com/help_ru/com … /grid.html



Исправленный проект приложил к сообщению.

mitrich45 wrote:

На событии OnClick завязано обновление грида (бывают моменты когда на одном компьютере добавили запись а на другом пока не обновить грид она не появляется, и еще через OnClick показывается детальная информация в других гридах


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


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

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


Раскрашивать TableGrid в событии OnMouseMove плохая идея, вместо этого, используйте событие компонента OnChange, тогда раскраска будет происходить один раз, сразу после обновления содержимого компонента TableGrid.



Не совсем понял, а зачем постоянно обновлять таблицу на событии OnClick?

8,524

(5 replies, posted in General)

Hello,


Please, see an attach image file for detail:
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=400&amp;download=0

8,525

(41 replies, posted in Russian)

mitrich45
Спасибо за отзыв smile