Topic: Вопросы от неразбирающегося

Доброго времени суток!
Назрела необходимость в программе такого плана.
Посмотрел Вашу вот чего мне не хватает в Вашем детище:
1. Нет ввода числа (текст есть, а числа нет)
2. В гриде обновляется только одна таблица (а мне надо в трех сразу можно это увидеть в гриде )
3. Для кнопки можно выполнить ТОЛЬКО одно действие, а мне хочется несколько (назовем это "пакетное действие")
4.Нет выпадающего меню с моими строками (обещали в 5-ой версии)

прикрепил для наглядности файлик

Прошу помощи в написании SQL запросе (можно куда-нибудь отправить smile )
для сохранения всех данных грида (может я чего-то упускаю)
Все остальное либо мелочи либо подходит для моих нужд

проект в целом очень хороший

С уважением,
Денис

PS: Успехов в развитии

Re: Вопросы от неразбирающегося

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


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


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

Dmitry.

Re: Вопросы от неразбирающегося

Доброго времени суток!
Спасибо что заинтересовались
1 пока отпал
файлик прикрепил

Еще кое что без чего жить не смогу smile
Сканер штрихкода
В скрипте пишу:

var
  sHello: string;
  sMestaX: array [1..2] of string;

procedure HelloWorld (s: string);
begin
  ShowMessage(s);
end;

begin
  // just for example
  sMestaX[1]:='ПН';
  sMestaX[2]:='РН';
  sHello := 'Script said hello!';
  HelloWorld(sHello);
end.

т.е. определяю массив sMestaX
и наполняю значениями
sMestaX[1]:='ПН';
sMestaX[2]:='РН';
хотелось видеть это на форме (ПН ,РН)
ComboBox (Выпадающий список)
Это возможно?
С уважением,
Денис

Post's attachments

Attachment icon Вопросы.rar 472.9 kb, 595 downloads since 2018-10-23 

Re: Вопросы от неразбирающегося

1. Данный компонент используется как для ввода текста так и для цифр, отдельного компонента для ввода цифр нет.


2. Сохранять за раз можно только в одну таблицу.


3. Это можно сделать скриптом. Создаете необходимые кнопки с действиями, можете из скрыть, затем помещаете еще одну кнопку, которая будет запускать остальные кнопки, пример:

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
    Form1.bSearch.Click;
    Form1.bDelete.Click;
    Form1.bReport.Click;
end;

4. Пока нету, планируется.

Dmitry.

Re: Вопросы от неразбирающегося

kp1801bm1a wrote:

В скрипте пишу:
....
хотелось видеть это на форме (ПН ,РН)
ComboBox (Выпадающий список)
Это возможно?
С уважением,
Денис


Обычно для этих целей создают таблицу БД, в которой вы заносите такие записи как ПН, РН и т.д.
Затем создается внешний ключ в другой таблице, в котором будет сохраняться данный выбор с использованием ComboBox.
У вас должен быть довольно специфичный случай, чтобы реализовать это все скриптом.


Рекомендую вам данную книгу, в которой в доступной форме можете прочитать введение в базы данных с использованием My Visual Database
http://myvisualdatabase.com/forum/viewtopic.php?id=2554

Dmitry.

Re: Вопросы от неразбирающегося

kp1801bm1a wrote:

Еще кое что без чего жить не смогу smile
Сканер штрихкода

Как правило сканер штрихкода просто эмулирует клавиатуру, т.о. перед тем как сканировать, просто поставьте фокус ввода в компонент TextBox и вы получите там код штрихкода.

Dmitry.

7 (edited by kp1801bm1a 2018-10-24 17:42:40)

Re: Вопросы от неразбирающегося

Доброго времени суток Дмитрий,

Про сканер ШК:

сканер штрихкода просто эмулирует клавиатуру

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

Про БД:
Данные документа хранятся в четырех таблицах
в зависимости от поля TipDoc данные берутся из еще одной  таблицы (по типу Документа они разные)
поэтому для добавления/сохранения/удаления
нужно писать какой-то запрос  (или скрипт)
мои мысли:
При добавлении
1 Начинаем тразакцию
2 Добавляем запись в таблицу Docs.(TipDoc не забываем он же нам известен) При этом получаем id записи таблицы Docs
3 Добавляем записи в таблицу dvKontra с этим id
4 Добавляем записи в таблицу dvSklad с этим id
5 Так как мы знаем TipDoc (что за документ мы создаем) то в соответствующую таблицу
    добавляем запись (не забывая про полученный id)
6 Сохраняем транзакцию.
Как это написать?
  С уважением,
Денис

Re: Вопросы от неразбирающегося

опять файл не прикрепился...

Post's attachments

Attachment icon СхемаБД.jpg 66.16 kb, 254 downloads since 2018-10-25 

Re: Вопросы от неразбирающегося

По поводу сканера. Для формы можно установить свойство KeyPreview = True, таким образом все нажатия на клавиатуру будут перехватываться в событии формы OnKeyPress, поэтому достаточно чтобы просто форма была активна и в фокусе, но тут необходимо решить, как отличить сканер от обычной клавиатуры, возможно сканер позволяет задать какой либо префикс к сообщению, который передает при сканировании?


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

Post's attachments

Attachment icon Физ Юр лица.zip 9.3 kb, 460 downloads since 2018-10-25 

Dmitry.

Re: Вопросы от неразбирающегося

на сколько я понимаю у кнопки сканера должен быть код

11 (edited by kp1801bm1a 2018-10-26 08:42:22)

Re: Вопросы от неразбирающегося

Спасибо Дмитрий!

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

С уважением,
Денис

Re: Вопросы от неразбирающегося

по сканеру:
можно и так выкрутиться. Сканер передает и префикс и суффикс
но я думал это будет объект, который генерит событие smile

13 (edited by sibprogsistem 2018-10-26 14:57:14)

Re: Вопросы от неразбирающегося

я конечно не сталкивался со сканерами, но все же...

мне это то же понадобиться... 
Вопрос такой  Сканер уже имеет префикс и суфикс или их нужно настраивать?

если уже меет...
то создать отдельный диалог для настройки сканера,  в деологе оставить edit 1(префикс) и edit 2(суфикс)  и кнопку сохранить
теперь в самой программе создаем условие с учетом префикса и суфикса..
Далее сканируем любой штрих код ... скриптом получаем префикс и суфикс помещам edit 1(префикс) и edit 2(суфикс), сохраняем в базу

14 (edited by kp1801bm1a 2018-10-26 15:58:35)

Re: Вопросы от неразбирающегося

суффиксы обычно во многих по умолчанию #10#13
префикс настраивать надо, но это не сложно
можно и суффикс поменять
вообще-то ATOL раздает DLL бесплатно на сканеры, ккм, и пр.

Re: Вопросы от неразбирающегося

Доброго времени суток!
Поясните, пожалуйста, такую вещь. В языках программирования разбираюсь мало, немного работал со скриптованием в Lua (игра STALKER). Там есть возможность вместо нескольких отдельных условий
if ... then ... end
if ... then ... end
if ... then ... end
изобразить код таким образом:
if ... then ...
elseif ... then ...
elseif ... then ...
end

Есть ли возможность в скриптах My Visual Database использовать такой же способ? И если есть, то как правильно его оформить в этой программе?
Заранее спасибо!

Re: Вопросы от неразбирающегося

Здравствуйте! Еще вопрос.
Задал кнопке такую функцию (для открытия файла, соответствующего определенной надписи):

procedure Form1_Button2_OnClick (Sender: string; var Cancel: boolean);
var
    NeedFile,sFileName: string;
begin

    if Form1.Edit1.Text = 'text1' then
        NeedFile := '\File\text1.txt';
    if Form1.Edit1.Text = 'text2' then
        NeedFile := '\File\text2.txt';
    if Form1.Edit1.Text = 'text3' then
        NeedFile := '\File\text3.txt';
        begin
            sFileName := ExtractFileDir(Application.ExeName) + NeedFile;
        end;

        OpenFile(sFileName);

end;

С указанными в скрипте полями все работает как надо - соответствующий файл открывается. Загвоздка в том, что файл, который таким образом был открыт последним (например, text3.txt), открывается и для тех полей (надписей), которые не указаны в коде - форма-то одинаковая для всех. Как сделать, чтобы при нажатии на кнопку файлы не открывались для записей, не указанных в скрипте (допустим, чтобы при нажатии на кнопку ничего не происходило)?

Заодно подскажите, пожалуйста, способ занесения всех надписей ('text1', 'text2' и так далее) в скриптовую таблицу {}, чтобы не создавать кучу if...then - количество записей в моей базе > 200.

Re: Вопросы от неразбирающегося

попробуйте так

procedure Form1_Button2_OnClick (Sender: string; var Cancel: boolean);
var
    NeedFile,sFileName: string;
begin
    NeedFile := '\File\'+Form1.Edit1.Text;
    sFileName := ExtractFileDir(Application.ExeName) + NeedFile;
    OpenFile(sFileName);    
end;
Dmitry.

Re: Вопросы от неразбирающегося

Заработало с небольшой правкой

NeedFile := '\File\'+Form1.Edit1.Text+'.txt';

Спасибо!

Re: Вопросы от неразбирающегося

Здравствуйте.
Может ли кто-нибудь подсказать аналог нижеуказанной хэш-таблицы (Lua) для Delphi, а также как к ней правильно обратиться (перебор)?

local tbl_spec =  {
                             ["item1"] = "info1",
                             ["item2"] = "info2",
                             ["item3"] = "info3",
                             ["item4"] = "info4",
                             ["item5"] = "info5"
                            }
for k,v in pairs(tbl) do         --перебираем таблицу

Re: Вопросы от неразбирающегося

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


Хеш таблиц нету, но самое похожее это класс TStringList, здесь можете прочитать подробней с примерами
http://delphiprogrammingdiary.blogspot. … -pair.html

Dmitry.

Re: Вопросы от неразбирающегося

Спасибо большое за помощь!

Re: Вопросы от неразбирающегося

Здравствуйте!
Есть код такого вида:

for i:= 1 to 7 do begin
    cbe:=TComboBox(Form2.FindComponent('CBEffector'+IntToStr(i)));
    eev:=TEdit(Form2.FindComponent('EfValue'+IntToStr(i)));
    if (cbe.Text='текст') then begin
        Form2.SDamage.Text:=FloatToStr(0.2*StrToFloat(Form2.TProperty.Text));
        Form2.SDamageDur.Text:=eev.Text;

В общем, получаем значение в одном поле, умножая значение в другом на 0,2. Как в данном случае округлить полученное значение (0.2*StrToFloat(Form2.TProperty.Text)) до целого? Например, 9,4 до 9, а 9,5 и выше уже до 10? Можно ли сделать это прямо в строке
Form2.SDamage.Text:=FloatToStr(0.2*StrToFloat(Form2.TProperty.Text));
?
Заранее спасибо.
P.S. Планируется ли сделать автовыделение круглых кавычек разными цветами (как в формулах Excel), или выделение "активных" кавычек, как реализовано в Notepad++ (что даже лучше)?

Re: Вопросы от неразбирающегося

попробуйте так

Form2.SDamage.Value := Round(0.2 * Form2.TProperty.Value);

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

Dmitry.

24 (edited by Vyvern 2019-06-15 16:09:28)

Re: Вопросы от неразбирающегося

Здравствуйте!
Возникла необходимость в повторении однотипного кода. Чтобы не нагружать скрипт, планирую выделить необходимый код в отдельную функцию, чтобы потом просто вызвать ее. Однако не могу понять, как правильно осуществить вызов.

   procedure Hide_Components (Sender: TObject);
var
    i: integer;
    lr,lrd,lrpc: TLabel;
    er: TEdit;

begin
    for i:= 1 to 10 do 
    begin
        lr:=TLabel(Form2.FindComponent('LRes'+IntToStr(i)));
        lrd:=TLabel(Form2.FindComponent('LResDelta'+IntToStr(i)));
        lrpc:=TLabel(Form2.FindComponent('LRespc'+IntToStr(i)));
        er:=TEdit(Form2.FindComponent('ERes'+IntToStr(i)));
        lr.Enabled:=false;
        lrd.Enabled:=false;
        lrpc.Enabled:=false;
        er.Enabled:=false;
        er.Text:='';
    end;
end;

Должно получиться нечто вроде

procedure Form2_Button1_OnClick(Sender: TObject);
begin
    if .... rhen
    .......
    Hide_Components ();
end;

Я не прошу писать за меня готовое решение - понимаю, что работы и помимо этого навалом. Но, возможно, Вы точно знаете, где можно подсмотреть пример для моего случая? Возможно, решение есть в известных Вам проектах. На сторонних форумах, которые я изучал, по подобным вопросам в основном приводятся примеры с простейшими математическими вычислениями (типа а+в), что мне не подходит.
Заранее благодарю за любую помощь.

Re: Вопросы от неразбирающегося

Возможно, нужное вам решение есть в примерах, описанных в цикле статей о программировании в MVD:  https://vk.com/@createmyvisualdatabasea … mmirovanie

Визуальное программирование: блог и телеграм-канал.