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
My Visual Database → Posts by DriveSoft
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
maxkyl
Отправьте пожалуйста ваш проект на support@drive-software.com
со ссылкой на данную тему.
v_pozidis
Do you mean Popup Menu? when you right click of mouse?
Приветствую,
Скачайте пожалуйста данные примеры:
http://myvisualdatabase.com/forum/misc. … download=1
http://myvisualdatabase.com/forum/viewt … 9305#p9305
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;
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, которым является поле с типом изображение.
также это плохая идея, хранить файлы непосредственно в базе данных, т.к. в будущем такая БД будет работать медленно.
Please send me project to support@drive-software.com
with link to this topic.
v_pozidis
Definitely not. To use MySQL, you should use Windows or Linux OS server.
По какой то причине в таблице web на самом деле не создался внешний ключ id_catweb в файле базы данных sqlite.db,
просто удалите файл sqlite.db и он при запуске проекта пересоздатся.
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.
v_pozidis
What kind of cloud server? What there is an operating system?
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
Приложите пожалуйста ваш проект, посмотрю как это можно реализовать.
Ограничений на количество условий поиска быть не должно.
для 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;
Yes, why not. If you find some bugs, just let me know and I'll fix it.
Приветствую,
на сколько я помню, Hint автоматически появится, если текст не влезает в ячейку, а если влезает, то в нем смысла нет.
Приветствую,
можно так
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;
Dreada
К сожалению пока нет возможности задать сортировку для текста таким образом.
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.
Хорошо, а есть возможность работы по сети? И можно как-то выгрузить данные из MySQL бд?
Программа поддерживает работу с MySQL, данная СУБД в принципе предназначена для работы по сети.
Выгрузить данные из MySQL можно как сторонними приложениями, так и с помощью скрипта.
delphinsl
Отправьте пожалуйста проект на support@drive-software.com
посмотрю в чем дело.
sergikmelnik
Извиняюсь, почему то в дистрибутив попал старый файл, перезалил, перепроверил, скачайте пожалуйста снова )
http://myvisualdatabase.com/download/my … 2.031a.exe
My Visual Database → Posts by DriveSoft
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi