Всем профессионалам ИТ доброго времени суток!
Помогите, пожалуйста, очень нужно. Есть проект и очень хочется усовершенствовать его.
Получилось перевести его на сетевую версию в MySQL, но есть и локальная версия.
Очень нужно организовать импот записей в БД через скрипт. Есть проект, в котором такж скрепя когда-то с помощью вас сделал импорт данных через форму и скрипты. В данном случае не полчается. Что-то с конвертацией данных, как я понимаю. Приложу проект и если кто-то поможет, изменив его и приложив к архиву тестовый файл xlsx, БУДУ ОЧЕЬ БЛАГОДАРЕН. Хотелось бы, чтобы id автоматически формировался, чтобы его в ручную не прописывать и чтобы при импорте данные не копировались по 10 раз, а только свежие добавлялись, а старые - оставались.ЗАРАНЕЕ БЛАГОДАРЮ!
1 2025-07-25 17:51:35
Topic: Импорт данных из Экселя (0 replies, posted in Russian)
2 2025-07-25 14:39:22
Re: Присвоение артикула (18 replies, posted in Russian)
В MySQL для объединения строк вместо вертикальных палок нужно использовать функцию CONCAT:
SQLite - 'Hello' || ' world'
MySQL - CONCAT('Hello', ' world')P.S. Доступ к базе через интернет сами будете делать? Вы хотя бы примерно представляете сложность этой задачи? Увы, генератор Web-форм, который есть в My Visual Database, служит скорей для иллюстрации такой возможности, не предоставляя конечного решения.
Спасибо за помощь! Да, читал об этом, но не могу применить правильно.
Сейчас в вычислительном поле вот так
(select prefix from categories where id = id_categories)||article_tovar Можете подсказать как должно быть с конкатизацией? Спасибо
P.S. Вроде так заработало:
(SELECT concat(categories.prefix, main.article_tovar) FROM categories WHERE id = id_categories) 3 2025-07-25 12:27:51
Re: Присвоение артикула (18 replies, posted in Russian)
Привет Vickus!
Попробуйте что-то вроде этого (см. приложение).
Это полностью основано на данных (это всегда мой личный выбор), и все варианты хранятся в таблице «Категории».
В таблице «Категории» добавьте «префикс» (он может быть любым) и «начальный номер» (он может быть одинаковым для всех категорий или можно задать отдельные «начальные номера» для каждой категории).
Новые категории можно добавлять в любое время, а существующие префиксы можно изменять.
Думаю, это даст вам максимальную гибкость.
С уважением,
Derek.
Дерек, снова прошу у Вас помощи.
Хочу сделать доступ к базе через Интернет и чтобы можно было загружать в базу данные из файла Excel.
Можете помочь с данными вопросами (импорт через скрипт (кнопка "Импорт") и нужно ли что-то менять в скриптах для работы в сетевой версии)?
Снова заранее БЛАГОДАРЮ!
P.S. Смог подключить базу к MySQL и перенести данные через PHPMyAdmin, но артикул перестал формироваться. Я так понимаю. что что-то в вычисляемом поле?
4 2025-07-22 12:15:08
Re: Присвоение артикула (18 replies, posted in Russian)
Привет Vickus!
Попробуйте что-то вроде этого (см. приложение).
Это полностью основано на данных (это всегда мой личный выбор), и все варианты хранятся в таблице «Категории».
В таблице «Категории» добавьте «префикс» (он может быть любым) и «начальный номер» (он может быть одинаковым для всех категорий или можно задать отдельные «начальные номера» для каждой категории).
Новые категории можно добавлять в любое время, а существующие префиксы можно изменять.
Думаю, это даст вам максимальную гибкость.
С уважением,
Derek.
Дерек, ОГРОМНОЕ ВАМ СПАСИБО!
Все получилось!
5 2025-07-22 05:07:54
Re: Присвоение артикула (18 replies, posted in Russian)
Привет Vickus!
Просто измените строку 3 в скрипте.
В приложенном примере теперь используется значение из Frm_add.combobox1.text, и, начиная с позиции 1, первые два символа, за которыми следует знак «-» (но, конечно, вы можете использовать любое количество символов и изменить формат по своему усмотрению).
Я также изменил скрипт так, чтобы это происходило при сохранении записи, а не при выборе значения из выпадающего списка «Категория» (это сделано для того, чтобы уменьшить вероятность одновременных операций (если у вас несколько пользователей), как упоминал K245).
Надеюсь, это поможет.
Derek.
Дерек, а возможно ли сделать так, чтобы Артикул формировался не из первых символов категории (например: ОДЕЖДА - ОД00001, введнной при заведении категории аббревиатурой на свое усмотрение (например: категория: ОДЕЖДА > аббревиатура: CL; категория: ОЧКИ > аббревиатура: GL В конечном итоге при выборе категории ОДЕЖДА на форме заведения товара, в основной таблице бы выводился код CL00001.
Заранее БЛАГОДАРЮ за уже оказанную помощь и за помощь в решении данного вопроса!
6 2025-07-19 15:18:14
Re: Присвоение артикула (18 replies, posted in Russian)
Привет, Викус!
Если я правильно понял твой вопрос, то можно попробовать что-то вроде этого (с этим решением тебе не придётся «жёстко прописывать» категории, так что можно просто добавить новые, и счётчик автоматически начнёт отсчёт с 10 000 для каждой новой категории).
С уважением,
Derek.
.
If I understand your question correctly, you can try something like this (with this solution you don't have to "hardcode" the categories, so you can just add new ones and the counter will automatically start counting from 10,000 for each new category).
Огромное спасибо ДЕРЕК!
Ваш приер подошел отлично. Можете помочь еще с таким вопросом. Артикул формируется из первого символа названия категории товара. Если категории товаров начинаются с одинаковой буквы, то артикул будет неверным (например: Одежда и Очки) Можно выводить две или три первые буквы заглавными в качестве артикуда? Спасибо!
7 2025-07-18 14:39:43
Re: Присвоение артикула (18 replies, posted in Russian)
Могу предположить, что буквы в артикуле отражают какие-либо свойства товара (категории, материалы и т.д.) В этом случае выражение будет немного сложней - возможно потребуется использовать CASE для выбора символов или даже подзапрос, но в любом случае это себя оправдает.
Из минусов данного подхода могу отметить, что артикул может поменяться при изменении алгоритма его вычисления. Если это недопустимо, то тогда создание текста артикула нужно реализовать скриптом, но после добавления записи, то есть в момент, когда уникальное значение ID уже существует. Подходящее место для этого - событие onAfterClick на кнопке сохранения данных формы редактирования. Но в этом случае потенциально могут быть проблемы с уникальностью.
********************************
Добрый день!
Вы оказались совершенно правы по поводу различных категорий товаров и различных артикулов.
Покопался в старых примерах и сделал так
CASE
WHEN main.id_category = 1 THEN ('O'|| SUBSTR(1000000 + main.id,2,6) )
WHEN main.id_category = 2 THEN ('G'|| SUBSTR(1000000 + main.id,2,6) )
WHEN main.id_category = 3 THEN ('A'|| SUBSTR(1000000 + main.id,2,6) )
ELSE '' END
Артикулы присваиваются, но в общей очередности (по порядку). Возможно ли сделать так, чтобы у различных категорий артикул имел свой порядок? Чтобы каждая категория "стартовала" с 1 и т.д., а не брался единый список товаров. Заранее благодарю
8 2025-07-15 08:03:43
Re: Присвоение артикула (18 replies, posted in Russian)
Если шаблон артикула включает только одну последовательность уникальных цифр, то могу порекомендовать реализовать артикул как вычисляемое поле, в состав которого будет входить ID записи. Такое решение подойдет при любом количестве пользователей, выполняющей операции добавления, для любой СУБД.
Пример:
('У'|| SUBSTR( 10000+id,2,4) )Результат:
Огромное спасибо за ПОМОЩЬ!
не получается. Сможете посмотреть в чем ошибка? И не могу сделать, чтобы сумма автоматичски считалась (количество * цену)
P.S. Исправил в вычислительном поле id на main.id и заработало. Помогите, пожалуйста с автоподсчетом суммы. Спасибо
9 2025-07-15 06:07:52
Topic: Присвоение артикула (18 replies, posted in Russian)
Добрый день!
Помогите, пожалуйста! Необходимо при добавлении товара в базу присваивать ему автоматически артикул товара, к примеру: У00001, У00002 и т.д. При удалении товара артикул, ранее использованный поторяться на новом товаре не должен. Заранее всех благодарю!
10 2025-06-05 09:00:20
Topic: Выборка с чекбоксом (1 replies, posted in Russian)
Добрый день профессионалы!
Помогите, пожалуйста с проблемой. Необходимо из главной таблице с чекбоксами для выборки строк копировать в другую таблицу на другой форме выбранные проставленными чекбоксами записи. Задумка такая: база товаров (таблица с данными и чекбоксами) и для оформления заказа необходимо выбрать отдельные позиции, которые после нажатия на кнопку "Сформировать" открываются в другой форме в сформированной таблице. Очень хотелось бы сделать самому, но не хватает знаний. Пытаюсь длать на основе выкладываемых людьми примеров. Заране всем спасибо!
11 2025-05-06 12:09:54
Re: Данные в таблицу (2 replies, posted in Russian)
Спасибо большое за подробную подсказку.
Вроде бы разобрался. Использовал фильтр для таблицы
12 2025-05-05 16:29:47
Topic: Данные в таблицу (2 replies, posted in Russian)
Подскажите, пожалуйста, как можно вывести данные из БД в таблицу на форме через скрипт с условием выбора данных (WHERE...)
13 2025-05-04 11:50:20
Re: Изменение имени файла (6 replies, posted in Russian)
Для вашего вопроса не нужно быть программистом.
Профильное образование еще не признак ...Прочитайте параграф 2.10.2.
Еще раз благодарю! Добавил в квадратных скобках [1] и работает.
14 2025-05-04 11:19:58
Re: Изменение имени файла (6 replies, posted in Russian)
На счет первых или любых одиночных символов в строке ответ найдете здесь.
Спасибо. Читаю, но не имею профильного образования (самоучка) и на примере в MVD было бы проше разобраться.
15 2025-05-04 09:44:45
Re: Изменение имени файла (6 replies, posted in Russian)
Спасибо за подсказку.
Действительно нашел этот способ чуть раньше, но, к сожалению, не знаю как сделать так, чтобы обрезать имя и отчество, оставляя только первые символы.
Использую так
procedure crop (Sender: TObject);
var
ArrString: array of string;
begin
ArrString := SplitString(Frm_add_reference.add_FIO_child.Text,' ');
Frm_add_reference.short_fn.Text := ArrString[0];
Frm_add_reference.short_sn.Text := ArrString[1];
Frm_add_reference.short_pn.Text := ArrString[2];
end;
Может быть неправильно, но работает.
16 2025-05-03 06:33:29
Topic: Изменение имени файла (6 replies, posted in Russian)
Добрый день!
Есть скрипт
procedure Main_btn_pdf_OnAfterClick (Sender: TObject);
var
sFile: string;
sDest: string;
sChild: string;
begin
sFile := Main.frxPDFExport1.FileName;
sChild := SQLExecute('SELECT FIO_child FROM Main WHERE id =' + IntToStr(Main.Table_main.dbitemid));sDest := 'C:\Users\Vitaly\Desktop\Справки\';
if ForceDirectories(sDest) then
begin
CopyFile(sFile, sDest + 'Справка для ' + sChild + '.pdf');
end;DeleteFile(sFile);
end;
В поле ФИО ребенка указаны ФИО (полностью в родительном падеже).
Возможно ли выводить в имени файла Только фамилию и инициалы ребенка?
17 2025-04-28 11:00:42
Re: Как закрыть форму (6 replies, posted in Russian)
Спасибо за ответ. Ясно, что не поддерживается
18 2025-04-28 05:13:47
Re: Как закрыть форму (6 replies, posted in Russian)
Like this
Большое спасибо за помощь!
Помогите, пожалуйста, еще раз. Как сделать так, чтобы открывающихся форм было не 2, а, допустим, 4-5 и на каждой из форм была либо кнопка, либо еще что-то для открытия из текущей формы любой другой, с скрытием остальных
19 2025-04-27 10:18:00
Re: Как закрыть форму (6 replies, posted in Russian)
Поищите в англоязычных ветках форума - там не так давно обсуждали варианты решения и были разные примеры реализации.
Спасибо. Ссылочку не дадите?
20 2025-04-16 10:29:34
Topic: Как закрыть форму (6 replies, posted in Russian)
Добрый день!
Не получается закрыть форму по событию после клика. На главной форме кнопки для перехода на другие формы. После перехода на выбранную хотелось бы, чтобы главная закрывалась, но не получается.
frm_main.Close не работает, форма просто сворачивается. Помогите пожалуйста.
21 2025-02-25 16:15:48
Topic: Проблемы с Abobe Reader (1 replies, posted in Russian)
Добрый день!
Помогите решить проблему с Adobe Reader. На форме кнопки для формирования отчета (выгружается сразу в PDF и в просмотрщик FastReports). При нажатии на формирование в PDF открывается процесс Adobe Reader, но отчет не открывается и все... ни один документ PDF на компьютере не открывается пока не снять задачу. Просмотрщик открывается, но при экпорте из него в PDF все то же самое :-( Поставил процедуру KillTask ('Acrobat.exe') перед формированием отчета - та же история.
22 2025-02-19 12:27:19
Topic: Закрыть приложение (1 replies, posted in Russian)
Добрый день!
Подскажите, как прописать в скрипте, что при нажатии на кнопку должен закрыться Acrobat Reader?
23 2025-02-10 12:01:38
Topic: Формат в Caption (2 replies, posted in Russian)
Добрый день!
Подскажите, пожалуйста, как решить вопрос.
На форме есть панель с Caption, в которой показана сумма в рублях.
var
g : string;
begin
g := SQLExecute ('SELECT SUM(income_operation) FROM main');
if g < '0' then Frm_main.sum_panel.Caption := 'Нет данных' else Frm_main.sum_panel.Caption := 'Итого за налоговый период: ' + g + ' ' + '₽';
end;Помогите, чтобы сумма выходила с запятой и двумя знаками после нее.
Спасибо!
24 2025-01-28 07:25:15
Re: Копирование строки (12 replies, posted in Russian)
sparrow wrote:а если так
SQLExecute ('INSERT INTO Main (record_count, FIO_parent, FIO_child, N_reference, Date_reference, Year_reference, '+ 'Contract_reference, Summa_reference) SELECT (SELECT MAX(record_count)+1 FROM Main), FIO_parent, FIO_child, '+ 'PRINTF("%02d",(SELECT MAX(record_count)+1 FROM Main))||"/"||SUBSTR(Data_reference,3,2), Date_reference, Year_reference, '+ 'Contract_reference, Summa_reference FROM Main WHERE id=' + Main.Table_main.sqlValue);БЛАГОДАРЮ! ВСЕ ОТЛИЧНО!
Назрел вопрос. Помогите, пожалуйста, в очередной раз.
Копирование работает отлично. А как можно сделать так, чтобы после удаления любой строки (не важно какой), при копировании проставлялся номер незанятой строки?
К примеру:
1. | Иванов | Иван | Иванович | Договор №45 | 5300 руб. |
2. | Смирнов | Павел | Васильевич | Договор № 52 | 4300 руб. |
4. | Матвеева | Анна | Сергеевна | Договор № 39 | 5400 руб. |
Строку с номером 3 удалили. При копировании любой строки (1, 4, 23...) скопированная запись должна принять свободный номер 3.
25 2025-01-24 12:45:39
Re: Показ записей в таблице (2 replies, posted in Russian)
По нажатию кнопки вы можете устанавливать фильтр в таблице и затем обновить ее
Form1.Tablegrid1.dbFilter := 'условие'; // Условие как в запросе в WHERE
Form1.TableGrid1.dbUpdate;WHERE data_deactive > now() WHERE Date(data_deactive) > DATE('now')
БОЛЬШОЕ СПАСИБО!