4,201

(6 replies, posted in Russian)

Лучше приложите полностью проект (zip файл без exe и dll)

4,202

(6 replies, posted in Russian)

Пожалуйста привидите пример информации, какие у вас таблицы, связи, поля? Что именно должно появится в компонентах?
Я не смогу помочь не зная, что конкретно вам необходимо.

4,203

(37 replies, posted in Russian)

borsai wrote:

Добрый вечер Дмитрий. А если в таблице присутствует столбец "счетчик". Как в данном случае запретить редактировать данный столбец ?

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


Поправлю в следующей версии.

4,204

(187 replies, posted in General)

krokodil_sk wrote:

I mean create :
Script
Functions → System → GetComputerName : string

Brgds,

Krokodil

Do you need an example how to use it in the login project?

4,205

(187 replies, posted in General)

krokodil_sk wrote:

Hello Dmitry,

i think GetComputerName function need everybody with login form.

Brgds,

Krokodil

Hello.


Sorry but I can't understand your question.
What exactly do you mean?

4,206

(6 replies, posted in Russian)

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


Пожалуйста привидите конкретный пример, какие именно данные должны там выводились.


Возможно речь идет про связанные списки, пример их реализации можно посмотреть здесь
http://myvisualdatabase.com/forum/viewtopic.php?id=1081

4,207

(10 replies, posted in Russian)

bemorhona-qt
Вы можете просто не позволять создавать телефонный номер,пока не будет заполнено обязательное поле, например фамилия абонента.


Исправить это не совсем просто, в ближайшее время не смогу, занят другим функционалом.

4,208

(2 replies, posted in Reports)

Hello.


You can change it by using calculated field.

Example:

case BoolField when 1 then 'True' when 0 then 'False' else '' end

Then just add this calculated field to your report.

4,209

(13 replies, posted in General)

knobby
There is no need to have the field "accountnumber" in the table "CALLS", because it's information belong  to CLIENT.
The table "CALLS" must have foreign key to "CLIENT" table.


Please attach your project with CSV file (zip file without exe and dlls), I will try to help you.

4,210

(32 replies, posted in Russian)

RZ-007
Добавил для TWebBrowser методы
ClickElement
GetAllInnerText


Скачайте альфа версию
http://myvisualdatabase.com/forum/viewtopic.php?id=2887


пример:

var
    Web: TWebBrowser;

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
    Web.Navigate('http://myvisualdatabase.com');

    while Web.ReadyState <> 4 do Application.ProcessMessages;
    if Web.ClickElement('a', 'FORUM') then ShowMessage('found and clicked FORUM');

    while Web.ReadyState <> 4 do Application.ProcessMessages;
    if Web.ClickElement('span', 'General') then ShowMessage('found and clicked General');

    // Get all span elements
    ShowMessage(Web.GetAllInnerText('span'));
end;

procedure Form1_OnShow (Sender: string; Action: string);
begin
    Web := TWebBrowser.Create(Form1);
    TWinControl(Web).Parent := Form1.Panel1;
    Web.Width := Form1.Width;
    Web.Height := Form1.Height-50;
    Web.Silent := 1;
end;


Проект:

4,211

(5 replies, posted in Script)

krokodil_sk wrote:

1. Attached example project

Krokodil


I changed frxRTFExport1 to frxXLSExport1 in your script and made small change in the test.fr3

Игоревич
Скачал проект снова и я честно говоря запутался, дату удаления пишет в базу, судя по скрипту поле dateofbirth не является датой удаления.

4,213

(10 replies, posted in Russian)

bemorhona-qt wrote:

Короче я понял суть. А когда вы сможете устранить это обстоятельство, так как пропадет суть создания программы, в котором имеется такая проблема. По моему это очень важно и почему до сих пор никто об этом не обсуждал на данном форуме? Либо я не нашел веточку, где обсуждается эта проблема.

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

4,214

(37 replies, posted in Russian)

Игоревич wrote:

Спс все работает. Я надеюсь вы функцию GetComputerName добавите в версию 2,9.

версии 2.9 не будет.

4,215

(10 replies, posted in Russian)

К сожалению это не ошибка.


Дело в том, что перед созданием дочерней записи (телефонного номера), должна быть сохранена родительная запись (абонент), т.о. когда нажимаете кнопку "Add number", абонент сохраняется, чтобы уже было к чему привязать телефонный номер.


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


Пока нет возможности устронить это.

4,216

(37 replies, posted in Russian)

Игоревич wrote:

В этой версии я так понял есть баг. Создал кнопку (показать форму) выпадает ошибка. Скрин в сообщении.https://cloud.mail.ru/public/6sDi/D4AB2Q5r8

https://cloud.mail.ru/public/6sDi/D4AB2Q5r8

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

1.


procedure Form1_TableGrid1_OnChange (Sender: string);
var
   i,c: integer;
begin
     Form1.TableGrid1.Columns.Count;
     c := Form1.TableGrid1.RowCount - 1;
     for i := 0 to c do
     begin
         if Form1.TableGrid1.dbIndexToID(i) = 1 then Form1.TableGrid1.Cell[0,i].Color := clGreen;
         if Form1.TableGrid1.dbIndexToID(i) = 2 then Form1.TableGrid1.Cell[0,i].Color := clBlue;
         if Form1.TableGrid1.dbIndexToID(i) = 3 then Form1.TableGrid1.Cell[0,i].Color := clYellow;
     end;
end;

about colors:

To specify any colour, you can use the number hexadecimal
Example: Form1.Label1.Font.Color := $00DDEEFF;
 where: FF - red, EE - green, DD - blue.

 In addition, you can use the text label colours
Example: Form1.Label1.Font.Color := clWindowText;
Example: Form1.Label1.Font.Color := clRed;

The following list the color constants:
 clBlack - Black
 clMaroon - Maroon
 clGreen - Green
 clOlive - Olive green
 clNavy - Navy blue
 clPurple - Purple
 clTeal - Teal
 clGray - Gray
 clSilver - Silver
 clRed - Red
 clLime - Lime green
 clYellow - Yellow
 clBlue - Blue
 clFuchsia - Fuchsia
 clAqua - Aqua
 clWhite - White


The list the colors that map to the closest matching color in the system palette:
 clDefault - The default color for the control to which the color is assigned.
 clActiveBorder - Current border color of the active window.
 clActiveCaption - Current color of the title bar of the active window.
 clAppWorkSpace - Current color of the application workspace.
 clBackground - Current background color of the Windows desktop.
 clBtnFace - Current color of a button face.
 clBtnHighlight - Current color of the highlighting on a button.
 clBtnShadow - Current color of a shadow cast by a button.
 clBtnText - Current color of text on a button.
 clCaptionText - Current color of the text on the title bar of the active window.
 clGradientActiveCaption - Windows 98 or Windows 2000: Right side color in the color gradient of an active window's title bar. clActiveCaption specifies the left side color.
 clGradientInactiveCaption - Windows 98 or Windows 2000: Right side color in the color gradient of an inactive window's title bar. clInactiveCaption specifies the left side color.
 clGrayText - Current color of text that is dimmed.
 clHighlight - Current background color of selected text.
 clHighlightText - Current color of selected text
 clHotLight
 clInactiveBorder - Current border color of inactive windows.
 clInactiveCaption - Current color of the title bar of inactive windows.
 clInactiveCaptionText - Current color of the text on the title bar of an inactive window.
 clInfoBk - Windows 95 or NT 4.0 only: Background color for tool tip controls.
 clInfoText - Windows 95 or NT 4.0 only: Text color for tool tip controls.
 clMenu - Current background color of menus.
 clMenuBar
 clMenuHighlight
 clMenuText - Current color of text on menus.
 clScrollBar - Current color for the of scroll bar track.
 cl3DDkShadow - Windows 95 or NT 4.0 only: Dark shadow for three-dimensional display elements.
 cl3DLight - Windows 95 or NT 4.0 only: Light color for three-dimensional display elements (for edges facing the light source).
 clWindow - Current background color of windows.
 clWindowFrame - Current color of window frames.
 clWindowText - Current color of text in windows.


2. You can use INI files and class TIniFile
Example, how to read from ini file

procedure Form1_OnShow (Sender: string; Action: string);
var
   ini: TIniFile;
   s: string;
begin
     ini := TiniFile.Create(ExtractFilePath(Application.ExeName) +'file.ini');
     s := ini.ReadString('SectionName1', 'ValueName1', '');
     ini.Free;
end;

Example of read file:

[SectionName1]
ValueName1=Hello
ValueName2=Bye
ValueName3=Thanks

[SectionName2]
ValueName1=bla bla

4,218

(5 replies, posted in Script)

1. Please attach your project.


2. SQL is just text, you can write multi line text, example:

s := 'SELECT fieldname FROM tablename ' + 
     'WHERE id=1'; 

The message says that you have error in your script.
Please attach your project and describe steps to introduce the error.

4,220

(5 replies, posted in General)

Split bars is not supported in the current version.

memult wrote:

Ну тут именно вопрос как будет правильней и без особых трудозатрат. Подскажите, какой численный предел у значения record_count?

Как бы я сделал, уже описал.
Предел 2^63-1 = 9223372036854775807

memult wrote:

Буду пробовать, спасибо.
А если к примеру, я понимаю, что записей в базе будет не больше чем к примеру 1 миллион. (именно записи, которым автоматически присваивается номер в record_count при добавлении из программы)
И буду импортировать новые записи из CSV со значением record_count начиная со значения 1 000 001 и далее? А дальше вести этот список?

Можно конечно и так, все время импортировать в конец, я думал нужна возможность именно вставить n-количество записей в любую позицию.

В данном случае необходимо придумать алгоритм импорта. Я бы сделал так:


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


2. При импорте скрипт должен спросить, с какой позиции будем начинать импорту в базу.


3. Изменяем значение поля record_count для существующих записей, которые идут ниже вставляемой позиции, а именно прибавляем к каждой записи поля record_count количество записей, которые будут импортированы.
Т.е. если значение поля было 50, а импортируемых записей будет 10, то значение поля должно поменятся на 60.
пример:

UPDATE tablename SET record_count = record_count+10 WHERE record_count > [указываем с какой позиции будем вставлять данные]

4. Делаем импорт, значение record_count для импортируемых записей вычисляем сами, т.е. просто по порядку начиная с начальной позиции.



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

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


Для этого необходимо воспользоваться конструкцией CASE WHEN THEN ELSE END

1. способ

CASE expression
WHEN expression1 THEN Result1
WHEN expression2 THEN Result2
ELSE ResultN
END

2. способ

CASE
WHEN Boolean_expression1 THEN Result1
WHEN Boolean_expression2 THEN Result2
ELSE ResultN
END

примеры

CASE WHEN status=1 THEN field1+field2 ELSE 0 END

или так

CASE status WHEN 1 THEN  field1+field2 ELSE 0 END

Igor.Stepanov
Готово.