5,676

(2 replies, posted in Script)

I made an example for you:

5,677

(8 replies, posted in Script)

Added a duplicate check in your project.

5,678

(15 replies, posted in Script)

carlo_dj wrote:

Hi Dmitry and Tcoton,

Yes, I want try to count the difference between the two dates. Ex. New repair IN date time - repair OUT date time = TOTAL repair spend.
Thanks, Carlo

Where you need to see result? In a TableGrid or in a TextBox?
Because if you need result in a TableGrid, you should using calculated field, if result should be in  a TextBox, you should use a script.

5,679

(15 replies, posted in Russian)

Пожалуйста, для каждого вопроса создавайте отдельную тему.

5,680

(8 replies, posted in Russian)

wertyby
Доработал скрипт, также в таблицу БД пришлось добавить поле year, поэтому вам также необходимо добавить данное поле в вашу актуальную базу данных. Теперь номер тома будет сбрасываться с каждым новым годом.

Такой поиск можно реализовать с помощью SQL запроса, пример:

SELECT
employees.lastname
,employees.firstname
,groups.groupname
,employees.id

FROM
employees

LEFT OUTER JOIN groups ON groups.id=employees.id_groups

WHERE
(employees.lastname LIKE '%{edSearch}%') OR
(employees.firstname LIKE '%{edSearch}%')  OR
(employees.phone LIKE '%{edSearch}%') OR
(groups.groupname LIKE '%{edSearch}%');


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

5,682

(3 replies, posted in Russian)

В данном случае поиск придеться реализовать с помощью SQL запроса, пример:

SELECT

lastname,
firstname,
strftime('%d.%m.%Y', startwork),
strftime('%d.%m.%Y', endwork),
id

FROM employees

WHERE

CASE WHEN IFNULL({DateTimePicker1}, 1)=1 THEN 1=1 ELSE
{DateTimePicker1} >= startwork AND {DateTimePicker1} <= endwork
END


также можете скачать проект с примером:

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


1. Пока нет такой возможности, но я постараюсь в ближайшее время изучить этот вопрос.


2. http://myvisualdatabase.com/forum/viewtopic.php?id=1091

5,684

(7 replies, posted in Script)

Hello,


try fix this line

  Web.Navigate(Google + Form1.TableGrid1.Cells[5,Form1.TableGrid1.SelectedRow]+ ',' + Form1.TableGrid1.Cells[6,Form1.TableGrid1.SelectedRow]);

5,685

(15 replies, posted in Russian)

Вы забыли закрыть и очистить TfrxDBDataset

frxDBDataset3.DataSet.Close;  и frxDBDataset3.Free;

в итоге скрипт будет таким:

procedure Form1_bReport_OnClick (Sender: string; var Cancel: boolean);
var
    frxDBDataset1, frxDBDataset2,frxDBDataset3: TfrxDBDataset;
    Results1,Otchet, Results2: TDataSet;
    sql: string;
    sFile: string;
    sDest: string;


begin
 //Data for first dataset
 if isAdmin then
            sql := 'SELECT employees.Формулировка,employees.id,employees.Начало, employees.Изменение, employees.Срок,users.login FROM employees LEFT OUTER JOIN users ON users.id=employees.id_users ORDER BY employees.id'
        else
            sql := 'SELECT employees.Формулировка, employees.Начало, employees.Изменение, employees.Срок, users.login FROM employees LEFT OUTER JOIN users ON users.id=employees.id_users WHERE ' + 'id_users='+IntToStr(idUser);
    SQLQuery(sql, Results1);


    // Data for second dataset
    if isAdmin then
            sql := 'SELECT employees.Формулировка, employees.Начало, employees.Изменение, employees.Срок, users.login FROM employees LEFT OUTER JOIN users ON users.id=employees.id_users'
        else
            sql := 'SELECT employees.Формулировка, employees.Начало, employees.Изменение, employees.Срок, users.login FROM employees LEFT OUTER JOIN users ON users.id=employees.id_users WHERE ' + 'id_users='+IntToStr(idUser);
    SQLQuery(sql, Results2);

                     // Data for 3 datase


  SQLQuery('SELECT '+Form1.Date_report.sqlDateTime+' as DateField,'+Form1.Report_memo.sqlValue + ' as TextField', Otchet);
    //SQLQuery('SELECT '+Form1.DateTimePicker1+','+Form1.Memo1.sqlValue, Results);

    // create first DataSet
    frxDBDataset1 := TfrxDBDataset.Create(Form1);
    frxDBDataset1.UserName := 'Report1';
    frxDBDataset1.CloseDataSource := True;
    frxDBDataset1.OpenDataSource := True;
    frxDBDataset1.DataSet := Results1;

    // create second DataSet
    frxDBDataset2 := TfrxDBDataset.Create(Form1);
    frxDBDataset2.UserName := 'Report2';
    frxDBDataset2.CloseDataSource := True;
    frxDBDataset2.OpenDataSource := True;
    frxDBDataset2.DataSet := Results2;

     // create 3 DataSet
    frxDBDataset3 := TfrxDBDataset.Create(Otchet);
    frxDBDataset3.UserName        := 'Otchet';
    frxDBDataset3.CloseDataSource := True;
    frxDBDataset3.OpenDataSource  := True;
    frxDBDataset3.DataSet         := Otchet;

    // set up report
    Form1.frxReport.Clear;
    Form1.frxReport.DataSets.Clear;
    Form1.frxReport.DataSets.Add(frxDBDataset1);
    Form1.frxReport.DataSets.Add(frxDBDataset2);
    Form1.frxReport.DataSets.Add(frxDBDataset3);

    // DESIGN MODE
    Form1.frxReport.LoadFromFile(ExtractFilePath(Application.ExeName)+'Report\print.fr3');
    Form1.frxReport.DesignReport;


    // OPEN REPORT IN PDF
    Form1.frxReport.LoadFromFile(ExtractFilePath(Application.ExeName)+'Report\print.fr3');
    Form1.frxReport.PrepareReport();
    Form1.frxRTFExport1.FileName := ChangeFileExt(GetTempFileName+'32', '.rtf');
    Form1.frxRTFExport1.ShowDialog := False;
    Form1.frxReport.Export(Form1.frxRTFexport1);


    // PREVIEW MODE
    //frxDBDataset1.DataSet.Close;
    //frxDBDataset2.DataSet.Close;
    //frxDBDataset3.DataSet.Close;
    //Form1.frxReport.LoadFromFile(ExtractFilePath(Application.ExeName)+'Report\print.fr3');
    //Form1.frxReport.ShowReport;


                                            
    frxDBDataset1.Free;
    frxDBDataset2.Free;
    frxDBDataset3.Free;

    sFile := Form1.frxRTFExport1.FileName;
    //Form1.frxRTFExport1.FileName:=ChangeFileExt(sUser+' '+FormatDateTime('YYYY-MM-DD.', frmEmployee.dtDateOfBirth.Date), '.rtf');
       sDest := 'R:\Report4\'+FormatDateTime('YYYY', now)+'\'+FormatDateTime('MM-MMMM', now)+'\'+sUser+'\';
    if ForceDirectories(sDest) then
    begin
        CopyFile(sFile, sDest+sUser+' '+FormatDateTime('YYYY-MM-DD.', Form1.Date_report.Date)+'rtf');
    end;
    ShowMessage('Файл отчета сохранен по адресу:'#13'Free/qq/'+FormatDateTime('YYYY-MM-DD', now)+'\'+sUser+'\'+#13+'Под именем:'+' '+sUser+' '+FormatDateTime('YYYY-MM-DD.', Form1.Date_report.Date)+'rtf' );

    DeleteFile(sFile);
end;

5,686

(15 replies, posted in Russian)

memult
Сложно сказать, т.к. у вас скриптом создается отчет, возможно забыли где то TDataSet очистить, пришлите проект на support@drive-software.com со ссылкой на данную тему.

5,687

(15 replies, posted in Russian)

Да, перепутал, у компонента DateTimePicker нужно использовать свойство sqlDateTime
И да, нудно добавить AS

SQLQuery('SELECT '+Form1.Date_report.sqlDateTime+' as DateField,'+Form1.Report_memo.sqlValue + ' as TextField', Otchet);

5,688

(15 replies, posted in Russian)

примерно так

SQLQuery('SELECT '+Form1.DateTimePicker1.sqlValue+','+Form1.Memo1.sqlValue, Results);

5,689

(3 replies, posted in Russian)

memult wrote:

Благодарю за помощь, т.е все комбобоксы в проекте нужно объединять LEFT JOIN, как в примере выше?

Речь идет про про внешние ключи в таблицах БД, их необходимо объединять с помощью LEFT JOIN

5,690

(15 replies, posted in Russian)

memult wrote:

Можно пример реализации этого?

Пожалуйста.

Пожалуйста, создавайте отдельные темы для разных вопросов.


Спасибо.

5,692

(7 replies, posted in Script)

Hello,


Please check it out:
http://myvisualdatabase.com/forum/viewtopic.php?id=947


Thanks.

5,693

(3 replies, posted in Russian)

Вы неверно связываете таблицы в SQL запросе, правильный запрос

sql := 'SELECT Combb.combb,employees.firstname, employees.lastname, strftime(''%d.%m.%Y'', employees.dateofbirth) as dateofbirth, users.login FROM employees LEFT OUTER JOIN users ON users.id=employees.id_users LEFT OUTER JOIN Combb ON Combb.id=employees.id_Combb'

также в запросе изменен формат даты на ДД.ММ.ГГГГ

5,694

(15 replies, posted in Script)

You need to know how many days between two dates?

5,695

(28 replies, posted in Russian)

ZBear wrote:

1. Добавляю поле.
2. Запускаю проект.
3. Открываю прибор через форму редактирования.
4. Появляется ошибка.


По первому вопросу есть какие-нибудь предложения?

Спасибо за найденную ошибку, скачайте пожалуйста бета версию 2.4
https://www.dropbox.com/s/ro1hs53q8rdv5 … a.zip?dl=0


открой проект в данной версии, затем удалите поле foto и снова его создайте.

5,696

(28 replies, posted in Russian)

Попробуйте этот скрипт

procedure main_mainGrid_OnChange (Sender: string; Action: string);
var
     i, mNow, yNow, c, q, e : integer;
     iRow, iCol : integer;
     k : integer;
     DD, YY, MM: word;
begin
    c := main.mainGrid.RowCount - 1;
    i := main.mainGrid.Columns.Count-1;
    for iRow := 0 to c do
    begin
        if (not ValidInt(main.mainGrid.Cells[13,iRow])) or (not ValidInt(main.mainGrid.Cells[14,iRow])) then continue;
        for iCol := 0 to i do
        begin
            q := StrToInt (main.mainGrid.Cells[13,iRow]); // определяем квартал поверки
            e := StrToInt (main.mainGrid.Cells[14,iRow]); // определяем год поверки

            DecodeDate(Now, YY, MM, DD);  // декодируем текущую дату
            mNow := StrToInt ((IntToStr(MM))); // извлекаем месяц
            yNow := StrToInt ((IntToStr(YY))); // извлекаем год

            if  (mNow >=1) and (mNow <=3)  then k := 1; // определяем текущий квартал
            if  (mNow >=4) and (mNow <=6)  then k := 2;
            if  (mNow >=7) and (mNow <=9)  then k := 3 ;
            if  (mNow >=10) and (mNow <=12)  then k := 4;

            if (e < yNow) then main.mainGrid.Cell[iCol,iRow].Color := clRed; // если год меньше текущего
            if (e = yNow)and (q < k) then main.mainGrid.Cell[iCol,iRow].Color := clRed;  // год совпадает квартал меньше текущего
            if (e = yNow)and (q = k) then main.mainGrid.Cell[iCol,iRow].Color := clYellow; // квартал и год совпадает с текущим
            if (e = yNow)and (q - k = 1) then main.mainGrid.Cell[iCol,iRow].Color := clGreen; // квартал и год совпадает с текущим

            main.Edit3.Text := 'Списан';
            main.Edit4.Text := 'На списание';
            main.mainGrid.BestFitColumns(bfBoth); // автоподбор ширины по содержимому ячеек и названия колонок
         end;
     end;
end;

я добавил проверку чисел в ячейках, что они являются числами, ведь там может быть и пустое значение, что вызывает ошибку
if (not ValidInt(main.mainGrid.Cells[13,iRow])) or (not ValidInt(main.mainGrid.Cells[14,iRow])) then continue;

memult
Пожалуйста, создайте для каждого вопроса отдельную тему.

5,698

(2 replies, posted in General)

Please check out this example:
http://myvisualdatabase.com/forum/misc. … download=1

5,699

(1 replies, posted in Russian)

Для MySQL слово read является системным, поэтому попробуйте его обрамить обратными кавычками в SQL запросе
`read`


также возможно у вас есть слово `write`

5,700

(17 replies, posted in Russian)

memult wrote:

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

Готово.