3,901

(14 replies, posted in FAQ)

К сожалению я близко не знаком с регулярными выражениями, попробуйте так

http:\/\/(.*?)[<>]

протестировать ваше регулярное выражение можно здесь
http://www.rubular.com/


также рекомендую прочитать введение в регулярные выражения
https://habrahabr.ru/post/115825/
http://www.codenet.ru/webmast/php/regexps.php

3,902

(11 replies, posted in Russian)

Расположите на форме Memo1 и Memo2, в Memo1 напишите

привет
привет
здравствуйте

в Memo2 будут строки без повторов

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    i,c: integer;
    sl: TStringList;
begin
    sl := TStringList.Create;

    c := Form1.Memo1.Lines.Count-1;
    for i := 0 to c do
    begin
        if sl.IndexOf(Form1.Memo1.Lines[i]) = -1 then
            sl.Add(Form1.Memo1.Lines[i]);
    end;


    Form1.Memo2.Lines := sl;
    sl.free;
end;

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


Здесь можно найти проект с примером, с реализацией тестового периода и кода активации
http://myvisualdatabase.com/forum/viewtopic.php?id=1434


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



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

3,904

(12 replies, posted in Russian)

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

UPDATE doctor

SET    doctor.firstname='{edDoctorFName}',
       doctor.lastname='{edDoctorLName}',
       doctor.phone='{edDoctorPhone}',
       doctor.mail='{edDoctorMail}',
       doctor.id_hospital={cbDoctorHospital},
       doctor.id_ratingdoctor={cbDoctorRating},
       doctor.id_specialtydoctor={cbDoctorSpecialty}

WHERE  doctor.id={tgDoctor}

3,905

(3 replies, posted in General)

There is no way to use method

 Form1.DBImage1.LoadFromDatabase

if you database table not have primary key called "id"

3,906

(35 replies, posted in Russian)

RZ-007


SQL запросы для нахождения минимума и максимума

SELEC MAX(dates) FROM tablename

SELEC MIN(dates) FROM tablename


найти время затраченное на какое либо действие в скрипте можно так

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    Start: double;
begin
    start := GetTickCount;

    // ваш код

    Form1.Label1.Caption := FormatDateTime('hh:mm:ss', ((GetTickCount-start) div 1000) / 86400  );
end;

3,907

(11 replies, posted in Russian)

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

привет
здравствуйте
привет

3,908

(2 replies, posted in Russian)

Form1.GridEmployees.Columns[i].VerticalAlignment := taAlignTop;

вместо taAlignTop доступны также значения

taAlignBottom - нижнее вертикальное выравнивание
taVerticalCenter - центральное выравнивание

3,909

(14 replies, posted in FAQ)

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

RegExp := TRegExp.Create('http://(.*?)</h');

3,910

(3 replies, posted in General)

procedure Form1_GridEmployees_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
     Form1.DBImage1.Clear;
     Form1.DBImage1.LoadFromDatabase('employees', 'photo', Form1.GridEmployees.dbItemID);
end;

begin
end.


Project with example
http://myvisualdatabase.com/forum/misc. … download=1

3,911

(12 replies, posted in Russian)

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

3,912

(4 replies, posted in General)

Hello.


Please attach your project and describe steps to repeat this error.

3,913

(23 replies, posted in General)

AD1408 wrote:

Hi Dmitry,


Thank you so much.........


The above provides the solution I was looking for.
One thing is missing tho... When overwriting on existing saved file there is no warning dialog such as "Are you sure you want to overwrite xyz.file"
(I thought windows would provide the warning dialog but it doesn't)


Just add this line

SaveDialog.Options := ofOverwritePrompt+ofHideReadOnly+ofEnableSizing;

after

SaveDialog.Filter := 'Database|*.db|Any file|*.*';

3,914

(12 replies, posted in Russian)

После этой строчки

doctor.id_specialtydoctor={cbDoctorSpecialty} 

не должно быть запятой

3,915

(12 replies, posted in Russian)

вместо

{tgDoctor.dbItemId}

просто

{tgDoctor}

3,916

(13 replies, posted in Russian)

комментарии

var
    isChanged: boolean; // необходимо, чтобы знать если пользователь открывал ComboBox


procedure frmEmployee_cbFavoriteFood_OnCloseUp (Sender: string);
begin
    isChanged := True; // запоминаем, если пользователь открывал ComboBox
end;

procedure frmEmployee_OnShow (Sender: string; Action: string);
var
    idEmp: string;
    idFood: integer;
    Results: TDataSet;
    i,c: integer;
begin
    isChanged := False;
    frmEmployee.cbFavoriteFood.SetAllCheckBoxes(false);

    if Action='ShowRecord' then // если окно появилось для показа существующей записи
    begin
        idEmp := IntToStr(frmEmployee.bSave.dbGeneralTableID); // запоминаем id редактируемой записи
        SQLQuery('SELECT id_food FROM FavoriteFood WHERE id_employees='+idEmp, Results); // sql запрос для получения значений поля id_food для редактируемой записи, в этих значениях сохранены выбранные пункты в ComboBox

        while not Results.Eof do // читаем результат sql запрос
        begin
            idFood := Results.FieldByName('id_food').asInteger; // id еды, которую необходимо отметить в ComboBox

            c := frmEmployee.cbFavoriteFood.Items.Count-1;
            for i := 1 to c do // цикл перебора значений в ComboBox для нахождения и отметки необходимого пункта
            begin
                if frmEmployee.cbFavoriteFood.dbIndexToID(i) = idFood then
                    frmEmployee.cbFavoriteFood.ItemsChecked[i] := True;
            end;
                       
            Results.Next; // переход к следующей записи результата sql запроса
        end;

    end;
end;

procedure frmEmployee_bSave_OnAfterClick (Sender: string);
var
    i,c: integer;
    idFood: string;
    idEmp: string;
begin
    if isChanged then // если пользователь открывал ComboBox, значит он там возможно что то изменил
    begin
            idEmp := IntToStr(frmEmployee.bSave.dbGeneralTableID); // запоминаем id редактируемой записи
            SQLExecute('DELETE FROM FavoriteFood WHERE id_employees='+idEmp); // удаляем записи о выбранных значениях в ComboBox
        
            c := frmEmployee.cbFavoriteFood.Items.Count-1;
            for i := 1 to c do // цикл перебора пунктов в ComboBox
            begin
                if frmEmployee.cbFavoriteFood.ItemsChecked[i] then // если пункт в ComboBox выбран, то создаем об этом запись в БД
                begin
                    idFood := IntToStr(frmEmployee.cbFavoriteFood.dbIndexToID(i));
                    SQLExecute('INSERT INTO FavoriteFood (id_employees, id_food) VALUES('+idEmp+','+idFood+')');
                end;
            end;
    end;
end;


чтобы сообщение не выскакивало, найдите в коде и удалите строку ShowMessage
просто забыл сам удалить

3,917

(6 replies, posted in Russian)

Не получиться реализовать подобную сортировку без создания дополнительных полей.


Версия 2.8
http://myvisualdatabase.com/download/myvisualdb2.8.exe



Добавил в проект сортировку по возрастанию и убыванию.

3,918

(23 replies, posted in General)

Check it out

procedure MenuClick1 (Sender: string);
var
    SaveDialog: TSaveDialog;
    sFileName: string;
begin
    sFileName := FormatDateTime('dd-mm-yyyy hh-nn-ss', now)+'.db';

    SaveDialog := TSaveDialog.Create(Form1);
    SaveDialog.FileName := sFileName;
    SaveDialog.Filter := 'Database|*.db|Any file|*.*';

    if SaveDialog.Execute then
    begin
        CopyFile(ExtractFilePath(Application.ExeName)+'sqlite.db', SaveDialog.FileName);
    end;

    SaveDialog.Free;
end;

3,919

(12 replies, posted in Russian)

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

3,920

(13 replies, posted in Russian)

Сделал для вас пример, сохранение значений выбранных в ComboBox


Если подойдет, подумаем и над связанными списками )

3,921

(12 replies, posted in Russian)

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


Посмотрите пожалуйста данный пример
http://myvisualdatabase.com/forum/misc. … download=1

3,922

(18 replies, posted in Russian)

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



Также могу посоветовать проверить тип данного поля с помощью инструмента MySQL Workbench, данное поле должно быть типа Integer

3,923

(6 replies, posted in Russian)

вместо строчки скрипта

frmEmployee.edYear.Text := FormatDateTime('yyyy', now);

замените на, чтобы указывать число в ручную

frmEmployee.edYear.Text := '15';

также в данном примере реализована сортировка.

3,924

(6 replies, posted in Russian)

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


Судя по вашим данным, вам необходимо чтобы счетчик сбрасывался при изменении второй части значения (15,16)
Это не получиться реализовать с помощью поля СЧЕТЧИК


Скачайте пожалуйста другой пример, в нем счетчик сбрасывается на 1, когда меняется текущий год:

3,925

(12 replies, posted in Russian)

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

Form1.cbDoctorSpecialty.dbItemID := SQLExecute('Select id_specialtydoctor from doctor where id='+Form1.tgDoctor.sqlValue);