savage
Пришлите пожалуйста проект на support@drive-software.com
посмотрю.

9,277

(5 replies, posted in General)

Hello,

You should load information directly in database, not in ComboBox.
Here example, how to import text file to database:

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
     SL: TStringList;
     i,c: integer;
     SQL: string;
begin
     SL := TStringList.Create;
     SL.LoadFromFile ('d:\1.txt');
     c := SL.Count - 1;

     for i := 0 to c do
     begin
          SQL := 'INSERT INTO main (name) VALUES ("' + SL[i] + '");';
          SQLExecute (SQL);
     end;

     SL.Free;
end;

But you can see your information in database, only after restart project.




Please, send me project with description, where you get error message "no such columns"


Thanks.

последние две строки отвечают за работу с датой

procedure Form1_GridEmployees_OnCellClick (Sender: string; ACol, ARow: Integer);
var
   s: string;
begin
     //First method
     Form1.Edit1.Text := SQLExecute('SELECT lastname FROM employees WHERE id = ' + IntToStr(Form1.GridEmployees.dbItemID));
     Form1.Edit2.Text := SQLExecute('SELECT firstname FROM employees WHERE id = ' + IntToStr(Form1.GridEmployees.dbItemID));

     s := SQLExecute('SELECT dateofbirth FROM employees WHERE id = ' + IntToStr(Form1.GridEmployees.dbItemID)); 
     if s <> '' then Form1.DateTimePicker1.Date := SQLDateTimeToDateTime(s) else Form1.DateTimePicker1.Checked := False;
end;

в данном примере используется функция SQLDateTimeToDateTime, которая появилась только в бета версии 1.43
скачать ее можете здесь
https://www.dropbox.com/s/4qdlk4pouldrz … 201.43.zip

9,279

(12 replies, posted in General)

Here you can find documentation of My Visual Database:
http://myvisualdatabase.com/help_en/
created by The Engineer in UK



Tutorial about My Visual Database
http://myvisualdatabase.com/download/MY … MANUAL.pdf
created by Yann YVINEC



Offline version:

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


Для этого придется воспользоваться скриптом, и это можно реализовать двумя способами, с помощью SQL запроса получать данные из базы, либо получать необходимый текст непосредственно из компонента TableGrid, для этого необходимо создать событие OnCellClick у компонента TableGrid в который выводится список клиентов


пример (второй способ закомментирован):

procedure Form1_GridEmployees_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
     //First method
     Form1.Edit1.Text := SQLExecute('SELECT lastname FROM employees WHERE id = ' + IntToStr(Form1.GridEmployees.dbItemID));
     Form1.Edit2.Text := SQLExecute('SELECT firstname FROM employees WHERE id = ' + IntToStr(Form1.GridEmployees.dbItemID));

     //Second method
     //Form1.Edit1.Text := Form1.GridEmployees.Cells[0, ARow];
     //Form1.Edit2.Text :=Form1.GridEmployees.Cells[1, ARow];
end;

К сообщение прилагаю проект с данной реализацией

Поставьте рядом с ComboBox кнопку для создания новой записи, которая вызывает в моем примере форму frmAddCust
затем создайте событие OnAfterClick у кнопки сохранения на этой форме, для определения последней созданной записи используется функция Last_Insert_id, в которой необходимо указать таблицу бд


procedure frmAddCust_Button1_OnAfterClick (Sender: string);
begin
   // если форма видима на которой находится ComboBox    
   if frmClaim.Visible then frmClaim.cbCustomer.dbItemID := Last_Insert_id('customer');
end;

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


Просто не делайте в структуре базы данных поле bookname обязательным  для ввода, а его обязательное заполнение контролируйте скриптом.

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

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

savage
Скачайте еще раз бета версию, исправил чтобы данное сообщение не появлялось.
https://www.dropbox.com/s/4qdlk4pouldrz … 201.43.zip


код думаю верный, только в конце я добавил строчку sBlock:='';
иначе проверка никогда не будет работать если нажали на кнопку BtNewDep хотя бы раз

var
   sBlock: string = '';

procedure AddReader_BtNewDep_OnClick (Sender: string; var Cancel: boolean);
begin
            sBlock:='1';
end;

procedure AddReader_BtAddReaderOK_OnClick (Sender: string; var Cancel: boolean);
begin
       if  sBlock=''  then
         begin
            if (AddReader.Edit1.Text='') OR (AddReader.Edit2.Text='') OR (AddReader.ComboBox1.Text='') then
              begin
                ShowMessage('Не все поля заполнены!'); // ваше сообщение
                 Cancel := True; // отменяем действие кнопки
              end;
         end;
 
       sBlock:=''; 
end;

9,286

(6 replies, posted in General)

einsteinf5

Please, send me your project to support@drive-software.com
With description, what you need do.


Thanks.

9,287

(9 replies, posted in General)

napsanti
1. No, but here you can find something
http://www.softpedia.com/progChangelog/ … 43913.html


2. Component http://myvisualdatabase.com/help_ru/components/dbfile.png have property Type where you can choose method of work, Store file, Link to file or Link to folder.


if you need copy file, you should use script.


But in current version you can't get clickable label in TableGrid to open folder, you can open folder only on form for Add/Edit record.

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


примерное решение я уже написал выше:

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

9,289

(11 replies, posted in Russian)

Я могу вам помочь только с конкретными вопросами по использованию программы.

9,290

(11 replies, posted in Russian)

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

9,291

(8 replies, posted in Russian)

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

(SELECT person.name FROM person WHERE person.id = id_person1)

узнать код последнего запроса к сожалению пока нельзя.

9,292

(6 replies, posted in General)

einsteinf5

You can do it without script, using button with action SQL query and using property Increm. Search of TableGrid, where you should choose button with action SQL query.


Unfortunately I can not understand your SQL query to correct it.

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


Врядли вам нужен UNION, думаю нужно просто добавить эти таблицы в JOIN, при этом отчет нужно сделать с группировкой по полю ZapicNaPriem.id


SELECT
strftime('%d.%m.%Y', ZapicNaPriem.Day) AS Day
,Specializ.Spec
,Doctors.Fio
,Price.NameUsluga
,ZapicNaPriem.id
,ZapicNaPriem.First_Name
,ZapicNaPriem.Last_Name
,ZapicNaPriem.Patronymic

,mkb10client.id
,MKB10Client.Ishod
,mkb10.Code
,mkb10.Diagnoz

FROM ZapicNaPriem

LEFT OUTER JOIN Doctors ON Doctors.id=zapicnapriem.id_Doctors
LEFT OUTER JOIN Specializ ON Specializ.id=zapicnapriem.id_Specializ
LEFT OUTER JOIN Price ON Price.id=zapicnapriem.id_Price

LEFT OUTER JOIN mkb10client ON ZapicNaPriem.id=mkb10client.id_ZapicNaPriem
LEFT OUTER JOIN MKB10 ON MKB10.id=mkb10client.id_mkb10

WHERE
ZapicNaPriem.First_Name LIKE '{First_Name}' and
ZapicNaPriem.Last_Name LIKE '{Last_Name}' and
ZapicNaPriem.Patronymic LIKE '{Patronymic}'

SORT BY ZapicNaPriem.Last_Name;

9,294

(6 replies, posted in General)

Hello,


procedure Form1_Button5_OnClick (Sender: string; var Cancel: boolean);
var
   id: integer;
begin
   id := Form1.GridEmployees.dbItemID;
   SQLExecute ('DELETE FROM employees WHERE id = ' + IntToStr(id));
   Form1.GridEmployees.dbUpdate;
end;

Also I made for you example project, how to delete record using script.

9,295

(9 replies, posted in Russian)

Скачать бета версию 1.43 можете здесь
https://www.dropbox.com/s/4qdlk4pouldrz … 201.43.zip


Что нового?
- Реализовано уведомление о местоположении ошибки в скрипте (25.08.2014)


- Новые функции для скрипта
function SQLDateTimeToDateTime (const DateTime: string) : TDateTime;
function GetUserName: string;
function DirectoryExists(const Directory: string): boolean;
procedure UpdateDatabase(TableName: string);


- Устранена проблема регистра независимого поиска для не английского текста
теперь секция [DisableUpperCase] теряет смысл, все должно работать без лишних настроек, но весь русский текст набитый в базу прошлой версией, будет заглавными буквами, т.к. он в базе хранился именно таким образом для работы регистронезависимого поиска, кроме тех полей, которые были прописаны в [DisableUpperCase]. Все новые данные и которые будут изменены, будут иметь нормальный регистр букв.


- Новый метод для компонента DBImage, позволяющий загрузить рисунок из базы с помощью скрипта
function LoadFromDatabase (TableName, FieldName: string; id: integer): boolean;

d9d9sam
Пожалуйста скачайте версию 1.43
https://www.dropbox.com/s/4qdlk4pouldrz … 201.43.zip


теперь секция [DisableUpperCase] теряет смысл, все должно работать без лишних настроек, но весь русский текст набитый в базу в прошлой версией, будет заглавными буквами, т.к. он в базе хранился именно таким образом для работы регистронезависимого поиска, кроме тех полей, которые были прописаны в [DisableUpperCase]. Все новые данные и которые будут изменены, будут иметь нормальный регистр букв.

Скорей всего в следующей версии я избавлюсь от этой проблемы в целом.

9,298

(4 replies, posted in Russian)

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

9,299

(2 replies, posted in Russian)

Думаю в этом вам поможет этот пример, в котором показываются все номера телефонов при выборе абонента.


Для этого используется свойство Increm. Search компонента TableGrid и дополнительная кнопка с действием Поиск Button7

savage
к сожалению не понял, что вы имеете ввиду )