Программы "Простой софт" www.prostoysoft.ru

ВНИМАНИЕ! РЕКЛАМНЫЕ СООБЩЕНИЯ И ГИПЕРССЫЛКИ В ФОРУМЕ ЗАПРЕЩЕНЫ (посты удаляются автоматически)
Текущее время: 22.11.2024 20:14

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 20.05.2017 13:17 
Не в сети

Зарегистрирован: 08.07.2016 02:04
Сообщения: 73
Обовил базу до 2.871 и перестал формироваться файл.
Запускаю процедуру, в ней есть команда:

Код:
'создаем файл с заказом по шаблону
DocumentByTemplate("D:\Склад и торговля\Шаблоны\Dimex2.xlsx", NumberOrder & "_" & InvoiceNumber & ".xls")


В процессе формирования в информационном поле (это внизу программы) пишет Имя файла по формуле не построилось...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21.05.2017 20:57 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Ссылки на поля текущей записи NumberOrder и InvoiceNumber заключите в угловые или квадратные скобки.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28.05.2017 23:16 
Не в сети

Зарегистрирован: 08.07.2016 02:04
Сообщения: 73
стал создаваться файл с именем NumberOrder_InvoiceNumber.xlsx
вот весь код процедуры
Код:
'проверяем есть ли запись в таблице взаиморасчетов
'если есть то удаляем ее
'берем макс номер даймекс+1
'добавляем нов запись и формируем файл

Dim text1, text2, FormaOplati, OrderAmount, NumberDimex, InvoiceNumber, NumberOrder
'получаем значение внутренний номер заказа
InvoiceNumber = <ID> & "_" & <OrderNumber>

'форма оплаты
FormaOplati = <FormaOplati>



'номер заказа даймекс из таблицы взаиморасчетов (есть или нет)
text1="SELECT NumberOrder FROM tblPayments WHERE InvoiceNumber = '" & InvoiceNumber & "';"
NumberDimex = ExecuteSql(text1)

'проверка на дубли и удаление если есть
If Not IsNull(NumberDimex) Then
   msgbox "В таблице взаиморасчетов есть запись с номером " & InvoiceNumber & ". Она будет пересоздана и будет сформирован новый файл XLS с заказом."
   ExecuteSql("DELETE FROM tblPayments WHERE InvoiceNumber = '" & InvoiceNumber & "';")
end If

'максимальный номер заказа из табл взаиморасчетов+1
text1="SELECT max(NumberOrder)+1 FROM tblPayments;"
NumberOrder = ExecuteSql(text1)

'вставляем запись

'сумма заказа
OrderAmount = 0
If (FormaOplati = "Наложка") or (FormaOplati = "Наличные") Then
   OrderAmount = <OrderAmount>
end If

text2="INSERT INTO tblPayments (PaymentDate, Suplier, PaymentCategory, InvoiceNumber,PaymentNotes,PaymentAmount, PaymentAmountOut, PaymentAmountOwed,PaymentAmountIn,PaymentType, NumberOrder ) SELECT '" & <CurrentDate> & "', 'Даймэкс', 'За услуги', '" & InvoiceNumber & "', '" & FormaOplati & " сумма <OrderAmount> руб', 0,0," & OrderAmount & ",0,'Банк', " & NumberOrder
ExecuteSql(text2)

'создаем файл с заказом по шаблону
msgbox NumberOrder & "_" & InvoiceNumber & ".xls"
DocumentByTemplate("D:\Склад и торговля\Шаблоны\Dimex2.xlsx", <NumberOrder> & "_" & <InvoiceNumber> & ".xls")


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30.05.2017 01:08 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Результат конкатенации «NumberOrder & "_" & InvoiceNumber & ".xls"» присвойте сначала отдельной переменной, затем уже используйте эту переменную в функции генерации документа. В угловые скобки сами эти переменные как в конце кода заключать не надо.

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02.06.2017 13:33 
Не в сети

Зарегистрирован: 08.07.2016 02:04
Сообщения: 73
Код:
'создаем файл с заказом по шаблону
FileName = NumberOrder & "_" & InvoiceNumber & ".xls"
DocumentByTemplate("D:\Склад и торговля\Шаблоны\Dimex2.xlsx", FileName)


создался файл с именем FileName


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03.06.2017 10:19 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Объявите эту переменную
После присвоения ей значения при необходимости проверьте его функцией MsgBox

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03.06.2017 11:48 
Не в сети

Зарегистрирован: 08.07.2016 02:04
Сообщения: 73
переменную эту я объявил:
Dim text1, text2, FormaOplati, OrderAmount, NumberDimex, InvoiceNumber, NumberOrder, FileName
msgbox показывает нужное имя файла
но файл не создается теперь никак, потому что обновил базу до 2.877


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03.06.2017 23:31 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Попробуйте так
Код:
DocumentByTemplate "D:\Склад и торговля\Шаблоны\Dimex2.xlsx", FileName
Если не выйдет, отправляйте отчет по всем правилам в техподдержку

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04.06.2017 11:50 
Не в сети

Зарегистрирован: 08.07.2016 02:04
Сообщения: 73
зачем создавать отчет если разработчики читают форум? Ведь баг не в базе а в самой программе

получается вот так:
DocumentByTemplate "D:\Склад и торговля\Шаблоны\Dimex2.xlsx", dimex.xlsx
DocumentByTemplate "D:\Склад и торговля\Шаблоны\Dimex2.xlsx", "dimex.xlsx"
(DocumentByTemplate "D:\Склад и торговля\Шаблоны\Dimex2.xlsx", "dimex.xlsx")

но переменную даже такую
FileName = "dimex" & ".xlsx"
не получается передать, сообщение в статусной строке не появляется о формировании файла
тесты в демо-базе тоже не проходят


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14.07.2017 17:24 
Не в сети

Зарегистрирован: 08.07.2016 02:04
Сообщения: 73
версия 2-888
теперь в моем коде (см выше) почему то в переменную не передается значение ExecuteSql
было вот так:
Код:
'максимальный номер заказа из табл взаиморасчетов+1
text1="SELECT max(NumberOrder)+1 FROM tblPayments;"
NumberOrder = ExecuteSql(text1)


msgbox NumberOrder - не работает
msgbox ExecuteSql(text1) - работает, показывает нужное значение
msgbox Cint(ExecuteSql(text1)) - не работает


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14.07.2017 18:18 
Не в сети

Зарегистрирован: 08.07.2016 02:04
Сообщения: 73
переделал код без проверки, теперь работает так
Код:
'Заказ для Даймекс
Dim text1, FormaOplati, OrderAmount, FileName
'форма оплаты
FormaOplati = <FormaOplati>
'Удаление старых записей
text1 = "DELETE FROM tblPayments WHERE InvoiceNumber = '<ID>_<OrderNumber>'"
ExecuteSql(text1)
'сумма заказа
OrderAmount = 0
If (FormaOplati = "Наложка") or (FormaOplati = "Наличные") Then
   OrderAmount = <OrderAmount>
end If
'вставляем запись
text1="INSERT INTO tblPayments (PaymentDate, Suplier, PaymentCategory, InvoiceNumber,PaymentNotes,PaymentAmount, PaymentAmountOut, PaymentAmountOwed,PaymentAmountIn,PaymentType, NumberOrder ) VALUES ('<CurrentDate>', 'Даймэкс', 'За услуги', '<ID>_<OrderNumber>', '" & FormaOplati & " сумма <OrderAmount> руб', 0,0," & OrderAmount & ",0,'Банк Авангард (ИП)', (SELECT max(NumberOrder)+1 FROM tblPayments;))"
ExecuteSql(text1)
'создаем файл с заказом по шаблону
FileName = "Dimex_<ID>_<OrderNumber>.xlsx"
DocumentByTemplate ("D:\Склад и торговля\Шаблоны\Dimex2.xlsx", FileName)


Имя файла теперь строится вот таким способом:
Код:
FileName = "Dimex_<ID>_<OrderNumber>.xlsx"
DocumentByTemplate ("D:\Склад и торговля\Шаблоны\Dimex2.xlsx", FileName)


Или таким способом:
Код:
DocumentByTemplate ("D:\Склад и торговля\Шаблоны\Dimex2.xlsx", "Dimex_<ID>_<OrderNumber>.xlsx")


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15.07.2017 18:38 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Программу доработали.

Цитата:
msgbox Cint(ExecuteSql(text1)) - не работает

В языке VBScript нет строгих типов данных, а есть только тип Variant с подтипами. И в т.ч. нет Integer, а знзачит и CInt тоже нет, и оно не должно работать.
Вместо этого для конвертации строки в число обычно используют функцию Val которая есть в VBScript.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19.07.2017 22:24 
Не в сети

Зарегистрирован: 08.07.2016 02:04
Сообщения: 73
Упс, а можно уточнить, как доработали? Иначе придется опять методом тыка правки вносить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24.07.2018 23:20 
Не в сети

Зарегистрирован: 08.07.2016 02:04
Сообщения: 73
Обновил программу до последней версии 2.941:

и пришлось менять формулу для построения имени файла
для кнопок на панели инструментов:
было:
Код:
'Без_наложки' & [ID] & '-' & [SiteCode] & [OrderNumber] & '.docx'

стало:
Код:
"Без_наложки" & [ID] & "-" & [SiteCode] & [OrderNumber] & ".docx"


что не есть гуд, надеюсь что больше таких изменений не будет :cry:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30.07.2018 12:10 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
На самом деле работать должно и так и так. Но более правильно с двойными кавычками, потому как одинарные кавычки обычно используют в строках (которые внутри двойных).
Предоставьте, пожалуйста, сриншот, где именно и как конкетно у вас прописана ваша нерабочая формула с одинарными кавычками.
Правила иногда надо делать более жетскими, чтобы стимулировать всех писать изначально правильно, а не "и так, и так".

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB