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

SQLExecute('SELECT CONCAT_WS(char(13), `id`) FROM employees WHERE ' + 'datetime(created) > datetime("'+sDateLogout+'") AND datetime(created) < datetime("'+sDateLogin+'")');

SQLExecute('UPDATE users SET logindate=now() WHERE id='+IntToStr(idUser));
prahousefamily wrote:

Why in memo can not use Shortcut CTRL + A (Select All)

Fixed, please download latest beta version
https://www.dropbox.com/s/1y0jek64gzfdy … a.zip?dl=0



prahousefamily wrote:

and
How To Show line number in Memo ???

It's not support by component.

3,853

(17 replies, posted in Russian)

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


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


Также учитывайте, что у меня будет пустая база (делать импорт у меня нет времени), поэтому опишите какие данные я должен внести, чтобы воспроизвести ошибку.

3,854

(5 replies, posted in General)

radsoft
You should edit foreign key to apply fix.
Please attach your project.

3,855

(12 replies, posted in Russian)

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


Как именно их показать? По одному? Тогда что должно быть в соседних колонках?
Если не по одному, тогда достаточно просто сортировки, чтобы увидеть дубликаты.

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


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

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    s: string;
    d, m, y: integer;
begin
    s := '26.12.2016'; // ваша дата из CSV файла

    if ValidInt(s[1]+s[2]) then d := StrToInt(s[1]+s[2]);
    if ValidInt(s[4]+s[5]) then m := StrToInt(s[4]+s[5]);
    if ValidInt(s[7]+s[8]+s[9]+s[10]) then y := StrToInt(s[7]+s[8]+s[9]+s[10]);

    ShowMessage(d);
    ShowMessage(m);
    ShowMessage(y);
end;

alduyr
В файле reg.ini запоминается дата первого запуска программы, при его удалении, соотвественно это информация теряется. Обычно подобную информацию хранят в системном реестре, но к сожалению старая версия программы не имеет функций для работы с системным реестром.


Примерно в середине вашего скрипта есть строки

begin

end.

удалите их. Все что в скрипте идет после end. будет проигнорировано, соотвественно и все фунции которые следуют за этим перестанут работать.

3,858

(5 replies, posted in Russian)

Возможно вы написали скрипт, который сам себя удаляет? т.е. удаляет или очищает содержимое файла script.pas ?


Приложите пожалуйста ваш проект, в котором присутствует файл script.pas с содержимым, протестирую.

3,859

(8 replies, posted in General)

AD1408
I checked your project, but in frmSaleInv.tgSaleInv there is no column with number 9.


Also on form frmSaleTransHist I can't find component with name edSaleTransInvTotal

3,860

(5 replies, posted in General)

radsoft
Hello.


It seem you found a bug.  When you edit foreign key, after that this key loses its constraint.


Please download latest beta version and try to edit foreign key to fix the problem:
https://www.dropbox.com/s/1y0jek64gzfdy … a.zip?dl=0

3,861

(17 replies, posted in Russian)

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

3,862

(4 replies, posted in General)

prahousefamily
There is no any limit for maximum rows, if you have large files, it just take more time and memory of PC.

3,863

(18 replies, posted in Russian)

Popkov-alex
В настройках кнопки "Сохранить запись" и в настройках грида "Settings", есть возможность указать сортировку сразу по нескольким столбцам. Выберите из выдающего списка "Сортировка" значение ORDER BY, затем в появившемся текстовом поле перечислите столбцы через запятую, по которым необходимо отсортировать данные.

3,864

(12 replies, posted in Russian)

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


Что вы подразумеваете под дубликатом относительно колонки? Обычно когда говорят о дубликатах, подразумевают записи, а не колонки. И в каком виде нужно показать дубликат?

3,865

(5 replies, posted in Russian)

Т.е. перед открытием проекта в MVD, в папке присутствует файл Script.pas, в котором содержится скрипт (для проверки этого можете открыть его любым текстовым редактором), и после открытия проекта в MVD этот скрипт исчезает?

3,866

(5 replies, posted in Russian)

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


Программа сама не могла удалить файл script.pas, также я не вижу причин этого из за перехода на Windows 7.


Возможно вы удалили файл script.pas, чтобы скрыть текст скрипта, т.к. проект работает и без этого файла, достаточно файла script.dcu, но чтобы открыть проект снова в MVD, файл script.pas все же необходим.


Редактирование файла *.vdb не имеет отношение к этой проблеме.


Проект не работает на Windows 7 ?

3,867

(1 replies, posted in Russian)

Выполняет деление и возвращает остаток от деления, подрбоней
http://www.delphibasics.ru/Mod.php


в данном скрипте необходима, чтобы раскрашивать строчки через одну.

3,868

(10 replies, posted in Russian)

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

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    i: integer;
 S : String;
begin
    for i := trunc(Form1.Edit2.Value) to trunc(Form1.Edit3.Value) do
    begin
         Form1.Memo1.Lines.Add(Form1.Edit1.Text + IntToStr(i) + Form1.Edit4.Text);

         S:=Form1.Edit1.Text + IntToStr(i) + Form1.Edit4.Text;

         SQLExecute ('INSERT INTO AAA (aaa) VALUES ("'+ S +'");');
   end;

   Form1.TableGrid1.dbUpdate;
end;
memult wrote:

Добрый день,спасибо за скрипт по расскраске записей. Немного не понял как вывести это добавленное количество записей в ShowMessage, какая переменная отвечает за счетчик записей?

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


Количество записей можно узнать в этой переменной slLastAddedID.Count

ShowMessage( IntToStr(slLastAddedID.Count) );

alduyr
Проект с примером приложен к сообщению.


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



При запуске проекта, в папке появится файл reg.ini, в котором хранится дата первого запуска, а также ключ, после его ввода.

3,871

(36 replies, posted in Russian)

bemorhona-qt wrote:

дайте ссылку на книгу

Ссылка на книгу в первом сообщении данной темы.

3,872

(4 replies, posted in General)

prahousefamily
Usually it's not problem to store few millions records in a database, but are you really need to show  so much data in a TableGrid?

Добавил такую возможность.


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



Создается глобальная функция OnSQLException по перехвату исключений, связанных с базой данных:

// global event for all exceptions related database
function OnSQLException(Sender: TObject; Msg: string; SQL: string): boolean;
begin
    // exception from functions SQLExecute or SQLQuery
    if Sender=nil  then
    begin
        result := true; // to prevent system message
        ShowMessage(Msg); // your message
    end;

    // exception from button frmEmployee.bSaveEmp
    if Sender = frmEmployee.bSaveEmp then // if exception from button frmEmployee.bSaveEmp
    begin
        if Pos('UNIQUE constraint failed', Msg)=1 then
        begin
            result := True; // to prevent system message
            MessageBox('Person already exists.', 'Error', MB_OK+MB_ICONWARNING);
        end;
    end;
end;



procedure Form1_Button5_OnClick (Sender: string; var Cancel: boolean);
begin
    SQLExecute('INSERT INTO employees (lastname) VALUES ("ivanov")');
end;


procedure Form1_Button6_OnClick (Sender: string; var Cancel: boolean);
var
    Results: TDataSet;
begin
    SQLQuery('INSERT INTO employees (lastname) VALUES ("ivanov")', Results);
end;


Проект с примером:

3,874

(36 replies, posted in Russian)

Дописал еще несколько глав.

3,875

(48 replies, posted in General)

I see mistake.


1. You should create event "Form1_tgCompany_OnChange" on tab "Events"
You have code of event, but have not created it.


2. Also fix code:

procedure Form1_tgCompany_OnChange (Sender: string);
var
    G: TGraphic;
    i,c: integer;
    sExt: string;
    sFile: string;
begin
    Form1.tgCompany.Columns[1].Visible := False; // hide first column, where we can get image file name
    Form1.tgCompany.Columns.InsertGraphicColumn(1); // insert Graphic Column, index of column is 1

    c := Form1.tgCompany.RowCount-1;
    for i := 0 to c do
    begin
        sFile := Form1.tgCompany.Cells[2,i];