kovalenko
Нужно заменить Text на sqlValue там, где значение компонента используется в SQL запросах.
2,951 2017-09-13 17:47:44
Re: Не сохранить текст вида ООО "ОГОНЬ" (6 replies, posted in Russian)
2,952 2017-09-13 12:29:28
Re: Не сохранить текст вида ООО "ОГОНЬ" (6 replies, posted in Russian)
поправьте данные участки скрипта
//Клиенты
procedure frmAddClient_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
if CheckDublicate('NewRecord', 'client', 'name', frmAddClient.edName.sqlValue, frmAddClient.Button1.dbGeneralTableId) then
begin
frmAddClient.Button12.Click;
end else
begin
frmAddClient.Button10.Click;
end;
end;
// запрет на дублирование записей
function CheckDublicate (Action, sTable, sField, sValue: string; id: integer;): boolean;
var
s: string;
begin
result := False;
if Action = 'NewRecord' then
begin
s := SQLExecute ('SELECT Count(*) FROM '+sTable+' WHERE '+sField+' LIKE ' + sValue);
if StrToInt(s) > 0 then result := True;
end;
end;
procedure frmAddClient_btLogSave_OnClick (Sender: string; var Cancel: boolean);
begin
if frmAddClient.chNewClient.Checked then
begin
//Логирование// при создании нового клиента
sCurrentDate := '"' + FormatDateTime('yyyy-MM-DD hh:nn', now) + '"';
sUserName := '"'+ sUser +'"';
sOperation := '"Создан новый клиент"';
sUserPC := '"'+ GetUserName +'"';
sClientName := frmAddClient.edName.sqlValue;
SQLExecute ('INSERT INTO users_logs (UserPC, datetimeEvent, operation, login, ClientName) VALUES('+sUserPC+',' +sCurrentDate+','+sOperation+','+sUserName+','+sClientName+')');
end;
if frmAddClient.chUpdateClient.Checked then
begin
//Логирование// при редактировании клиента
sCurrentDate := '"' + FormatDateTime('yyyy-MM-DD hh:nn', now) + '"';
sUserName := '"'+ sUser +'"';
sOperation := '"Данные по клиенту отредактированы"';
sUserPC := '"'+ GetUserName +'"';
sClientName := frmAddClient.edName.sqlValue;
sOldClientName := frmAddClient.edOldClientName.sqlValue;
SQLExecute ('INSERT INTO users_logs (UserPC, datetimeEvent, operation, login, ClientName, OldClientName) VALUES('+sUserPC+',' +sCurrentDate+','+sOperation+','+sUserName+','+sClientName+','+sOldClientName+')');
end;
end;
основная ошибка в том, что вы берете текст с компонента для SQL запроса со свойства Text
frmAddClient.edName.Text
а нужно
frmAddClient.edName.sqlValue
скорей всего в других участках скрипта присутствуют подобные ошибки.
2,953 2017-09-13 11:29:40
Re: Прошу помощи! (36 replies, posted in Russian)
Дмитрий, в версии 3.6 ошибку больше не выдает, но при этом при выполнении SQL запроса значение vedisp.cashstage выдается с запятой (тип REAL), а значение vedisp.NDS выдается с точкой (тип REAL). Я думаю тут нет ошибок ни в SQL запросе ни в скрипте, поскольку там скрипт работает только по раскраске ячеек. Но с чем связана данная ситуация остается загадкой.
delphinsl wrote:При выполнении данного SQL запроса, появляется вот такая ошибка. Началось с версии 3.3
select
SoispDog.num_dog,
strftime('%d.%m.%Y',SoispDog.date_dog),
soispdog.shifr_dog,
SoispDog.name_dog,
vedisp.numstage,
vedisp.namestage,
vedisp.ONTD,
strftime('%d.%m.%Y',vedisp.startstage),
strftime('%d.%m.%Y',vedisp.endstage)as dateend,
vedisp.trud,
vedisp.cashstage,
vedisp.NDS,
vedisp.vidcash,
Glisp.nameGi,
Soisp.nameisp,
vedisp.Zakl_OC,
vedisp.Zakl_TFC,
vedisp.udost,
(case when vedisp.otmstage=1 then 'да' else 'нет' end),
soispdog.id,
soispdog.id_GLisp,
soispdog.id_soispfrom vedisp, soispdog, Glisp, soisp
where vedisp.id_soispdog=soispdog.id and soispdog.id_soisp=soisp.id and soispdog.id_Glisp=GLisp.id
and strftime('%m.%Y',vedisp.endstage)= strftime('%m.%Y',{DateTimePicker1}) and vedisp.otmstage='0'
order by dateend
Пожалуйста создайте отдельную тему для вопроса, также приложите проект.
2,954 2017-09-13 11:27:20
Re: [Script] Import-Export data (11 replies, posted in FAQ)
And have little Question
IF use syntax
'SELECT * FROM TableNameA left outer join TableNameB on TableNameA.id = TableNameB.id'
in Function
Export( 'SELECT * FROM TableNameA left outer join TableNameB on TableNameA.id = TableNameB.id' , '1.csv' );
How To Add ColumnName ???
select *
Please explain your question in more details.
2,955 2017-09-13 11:24:15
Re: Example Export Text With ColumnName (1 replies, posted in Script)
Thank you for the example.
2,956 2017-09-12 14:47:21
Re: SQLExecute() (2 replies, posted in General)
In SQL there is no IntToStr and StrToInt functions
Check it out
UltimoNumero := SQLExecute( 'SELECT MAX(CAST(Autores.NumDocumentoAutor AS Int)) FROM Autores WHERE Autores.id_TipoDocumentos = ' + IntToStr(Id_TipoDocumento ) );
2,957 2017-09-12 13:01:35
Re: [Script] Import-Export data (11 replies, posted in FAQ)
How To Export With Head Column ??? or How Add head column in file export ???
procedure Form1_bExport_OnClick (Sender: string; var Cancel: boolean);
var
sl: TStringList;
begin
Export('SELECT lastname, firstname, salary, dateofbirth, isSmoke, comment FROM employees', '1.csv');
sl := TStringList.Create;
sl.LoadFromFile('1.csv');
sl.Insert(0, 'lastname, firstname, salary, dateofbirth, isSmoke, comment');
sl.SaveToFile('1.csv');
sl.Free;
end;
if (Results.Fields.Fields(i).DataType = ftFloat) or (Results.Fields.Fields(i).DataType = ftLargeint) then
sValue := ReplaceStr(sValue, ',', '.')Error ??? if value float
1,000.00 >>> 1.000.00 Not Correct
1,000.00 it's not correct number for CSV file, how you get csv file with this number?
2,958 2017-09-12 12:15:07
Re: Прошу помощи! (36 replies, posted in Russian)
andrey.yugay
Дмитрий, доброго,
да, это то, что нужно.1) есть какая нибудь реализация по автозавершению слов именно в тектовом поле?
Пример по огранизации, польз-ль начинает вводить и ему предлагаю варианты.... По комбобокс не подходит, т.к. там будут вводить новые организации
2) В форме редактирования скриптов пропали +.... данных много, раньше все сваричивалось, сейчас приходится искать по тексту.
3) Еще вопрос, как с вами связаться на счет покупки?с УВ. Андрей.
1. Автозаврешение слов есть только в ComboBox, для этого установите его свойство Style = csDropDown
Затем поместите на форму компонент Edit, а для компонента ComboBox создайте событие
procedure Form2_ComboBox1_OnChange (Sender: string);
begin
Form2.Edit1.Text := Form2.ComboBox1.Text;
end;
procedure Form2_OnShow (Sender: string; Action: string);
begin
Form2.ComboBox1.Text := Form2.Edit1.Text;
end;
таким образом информация из CombBox будет дублироваться в Edit, компонент Edit сделайте невидимым, но данные в базу данных сохраняйте именно с компонента Edit
проект с примером приложил к сообщению
2. Нажмите правой кнопкой мыши в окне скриптов и поставьте галочку "Code folding"
3. support@drive-software.com
страница покупки
http://myvisualdatabase.com/purchase_ru.html
2,959 2017-09-12 11:31:12
Re: Edit... (16 replies, posted in Russian)
Доброго времени суток!!!
У меня на форме 500-едитов...заполнены целыми числами от 1 до 50...!!!
Как по клику на битон...подсчитать сколько едитов заполненно например числом: 7
и отобразить в лабер...???
пример
// функция для подсчета
function CountValueEdits(Form: TAForm; Value: string): integer;
var
i,c: integer;
begin
result := 0;
c := Form.ComponentCount-1;
for i := 0 to c do
begin
if Form.Components[i] is TdbEdit then
if TdbEdit(Form.Components[i]).Text = Value then Result := Result + 1;
end;
end;
// как использовать
procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
Form1.Label1.Caption := IntToStr( CountValueEdits(Form1, '7') );
end;
2,960 2017-09-12 11:27:51
Re: simulate a tab key (9 replies, posted in Script)
hello
thank you ehwagner for this solution. I will try to use it . But it would be more easy if there was a function to simulate a key in one button . Especially whene there is a large number of fields in the form.
Example:
procedure SendKeyForAllEdits(Form: TAForm; sKey: string);
var
i,c: integer;
begin
c := Form.ComponentCount-1;
for i := 0 to c do
begin
if Form.Components[i] is TdbEdit then TdbEdit(Form.Components[i]).Text := TdbEdit(Form.Components[i]).Text + sKey;
end;
end;
procedure Form1_Button3_OnClick (Sender: string; var Cancel: boolean);
begin
SendKeyForAllEdits(Form1, '1'); // how to use
end;
2,961 2017-09-12 11:10:45
Re: [Скрипт] COM порт (чтение и запись) (20 replies, posted in FAQ)
Больше вариантов не будет? Хотелось-бы увидеть ещё какие-то решения этой проблемы. Спасибо.
к сожалению ничего другого не могу пока придумать, нужно для теста какое либо com устройство. Где то у меня был GPS приемник, попробую найти и протестировать.
2,962 2017-09-12 11:09:41
Re: Помощь (9 replies, posted in Russian)
Здравствуйте.
К сожалению я не могу понять вопрос. Пожалуйста, сформулируйте свой вопрос более конкретно.
2,963 2017-09-12 11:03:39
Re: Поиск по условию (9 replies, posted in Russian)
DriveSoft wrote:У компонент TextBox есть свойство Filter, установите его значение %s%
Как фильтр изменяется с помощью скрипта?
Form1.Edit1.dbFilter := '%s%';
2,964 2017-09-11 20:01:07
Re: Не сохранить текст вида ООО "ОГОНЬ" (6 replies, posted in Russian)
Приложите пожалуйста проект, так к сожалению не ясна причина.
2,965 2017-09-11 19:59:00
Re: simulate a tab key (9 replies, posted in Script)
There is no function to send a key to the form.
Why you don't want to use SetFocusNextControl method?
2,966 2017-09-11 12:38:12
Re: Copy form objects (3 replies, posted in General)
Hi,
I have a project that has a form with over 70 objects (texboxes, memos, buttons and labels) and I need to reproduce the same layout on other forms. Is it possible to copy all objects at once and paste it to the new form. Any help would be appreciated.
Terry
Hello.
Please download latest version 3.6, now you can press Ctrl+A to select all components on form and paste in to the new form.
http://myvisualdatabase.com/download/myvisualdb.exe
2,967 2017-09-11 10:04:42
Re: simulate a tab key (9 replies, posted in Script)
Hello.
You can set focus to the next component, using this code:
Form1.SetFocusNextControl;
but you can't use this method by click on button, because when you click on a button, you set focus on this button.
2,968 2017-09-08 11:13:53
Re: Два вычисляемых поля и их отображение в TableGrid (6 replies, posted in Russian)
mcsimm
если чтобы получить результат, вам приходится делать много вычислений, возможно структура БД спроектирована неправильно? Тут сложно что-то посоветовать конкретное, без конкретного примера.
2,969 2017-09-08 11:10:19
Re: Открытие файла через TableGrid (24 replies, posted in Russian)
попробуйте так
if ((ValidDate(Form1.GridEmployees.Cells[3,i]) and (Form1.GridEmployees.Cells[4,i] <> 'Выполнено') and ((StrToDateTime(Form1.GridEmployees.Cells[3,i]) <= Now) or (Form1.GridEmployees.Cells[3,i] = '' ))) then Form1.GridEmployees.Cell[3,i].Color := clRed;
2,970 2017-09-08 11:08:12
Re: Прошу помощи! (36 replies, posted in Russian)
Дмитрий, доброго времени суток.
Подскажите как можно реализовать.на форме есть две кнопки - показать запись.
1) показывает на текущей форме
2) открывает новую форму для редактирования.как можно сделать, что бы под одним пользователем работала 1 кнопка, а 2 под другими?
при открытии основной формы, есть разграничение прав, но если поставить запрет на все кнопки в режиме чтения, все равно срабатывает 2 и открывает форму.
может есть вариант, настроить Action на кнопку? т.е. прописать при определении прав.
пример ( за корректность не ручаюсь, т.к. опыта не было)frmContracts.Button1Edit1. * Action = "None";
frmContracts.Button2Edit2. * Action = "None";Заранее благодарю за вашу помощь.
Программу как и обещал будем брать, нужны будут ваши контакты, что бы отдел закупок связался с вамис Ув. Андрей
Здравствуйте.
Так можно удалить действие для кнопки
Form1.Button1.dbActionType := adbNone;
2,971 2017-09-08 09:18:22
Re: Combo Box "Greyed out" option (7 replies, posted in General)
is there a way instead of dbitemid.visible maybe a "selectable" or "enabled" ?
There is no property "dbitemid.visible"
2,972 2017-09-08 08:59:50
Re: Связь Многие-ко-многим (12 replies, posted in FAQ)
Raspr
Спасибо. Скачайте снова проект, исправил ошибку.
2,973 2017-09-06 08:48:14
Re: Resizing Window and it's Components (4 replies, posted in General)
Unfortunately to implement it need to much time (about 1 hour)
2,974 2017-09-06 08:07:52
Re: Открытие файла через TableGrid (24 replies, posted in Russian)
попробуйте так
if (Form1.GridEmployees.Cells[4,i] <> 'Выполнено') and (StrToDateTime(Form1.GridEmployees.Cells[3,i]) < Now) then Form1.GridEmployees.Cell[3,i].Color := clRed;
2,975 2017-09-05 12:24:46
Re: [Скрипт] COM порт (чтение и запись) (20 replies, posted in FAQ)
И на рабочем компе неработает. Пробовал даже на Windows XP, всё тоже самое. Кстати, при работе с весовым индикатором, вообще трудно поймать момент, чтобы цифры высветились в окне Edit1.
ради интереса попробуйте данный вариант с таймером: