3,476

(9 replies, posted in General)

Hello.


Yes you can set the padding to cells, example:

procedure Form1_GridEmployees_OnChange (Sender: string);
var
    i, c: integer;
begin
    Form1.GridEmployees.Columns[0].Padding := 10;
    Form1.GridEmployees.Columns[1].Padding := 20;
.......

К сожалению я не могу найти ошибку лишь по одной строчке кода.

3,478

(7 replies, posted in Russian)

hutley wrote:

Отправил Вам по электронной почте

Попробуйте данный SQL запрос

SELECT

"$autoinc", 
strftime('%d.%m.%Y',"Account".register), 
F1.statusaccount,  
"Account".Email,                     
F2.location,  
F4.Country,
"Account".balance,       
f5.editaction,                                                                   
"Account".id   

FROM "Account"  
             
LEFT OUTER JOIN statusaccount F1 ON F1.id="Account".id_statusaccount 
LEFT OUTER JOIN location F2 ON F2.id="Account".id_location                                       
LEFT OUTER JOIN country F4 ON F4.id="Account".id_country 
LEFT OUTER JOIN editaction f5 ON f5.id="Account".id_Editaction   
                                                  
WHERE                            

(CASE WHEN {Basesearchstatusaccount}=-1 THEN 1=1 ELSE {Basesearchstatusaccount}="Account".id_statusaccount END)
AND
(CASE WHEN {Basesearchlocation}=-1 THEN 1=1 ELSE {Basesearchlocation}="Account".id_location END)              
AND
(CASE WHEN {Combo_country}=-1 THEN 1=1 ELSE {Combo_country}="Account".id_country END)          
AND 
(CASE WHEN {DateTimePicker3} IS NOT NULL THEN date(f5.editaction) = date({DateTimePicker3}) ELSE 1=1 END)

Но в принципе я не вижу смысла в данном случае использовать SQL запрос. Используйте кнопку с действием "Поиск", в ее настройках просто укажите компоненты, с помощью которых вы бы хотели фильтровать записи и выберите необходимые поля из таблиц, которые бы вы хотели видеть в результате поиска.

3,479

(2 replies, posted in Script)

You can't just paste a bitmap from clipboard, because database also should store file name of this bitmap.

Можно. Создайте вычисляемое поле вида
(CASE WHEN Поле3=100 THEN 0 ELSE 1 END)


Также на форме разместите CheckBox с заголовком "Скрывать/Показать 100%" и присвойте данному компоненту созданное выч. поля с помощью свойств TableName и FieldName, не забудьте добавить данный компонент в настройку кнопки Поиск.


Также включите у данного CheckBox свойство AllowGrayed=True, чтобы была возможность игнорировать компонент при поиске.

3,481

(12 replies, posted in General)

Unfortunately I can't understand your database structure.

Проще всего скрыть записи можно с помощью скрипта, пример

procedure frmmainmenu_tgeqiup_OnChange (Sender: string);
var
    i,c: integer;
begin
    c := frmmainmenu.tgeqiup.RowCount-1;
    if frmmainmenu.tgeqiup.Columns.Count > 3 then
        for i:= c downto 0 do
            if frmmainmenu.tgeqiup.Cells[3,i]='0' then frmmainmenu.tgeqiup.DeleteRow(i);
end;

3,483

(9 replies, posted in Russian)

kovalenko
Что именно не получается? В вашей базе запись "Расход" в словаре skladOperation имеет id=4, просто добавьте данное поле в грид, чтобы видеть его значение.

3,484

(1 replies, posted in Reports)

Hello.


1.
In the report you can change display format of text object, right mouse click and select "Display format", then select Category = Date/Time

In the excel you can change format of cell in the menu "Format Cells..."


Also you can format date using calculated field.



2. Unfortunately I can't find the way how to do it.

3,485

(9 replies, posted in Russian)

kovalenko
Достаточно знать только id записи, которая обозначает расход, т.к. только в этом случае необходимо умножать количество на -1, чтобы получилось отрицательное число при подсчете расхода.

avmakarov91
Пожалуйста, приложите ваш проект (zip файл без exe и dll), с указанием на какой форме используется данное вычисляемое поле.

3,487

(12 replies, posted in General)

nitin.ingale08
I think you have wrong database structure, or I can understand it. Please describe your goal, what exactly you want to do?

3,488

(9 replies, posted in Russian)

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

SELECT 
parts.partName
  
,(                             

TOTAL( sklad.quanity * (CASE WHEN sklad.id_skladOperation = 4 THEN -1 ELSE 1 END) )

-                                   
                                        
ifnull((SELECT 
SUM(partsApp.quanty) as result 
FROM partsApp                                                 
LEFT OUTER JOIN parts ON partsApp.id_parts=parts.id       
WHERE partsApp.id_parts = sklad.id_parts),0)
)                       


FROM sklad

LEFT OUTER JOIN parts ON sklad.id_parts=parts.id
                                                               
GROUP BY parts.partName; 

обратите внимание на

id_skladOperation = 4

запись "Расход" в справочнике имеет id = 4

3,489

(7 replies, posted in Russian)

hutley
Приложите пожалуйста ваш проект (zip файл без exe и dll)

3,490

(9 replies, posted in General)

AD1408
Check it out

// global event for all exceptions related database
function OnSQLException(Sender: TObject; Msg: string; SQL: string): boolean;
begin
    // exception from button Form1.Button6
    if Sender = Form1.Button6 then
    begin
        if Pos('FOREIGN KEY constraint failed', Msg)=1 then
        begin
            result := True; // to prevent system message
            MessageBox('Selected record contains...', 'Error', MB_OK+MB_ICONWARNING);
        end;
    end;
end;

Project:

memult wrote:

Не могли бы еще раз проверить Ваш приложенный проект (Show last added records (highlight) MySQL.zip)
В целом это работает, но возникают случаи, когда пользователю всплывает оповещение при входе, что были добавлены записи, но по факту ему ничего не добавлялось.

Точнее,в процедуре Form1.onShow, для вывода текстового оповещения я добавил строчку:

if slLastAddedID.Count>0 then
             ShowMessage('Добавлено '+IntToStr(slLastAddedID.Count)+' записи(ей)' );

возможно данное условие некорректно?

В моем приложенном проекте нет всплываюших оповещений.


Это условие составлено верно.


Пожалуйста приложите проект полностью, также опишите необходимые действия, приводящих к неправильной работе.

3,492

(10 replies, posted in SQL queries)

Instead

Form1.Edit1.Text

try to use

Form1.Edit1.sqlValue

3,493

(12 replies, posted in General)

Hello.


I made another example for you

Здравствуйте.


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


На форме "new" в настройках кнопки "сохранить" уберите компоненты из списка, которые принадлежат вычисляемым полям, таким как p_101, p_105, p_109 и т.д.

3,495

(1 replies, posted in General)

Hello.


You need merge fields in the report?


Just double click on text field in the report, and write two fields, like this:

[Report."firstname"] [Report."lastname"]

3,496

(9 replies, posted in General)

Using this example
http://myvisualdatabase.com/forum/misc. … download=1


you can catch exceptions from a database and replace system message.

С подсчётом разобрался, спасибо. 
Как я понял (касаемо скрипта очистки) мне надо в данный скрипт загнать все мои поля, которые используются в открываемой форме  для поиска?

Да, только не поля, а компоненты.

3,498

(2 replies, posted in Russian)

Здравствуйте.


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

procedure Form1_TableGrid1_OnEnter (Sender: string);
begin
    if Form1.TableGrid1.SelectedRow = -1 then Form1.TableGrid1.SelectedRow := 0;
end;

т.е. при попадании фокуса ввода на TableGrid, выделяется первая строка, если до этого пользователь не выделил какую либо строку.

3,499

(1 replies, posted in Russian)

Здравствуйте.


Здесь можете  найти историю изменений
http://drive-software.com/myvisualdatabase_ru.html (в правой колонке)

3,500

(5 replies, posted in Russian)

1. Добавил выч. поле в ваш проект для форматирования времени


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