6,401

(5 replies, posted in Script)

v_pozidis wrote:

I mean the menu bar in the program where we choose the file

Here you can find an example
http://myvisualdatabase.com/forum/viewtopic.php?id=1432

6,402

(8 replies, posted in Russian)

maxkyl
Отправьте пожалуйста ваш проект на support@drive-software.com
со ссылкой на данную тему.

6,403

(5 replies, posted in Script)

v_pozidis
Do you mean Popup Menu? when you right click of mouse?

6,404

(2 replies, posted in Russian)

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


Скачайте пожалуйста данные примеры:
http://myvisualdatabase.com/forum/misc. … download=1
http://myvisualdatabase.com/forum/viewt … 9305#p9305

6,405

(2 replies, posted in Script)

You can create NOT NULL fields to prevent enter empty values.


Also you can do it using script, for that you should create event OnClick for button "SaveRecord"
example:

procedure Form2_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
    if (Form2.Edit1.Text='') or (not Form2.CheckBox1.Checked) or (Form2.ComboBox1.dbItemID=-1) then
    begin
        ShowMessage('Please fill all fields.');
        Cancel := True;
    end;
end;

6,406

(1 replies, posted in General)

It's problem not related to My Visual Database.


Probably you firewall blocks the connection, or your Internet connection working using proxy, or your administrator close port 465 and so on...


I can not tell you the exact reason.

Nervis
1. Установите для CheckBox-ов свойство AllowGrayed = True
т.о. у компонента можно будет установить неизвестное состояние, которое игнорируется при поиске.


2. Используя кнопку с действием Поиск, критерии поиска используют логику "И", в вашем случае необходима логика "ИЛИ", ее можно реализовать только с помощью кнопки с действием SQL запрос.


3. У формата CSV нет возможности содержать поля типа BLOB, которым является поле с типом изображение.
также это плохая идея, хранить файлы непосредственно в базе данных, т.к. в будущем такая БД будет работать медленно.

6,408

(1 replies, posted in SQL queries)

Please send me project to support@drive-software.com
with link to this topic.

6,409

(30 replies, posted in General)

v_pozidis
Definitely not. To use MySQL, you should use Windows or Linux OS server.

6,410

(2 replies, posted in Russian)

По какой то причине в таблице web на самом деле не создался внешний ключ id_catweb в файле базы данных sqlite.db,
просто удалите файл sqlite.db и он при запуске проекта пересоздатся.

6,411

(8 replies, posted in FAQ)

You can show error message or something else when record already exists.

if q > 0 then 
begin
   ShowMessage('Record exists: '+ arrStr[0] +','+ arrStr[1]);
   Continue;
end;

Also you can check, if people forget to remove the headers.

// check first line in CSV
if i=0 then 
begin
   if arrStr[0]='column name1' and arrStr[0]='column name2'  then  Continue; // ignore line with headers
end;



result:

procedure Form1_Button2_OnClick (Sender: string; var Cancel: boolean);
var
   OpenDialog: TOpenDialog;
   sl: TStringList;
   arrStr: array of string;

   i,c: integer;
   q: integer;
begin
     OpenDialog := TOpenDialog.Create(Form1);
     OpenDialog.InitialDir := ExtractFileDir(Application.Exename);

     if OpenDialog.Execute then
     begin
          sl := TStringList.Create;
          sl.LoadFromFile (OpenDialog.FileName);


          c := sl.Count - 1;
          for i := 0 to c do
          begin
               arrStr := SplitString(sl[i], ';');

               // check first line in CSV
               if i=0 then 
               begin
                  if arrStr[0]='column name1' and arrStr[1]='column name2'  then  Continue; // ignore line with headers
               end;

               // LastName
               if arrStr[0] <> '' then arrStr[0] := ''''+ ReplaceStr(arrStr[0], '''', '''''') + ''''
                   else arrStr[0] := 'NULL';

               // FirstName
               if arrStr[1] <> '' then arrStr[1] := ''''+ ReplaceStr(arrStr[1], '''', '''''') + ''''
                   else arrStr[1] := 'NULL';

              q := SQLExecute('SELECT COUNT(*) FROM base WHERE lastname=' + arrStr[0] + ' AND  firstname='+ arrStr[1] );
              if q > 0 then 
              begin
                 ShowMessage('Record exists: '+ arrStr[0] +','+ arrStr[1]);
                 Continue;
              end;

               SQLExecute ('INSERT INTO base (lastname, firstname) VALUES ('+ arrStr[0] +','+ arrStr[1]+');');


               Form1.Label1.Caption := IntToStr(i+1) + ' of ' + IntToStr(c+1);
               Application.ProcessMessages;
          end;



          sl.Free;
          Form1.TableGrid1.dbUpdate;
     end;
     OpenDialog.Free;
end;

begin
end.

6,412

(30 replies, posted in General)

v_pozidis
What kind of cloud server? What there is an operating system?

6,413

(8 replies, posted in FAQ)

You can do sql query before insert data, to check duplicate, if duplicate is found, skip cycle (if q > 0 then Continue;)


procedure Form1_Button2_OnClick (Sender: string; var Cancel: boolean);
var
   OpenDialog: TOpenDialog;
   sl: TStringList;
   arrStr: array of string;

   i,c: integer;
   q: integer;
begin
     OpenDialog := TOpenDialog.Create(Form1);
     OpenDialog.InitialDir := ExtractFileDir(Application.Exename);

     if OpenDialog.Execute then
     begin
          sl := TStringList.Create;
          sl.LoadFromFile (OpenDialog.FileName);


          c := sl.Count - 1;
          for i := 0 to c do
          begin
               arrStr := SplitString(sl[i], ';');

               // LastName
               if arrStr[0] <> '' then arrStr[0] := ''''+ ReplaceStr(arrStr[0], '''', '''''') + ''''
                   else arrStr[0] := 'NULL';

               // FirstName
               if arrStr[1] <> '' then arrStr[1] := ''''+ ReplaceStr(arrStr[1], '''', '''''') + ''''
                   else arrStr[1] := 'NULL';

              q := SQLExecute('SELECT COUNT(*) FROM base WHERE lastname=' + arrStr[0] + ' AND  firstname='+ arrStr[1] );
              if q > 0 then Continue;

               SQLExecute ('INSERT INTO base (lastname, firstname) VALUES ('+ arrStr[0] +','+ arrStr[1]+');');


               Form1.Label1.Caption := IntToStr(i+1) + ' of ' + IntToStr(c+1);
               Application.ProcessMessages;
          end;



          sl.Free;
          Form1.TableGrid1.dbUpdate;
     end;
     OpenDialog.Free;
end;

begin
end.

Nervis
Приложите пожалуйста ваш проект, посмотрю как это можно реализовать.


Ограничений на количество условий поиска быть не должно.

6,415

(3 replies, posted in Russian)

для ComboBox посложней, пример:

var
    s: string;
    i: integer;
begin
    s := SQLExecute('SELECT grad.gradname FROM application LEFT OUTER JOIN grad ON grad.id=application.id_grad WHERE application.id='+IntToStr(Form1.TableGrid1.dbItemID) );
    i := frmApplication.ComboBox3.Items.IndexOf(s);
    if i<>-1 then frmApplication.ComboBox3.dbDefaultID := i;

6,416

(2 replies, posted in General)

Yes, why not. If you find some bugs, just let me know and I'll fix it.

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


на сколько я помню, Hint автоматически появится, если текст не влезает в ячейку, а если влезает, то в нем смысла нет.

6,418

(3 replies, posted in Russian)

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


можно так

procedure Form1_Button2_OnAfterClick (Sender: string);
begin
   frmApplication.Edit1.dbDefaultValue := '';
end;

procedure Form1_Button2_OnClick (Sender: string; var Cancel: boolean);
begin
   frmApplication.Edit1.dbDefaultValue := 'jkhkhjgvkvg';
end;

1. Почему бы для определения состояний узла не использовать ComboBox со словарной таблицей, где вы перечислите эти три состояния, так было бы правильней.

Если использовать CheckBoxы, поиск придется организовать использую SQL запрос.


2.
Пример

procedure Form1_CheckBox3_OnMouseUp (Sender: string; MouseLeft, MouseRight, MouseMiddle: boolean; Shift, Alt, Ctrl: boolean; X, Y: Integer);
begin
    Form1.CheckBox1.Checked := False;
    Form1.CheckBox2.Checked := False;
    Form1.CheckBox3.Checked := True;
end;

procedure Form1_CheckBox2_OnMouseUp (Sender: string; MouseLeft, MouseRight, MouseMiddle: boolean; Shift, Alt, Ctrl: boolean; X, Y: Integer);
begin
    Form1.CheckBox1.Checked := False;
    Form1.CheckBox2.Checked := True;
    Form1.CheckBox3.Checked := False;
end;

procedure Form1_CheckBox1_OnMouseUp (Sender: string; MouseLeft, MouseRight, MouseMiddle: boolean; Shift, Alt, Ctrl: boolean; X, Y: Integer);
begin
    Form1.CheckBox1.Checked := True;
    Form1.CheckBox2.Checked := False;
    Form1.CheckBox3.Checked := False;
end;

6,420

(1 replies, posted in General)

Example for you:

6,421

(20 replies, posted in Russian)

Dreada
К сожалению пока нет возможности задать сортировку для текста таким образом.

reberkurdi80 wrote:

hello . now i  can make software for  company by MySQL ...? it is  working no have error or no wait final version ?

You can start now to make it and use for company it when final version will be ready.

qazw wrote:

Хорошо, а есть возможность работы по сети? И можно как-то выгрузить данные из MySQL бд?

Программа поддерживает работу с MySQL, данная СУБД в принципе предназначена для работы по сети.
Выгрузить данные из MySQL можно как сторонними приложениями, так и с помощью скрипта.

delphinsl
Отправьте пожалуйста проект на support@drive-software.com
посмотрю в чем дело.

sergikmelnik
Извиняюсь, почему то в дистрибутив попал старый файл, перезалил, перепроверил, скачайте пожалуйста снова )
http://myvisualdatabase.com/download/my … 2.031a.exe