Augsberger
Пожалуйста, задайте конкретный вопрос.

Please, see an attach image for detail.

Please, check it

Augsberger wrote:

А куда теперь крепить скрипт при множестве прикрепляемых файлов чтобы они сохранялись в папке новости вот мой код

Files.DBFile1.dbCopyTo := 'Operators\' +FormatDateTime('yyyy', now)+'\'+FormatDateTime('mmmm', now)+'\'+FormatDateTime('dd', now)+'\Новости';

думаю так

procedure Files_OnShow (Sender: string; Action: string);
begin
   Files.DBFile1.dbCopyTo := 'Operators\' +FormatDateTime('yyyy', now)+'\'+FormatDateTime('mmmm', now)+'\'+FormatDateTime('dd', now)+'\Новости';
end;

Augsberger wrote:

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

if Add_Zapis.PageControl1.ActivePageIndex := 0 then
     Files.DBFile1.dbCopyTo := 'Operators\' +FormatDateTime('yyyy', now)+'\'+FormatDateTime('mmmm', now)+'\'+FormatDateTime('dd', now)+'\Новости';

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

if Add_Zapis.PageControl1.ActivePageIndex = 0 then
     Files.DBFile1.dbCopyTo := 'Operators\' +FormatDateTime('yyyy', now)+'\'+FormatDateTime('mmmm', now)+'\'+FormatDateTime('dd', now)+'\Новости';

Augsberger
Скорей всего это не ваша вина, если вы используете бета версию 1.48
есть небольшой баг, который я поправлю завтра, а пока попробуйте просто удалить файл базы данных sqlite.db и он должен пересоздаться правильно.

8,206

(28 replies, posted in Russian)

да, просто создайте событие OnClick у кнопки поиска, пример

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
        if ValidInt(Form1.Edit1.Text) then 
           Form1.TableGrid1.dbLimit := StrToInt(Form1.Edit1.Text) 
           else Form1.TableGrid1.dbLimit := 0;
end;

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

в первом сообщение я показал как это сделать, тоже самое можно сделать скриптом:

procedure Form1_Button8_OnClick (Sender: string; var Cancel: boolean);
begin
    Form1.ComboBox1.dbFilter:='id=2 or id=3';
    UpdateDatabase('tablename');
end;

8,208

(28 replies, posted in Russian)

Augsberger
Это уже будет не так просто сделать SQL запросом, но возможно.


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


В скрипте между последними begin и end. напишите следующее

Form1.TableGrid1.dbLimit := 1000;

dbLimit
Позволяет задать максимальное количество записей, которое будет выведено в компонент.
Данное свойство работает только в том случае, когда в компонент выводится информация с помощью кнопки с действием "Поиск" или если используется опция компонента "Включить автовыполнение запроса"

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


к сожалению из описания не смог понять, в чем проблема )
Сделал для вас проект с примером.

8,210

(32 replies, posted in Russian)

menshikov-76
Спасибо за предложение, в этом нет необходимости )

8,211

(32 replies, posted in Russian)

menshikov-76
Отправил вам доработанный проект.

8,212

(5 replies, posted in Russian)

atempbox

procedure ColoredGrid (TableGrid: string);
var
   i,c: integer;
   Grid: TdbStringGridEx;
begin
     Grid := nil;

     // ищем грид  на всех формах
     if Grid = nil then Grid := TdbStringGridEx( Form1.FindComponent(TableGrid) );
     if Grid = nil then Grid := TdbStringGridEx( Form2.FindComponent(TableGrid) );
     if Grid = nil then Grid := TdbStringGridEx( Form3.FindComponent(TableGrid) );

     if Grid=nil then exit; // если не нашли, выходим

     // раскрашиваем
     c := Grid.RowCount - 1;
     for i := 0 to c do
     begin
         if Grid.Cells[3,i] = 'Yes' then Grid.Cell[3,i].Color := clRed;
         if Grid.Cells[3,i] = 'No' then Grid.Cell[3,i].Color := clGreen;
     end;
end;


procedure Form1_GridEmployees_OnChange (Sender: string);
begin
    ColoredGrid(Sender);
end;

в принципе это можно сделать чуть проще, одно созданное событие может использоваться сразу многими компонентами, вам просто необходимо зайти на вкладку События и вставить напротив события OnChange название уже существующего события, например: Form1_GridEmployees_OnChange

Sentens
Компонент DBFile это может сделать, просто установите его свойство Type=LinkFolder
после чего данный компонент будет работать с папками.

8,214

(5 replies, posted in Russian)

Попробовал сделать тоже самое, у меня только один раз вызывается OnChange, возможно какие то другие скрипты принудительно его обновляют. (TableGrid1.dbUpdate;)



можете приложить файл скрипта, посмотрю в чем дело.

atempbox
Думаю можно было сделать без таблицы system, а следующий номер для счетчика узнавать запросом примерно таким

SELECT MAX (fieldcount)+1 FROM tablename WHERE type='ТипСчетчика'


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

8,216

(28 replies, posted in Russian)

SELECT

lastname,
firstname

FROM employees

LIMIT CASE WHEN '{edLimit}'='' then 999999 else '{edLimit}' end;

где edLimit компонент TextBox на форме, если его оставить пустым, то будут выведены все записи (а именно не более 999999)

8,217

(28 replies, posted in Russian)

Augsberger
попробуйте частями комментировать код в скрипте в событии Form1_TableGrid1_OnChange
чтобы выяснить, какой именно скрипт так тормозит базу.



также после сохранения записи, происходит обновление записей в компоненте TableGrid1, который заново выводит все 100тыс записей, как решение, можно заменить действие кнопки "Поиск" на "SQL запрос", где можно выводить скажем 1000 записей (LIMIT), ведь в принципе нет никакой необходимости выводить 100 тыс. записей

I made example for you.


Also you can send me your project to support@drive-software.com
or attach here zip file without exe and dll files

8,219

(2 replies, posted in General)

Hello,


Please send me your project to support@drive-software.com
or attach here (zip without exe and dll)


I'll try to help you.

jazzitcool

В простейшем случае можно без скриптов, используя свойство ComoboBox-a, Filter написать туда условия для отбора мастеров, например:
id=2
или
id=2 or id=3
или
id=2 or id=3 or id=5


где цифры, это идентификатор мастера в базе, данный идентификатор можно увидеть, если добавить поле id в настройках грида GridMaster, на форме frmDict


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

8,221

(3 replies, posted in Russian)

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


у каждого визуального компонента есть свойство
TabOrder Определяет позицию компонента при переключении фокуса на форме, при нажатии на Tab


TabStop Определяет, будет ли компонент учавствовать в получении фокуса, при нажатии на Tab

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

Здесь описано решение
http://myvisualdatabase.com/forum/viewtopic.php?id=717
данный способ работает начиная с версии 1.47

По умолчанию все программы как правило устанавливаются в папку Program Files, которая требует прав администратора для записи.


Если я сделаю инсталятор, который не будет запрашивать прав администратора, и после чего пользователи будут пытаться установить программу в привычное для них место (Program Files), они получать сообщение об ошибке привилегий.
Я считаю, в результате получиться больше проблем чем пользы.


Большинство программ с инсталятором запрашивают права администратора.



Установленную папку с программой вы можете перенести в удобное для вас место, это никак не повлияет на ее работу.

8,225

(8 replies, posted in Russian)

menshikov-76
Готово, на форме добавил новую кнопку Excel2, которая делает экспорт