Игоревич wrote:

Допустим есть 2-3 программы созданные в My Visual DataBase. Нужно создать программу оболочку которая будет обращаться к таблицам БД этих программ и выводить сводную информацию. Есть ли такая возможность. И как это можно сделать. Заранее спс за ответ.


Вы можете с помощью скрипта подключить несколько баз данных к проекту, затем делать к ним SQL запросы, пример

SQLExecute('ATTACH DATABASE ''d:\testDB.db'' as ''TEST''');

использование:

SELECT TEST.person.firstname, TEST.person.lastname FROM TEST.person

Но лучше бы конечно сделать одну программу вместо 2-3

5,077

(13 replies, posted in Russian)

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


1. Необходимо чтобы эта информация восстанавливалась при запуске программы и сохранялась при ее закрытии?
Тогда можно так:

procedure Form1_OnShow (Sender: string; Action: string);
begin
    if FileExists('text.txt') then Form1.Memo1.Lines.LoadFromFile('text.txt');
end;

procedure Form1_OnClose (Sender: string; Action: string);
begin
    Form1.Memo1.Lines.SaveToFile('text.txt');
end;

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


3. Можно, для формы установите свойство KeyPreview = True, это позволит ловить скриптом горячие клависи, пример для Ctr+Q

procedure Form1_OnKeyDown (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
    if (Ctrl) and (Key = ord('Q')) then Form1.Memo1.Text := Form1.TableGrid1.Cells[0,Form1.TableGrid1.SelectedRow];
end;

5,078

(1 replies, posted in Reports)

Gilberto_Schiavinatto wrote:

I need more help, selecting a Combobox for printing on SQL.

Please download:

5,079

(7 replies, posted in Russian)

maksimzakharov wrote:

И еще один вопрос, что некорректно в данной части скрипта:

if StrToFloat(frmPoisk.tablRezultatPoiska.Cells[2,r]) < StrToFloat(frmPoisk.tablRezultatPoiska.Cells[3,r])
               and StrToFloat(frmPoisk.tablRezultatPoiska.Cells[4,r])=nil
               THEN frmPoisk.tablRezultatPoiska.Cell[2,r].Color := clRed;


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

if (ValidFloat(frmPoisk.tablRezultatPoiska.Cells[2,r])) and 
   (ValidFloat(frmPoisk.tablRezultatPoiska.Cells[3,r])) then 
        if (StrToFloat(frmPoisk.tablRezultatPoiska.Cells[2,r]) < StrToFloat(frmPoisk.tablRezultatPoiska.Cells[3,r])) and
        (frmPoisk.tablRezultatPoiska.Cells[4,r]='') then frmPoisk.tablRezultatPoiska.Cell[2,r].Color := clRed;

5,080

(7 replies, posted in Russian)

maksimzakharov wrote:

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

Точно также как в Excel сделать не получиться, но разве у вас не получается отфильтровать записи с помощью кнопки Поиск? Просто не могу понять в чем принципиальная разница.

5,081

(2 replies, posted in General)

You can do it using calculated field, example:

CASE WHEN boolfield = 1 THEN 'OK' ELSE 'Not Ok' END

5,082

(6 replies, posted in Russian)

Вам необходимо подсчитать количество уникальный имен в таблице? тогда так

SELECT COUNT(DISTINCT name) FROM Contact

5,083

(18 replies, posted in Russian)

Пропущен один END, попробуйте так

SELECT

dom.adress
,usluga.vid_uslugi
,rabota.vid_rabot
,application.summa
,application.record_count
,strftime('%d.%m.%Y',application.date) as date
,strftime('%d.%m.%Y',{dtFrom}) as datefrom
,strftime('%d.%m.%Y',{dtTo}) as dateto

FROM application

LEFT OUTER JOIN dom ON dom.id=application.id_dom
LEFT OUTER JOIN rabota ON rabota.id=application.id_rabota
LEFT OUTER JOIN usluga ON usluga.id=application.id_usluga

WHERE
date(application.date) > date({dtFrom}) AND
date(application.date) < date({dtTo}) AND
CASE WHEN {cbAdress}=-1 THEN 1=1 ELSE {cbAdress}= application.id_dom END AND
CASE WHEN {cbUsluga}=-1 THEN 1=1 ELSE {cbUsluga}= application.id_usluga END

5,084

(7 replies, posted in Russian)

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

5,085

(1 replies, posted in Russian)

Можно так

SELECT
 baza.record_count,
 (SELECT fieldname FROM tablename WHERE tablename.id={ComboBox}) as ComboBoxValue,
 baza.data,
 baza.datavipolneniya,
 ..........
vir2alex wrote:

На данный момент решил проблему через костыль. В событии формы OnShow вставил обновление грида dbUpdate. Щас нормуль. Но исправлять надо.

Спасибо, исправил, в версии 2.6 будет все ок )

5,087

(66 replies, posted in Russian)

Роман wrote:

Доброго времени суток!!!
пост №26...
как правильно записать скрипт:

Form2.Edit7.Text := SQLExecute ('SELECT spred FROM Spred WHERE Spred.id_Centre='+ IntToStr(Form2.ComboBox17.dbItemID))  AND ('SELECT spred FROM Spred WHERE Spred.id_Currency='+ IntToStr(Form2.ComboBox18.dbItemID));

С Уважением и Благодарностью Роман!!!

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

5,088

(1 replies, posted in Russian)

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

OpenFile('mailto:'+frmMain.Label3.Caption+'?Subject='+'Кормандон: фармоиши калиди барнома'+'&Body='+frmMain.Edit6.Text+' '+frmMain.Edit7.Text+' '+frmMain.Edit8.Text);

5,089

(6 replies, posted in Russian)

данный запрос вернет количество записей в таблице, просто цифру.

5,090

(11 replies, posted in Russian)

yevgeny2003 wrote:

И прям никак ничего не поделать?)) а то теряется весь смысл)) по датам готовности выбираются отчеты и тд. Может есть какие нибудь варианты?)

Измените данную строку

SQLExecute('UPDATE employees SET record_count = '+ IntToStr(iMax) + ', dateready=date(''now'') WHERE id='+IntToStr(id));

на

SQLExecute('UPDATE employees SET record_count = '+ IntToStr(iMax) + ', dateready='+ '"' + FormatDateTime('yyyy-MM-DD 00:00:00.000', Now) + '"' +' WHERE id='+IntToStr(id));

5,091

(6 replies, posted in Russian)

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


SELECT count(*) FROM Contact

5,092

(7 replies, posted in Russian)

alduyr wrote:

Спасибо Дмитрий. Всё работает . А файл сохраняется в базе или надо создать отдельную
папку для хранения файлов и поместить её в проект?

В вашем проекте компонент DBFile2 на форме Add настроен по умолчанию, сохраняя файл непосредственно в базу данных.

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

5,094

(11 replies, posted in Russian)

yevgeny2003
Доработал скрипт

procedure Form1_Button5_OnClick (Sender: string; var Cancel: boolean);
var
    i,c: integer;
    iMax: integer;
    id: integer;
begin
    iMax := SQLExecute('SELECT IFNULL(MAX(record_count), 0) FROM employees');

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

        if (SQLExecute('SELECT IFNULL(record_count, -1) FROM employees WHERE id='+IntToStr(id)) = -1) and
           (SQLExecute('SELECT dateready FROM employees WHERE id='+IntToStr(id))='') then
        begin
            Inc(iMax);
            SQLExecute('UPDATE employees SET record_count = '+ IntToStr(iMax) + ', dateready=date(''now'') WHERE id='+IntToStr(id));
        end;
    end;

    Form1.GridEmployees.dbUpdate;
end;

.еще странно что в гриде по поиску даты проставления он ничего не ищет, хотя если полный список базы отобразить то видно что дата стоит. а в новой версии работает и ищется всё нормально ...может несовместимость в этом "dateready=date(''now'') "?

В последней версии программы данная ошибка была исправлена.

5,095

(7 replies, posted in Russian)

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


Доработал.

5,096

(3 replies, posted in General)

adam wrote:

have free version?
Latest version is trail version for 30 days right?
after that need to buy licence key right?

thanks

There is no free version.
It's trial version, after trial period you need to buy license key.

5,097

(2 replies, posted in Russian)

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

If (1 <= n) and (n <= 30) then 
begin
    if MessageDlg('Демонстрационная версия. Из 30 дней осталось: ' + IntToStr(n) +'.'+#13+'Вы хотите приобрести лицензию?', mtInformation, mbYes+mbNo, 0) = mrYes then
    begin
        frmMain.PanelXXX.Visible:= True;
    end else
    begin
        frmMain.PanelXXX.Visible:= False;
    end;
end;

if n < 1 then
begin
    if MessageDlg('Пробный период закончился.'+#13+'Вы хотите приобрести лицензию?', mtInformation, mbYes+mbNo, 0) = mrYes then
    begin
        frmMain.PanelXXX.Visible:= True;
    end else
    begin
        frmMain.Close;
    end;
end;


также можете посмотреть данный проект
http://myvisualdatabase.com/forum/viewtopic.php?id=1094

5,098

(3 replies, posted in General)

You use old version of program, please download latest version, it's problem was solved.


Thanks.

5,099

(11 replies, posted in Russian)

yevgeny2003
Сделал для вас проект с примером, для запуска скрипта используйте кнопку "Assign #"

5,100

(18 replies, posted in Reports)

ehwagner
Thank you for the project, actually it's happens every time when report button placed not on main form.
Unfortunately in the moment can't to find reason of that.