В связи с возросшим курсом доллара, предоставляется 50% скидка.
http://myvisualdatabase.com/purchase_ru.html

8,377

(2 replies, posted in General)

Hello,


You must use this code in event OnChange of TableGrid, example:

procedure Form1_TableGrid1_OnChange (Sender: string);
begin
    Form1.TableGrid1.Columns[0].Footer.Color := clGreen;
end;


Perhaps you have old version, please download latest version here:
http://myvisualdatabase.com/download/myvisualdb.exe


If this does not solve the problem, please send me your project to support@drive-software.com
I'll try to help you.

Можно, необходимо изменить эту строку кода

if Now > (Date+30) then Form1.GridSearch.Cell[3,i].Color := clRed;

на

if (Form1.GridSearch.Cells[2,i] = 'надпись') and (Now > (Date+30)) then Form1.GridSearch.Cell[3,i].Color := clRed;

koydaika

procedure Form1_GridSearch_OnChange (Sender: string);
var
    i, c: integer;
    sDate: string;
    Date: TDate;
begin
     c := Form1.GridSearch.RowCount - 1;
     for i := 0 to c do
     begin
         sDate := Form1.GridSearch.Cells[3,i];
         if ValidDate(sDate) then
         begin
              Date := StrToDate(sDate);
              if Now > (Date+30) then Form1.GridSearch.Cell[3,i].Color := clRed;
         end;

     end;
end;

если не получится встроить, пришлите свой проект на support@drive-software.com
постараюсь помочь.

8,380

(34 replies, posted in Russian)

Хотя перечитал сейчас документацию по sqlite, в принципе с strftime тоже должно работать.

8,381

(34 replies, posted in Russian)

motorolla
strftime - преобразует дату, в необходимый текстовый вид, т.е. вы пытаетесь сравнивать текст.


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

SELECT
datavvoda,
textzayavki

FROM
zayavki

WHERE
Date({DateTimePicker1}) < Date(zayavki.datavvoda) AND
Date(zayavki.datavvoda) < Date({DateTimePicker2})

8,382

(6 replies, posted in Russian)

Поправил проект, ответил на почту )

8,383

(6 replies, posted in Russian)

при заполнении свойств ComboBox-а ForeignKey и FieldName данные будут выведены автоматически.

8,384

(6 replies, posted in Russian)

Можно, создайте событие OnMouseUp у компонента CheckBox:

procedure Form1_CheckBox1_OnMouseUp (Sender: string; MouseLeft, MouseRight, MouseMiddle: boolean; Shift, Alt, Ctrl: boolean; X, Y: Integer);
begin
    if Form1.CheckBox1.Checked then Form1.CheckBox1.dbFilter:='YesNo=1' else Form1.CheckBox1.dbFilter:='';
    UpdateDatabase('TableName');
end;

где YesNo - поле в бд, с типом да/нет, в вашем случае "ремонт"
TableName - название таблицы бд, в котором находятся поля: "наименование" (текст) и "ремонт" (да/нет)

8,385

(11 replies, posted in General)

Thank you for the tool.


p.s.
I don't see screenshot.

8,386

(11 replies, posted in General)

You can select all controls on form (using Shift) then copy to clipboard and paste in new project.

8,387

(5 replies, posted in Script)

You can use function StrToMD5()

sHash := StrToMD5(sPassword);

8,388

(2 replies, posted in General)

Calculated fields have SQL syntax (SQLite)

In your case:

(CASE WHEN sentdate IS null then 1 else 0 end)

8,389

(3 replies, posted in Script)

Hello,


Try this:

OpenFile('/f /im notepad.exe', 'taskkill.exe'); 

Должно быть так, но не проверял

SQLConnection.ExecuteDirect('PRAGMA busy_timeout=1000;'); // 1000ms

SQLConnection это TSQLConnection;


ExecuteDirect
Executes an SQL command that does not include parameters.

Call ExecuteDirect to execute a single parameterless command on the server without the overhead of using an SQL dataset or preparing the statement before it executes. If the statement ordinarily returns a cursor, ExecuteDirect executes the statement, but does not return a cursor.

8,391

(1 replies, posted in General)

For filtering in TableGrid by using ComboBox you must use button with action "Search" (http://myvisualdatabase.com/help_en/com … earch.html) or "SQL query" (http://myvisualdatabase.com/help_en/com … n_sql.html)


Also you can hide Button for filtering (property of button Visible) and use property of ComboBox "Increm.Search" for instand search.
http://myvisualdatabase.com/help_en/com … earch.html

Они сами не будут очищаться, вам необходимо это сделать самостоятельно, например в событии формы Form2.FormShow

procedure TForm2.FormShow(Sender: TObject);
   var
   last_record_count: integer;
   record_count: string;
begin

   Edit1.Clear; //!! 
   Memo1.Clear;


   ZVDateTimePicker1.DateTime:=now;
   ZQuery2.Close;
   ZQuery2.SQL.Clear;
   ZQuery2.SQL.Text:= 'SELECT MAX(record_count) FROM vymoghy';
   ZQuery2.Open;

   last_record_count := ZQuery2.Fields[0].AsInteger;
   if last_record_count <> 0 then record_count := IntToStr(last_record_count+1) else record_count := IntToStr(1);

   Edit1.text := record_count;
end;

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


Сделал фильтр для ComboBox, чтобы при создании новой записи видеть только свободные инвентарные номера (комментарии в скрипте)


Скачайте пожалуйста последнюю бета версию 1.48, исправил ошибку (не работало свойство Filter у ComboBox при использовании связанных списков)
https://www.dropbox.com/s/6rz92s72djtmv … 8.zip?dl=0



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

8,394

(4 replies, posted in Russian)

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

     Form1.DateTimePicker_DateUpgrade.MinDate:= SQLDateTimeToDateTime( SQLExecute('SELECT DISTINCT Dev.DatePriob FROM Dev '+
        'LEFT OUTER JOIN Upgrade ON Upgrade.id_Dev = Dev.id '+
        'WHERE Upgrade.id_Dev = '+Form1.CBName_Dev.sqlValue) );

Переделайте это событие, оно должно быть таким:

procedure frmNew_TableGrid1_OnCellClick (Sender: string; ACol, ARow: Integer);
var
    idImage: string;
begin
     idImage := SQLExecute ('SELECT id_name FROM fixed WHERE fixed.id=' + frmNew.TableGrid1.sqlValue);
     frmNew.DBImage1.Clear;

     if ValidInt(idImage) then frmNew.DBImage1.LoadFromDatabase( 'name', 'image', StrToInt(idImage) );
end;

вы пытались из frmNew.TableGrid1 получить идентификатор записи таблицы fixed, а вам нужен идентификатор записи из таблицы name, так как именно в ней хранится изображение.

8,396

(2 replies, posted in Russian)

1. Данное значение по умолчанию появляется только на форме, вызванной с помощью действия кнопки "Новая запись"


2. Пришлите пожалуйста ваш проект на support@drive-software.com
посмотрю, где ошибка.
Либо пересмотрите данный видео урок, в котором используется счетчик
https://www.youtube.com/watch?v=cNnEXexH1dk#t=418

8,397

(4 replies, posted in Russian)

В коде ошибок не вижу, возможно прячется где то в другом месте, пришлите пожалуйста проект на support@drive-software.com
с описанием порядка действий, приводящих к ошибке.

8,398

(2 replies, posted in Russian)

У компонента ComboBox есть свойство DefaultIndex, задающее по умолчанию порядковый номер выбранного пункта, данное свойство доступно через Инспектор объектов

не правильно были объединены таблицы и ошибки в секции WHERE

SELECT
tbsofa.id,
tbsofa.sofanom,
tbsofa.sofanomzak,
tbsofaname.sofaname,
tbsofa.sofabuyer,
tbsofa.sofarun,
tbsofa.sofaplanend,
tbsofa.sofaclothparish,
tbclothsellerone.clothsellerone,
tbsofa.clothname1,
tbsofa.clothmetr1,
tbsofa.clothprise1,
tbclothsellertwo.tbclothsellertwo,
tbsofa.clothname2,
tbsofa.clothmetr2,
tbsofa.clothprise2,
tbclothsell.tbclothsell,
tbsofa.clothname3,
tbsofa.clothmetr3,
tbsofa.clothprise3,
tbcloths.tbcloths,
tbsofa.clothname4,
tbsofa.clothmetr4,
tbsofa.clothprise4,
tbsofa.sofanote

FROM tbsofa

LEFT OUTER JOIN tbsofaname ON tbsofaname.id = tbsofa.id_tbsofaname
LEFT OUTER JOIN tbclothsellerone ON tbclothsellerone.id = tbsofa.id_tbclothsellerone
LEFT OUTER JOIN tbclothsellertwo ON tbclothsellertwo.id = tbsofa.id_tbclothsellertwo
LEFT OUTER JOIN tbclothsell ON tbclothsell.id = tbsofa.id_tbclothsell
LEFT OUTER JOIN tbcloths ON tbcloths.id = tbsofa.id_tbcloths

WHERE tbsofa.sofaclothparish IS NULL AND 
tbsofa.id_tbclothsellerone={ComboBox1} OR 
tbsofa.id_tbclothsellertwo={ComboBox1} OR 
tbsofa.id_tbclothsell={ComboBox1} OR 
tbsofa.id_tbcloths={ComboBox1};

Delphi XE3 (Object Pascal)