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

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

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




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

Зарегистрирован: 30.07.2014 14:11
Сообщения: 18
Есть конструкция для InputFromList

If Left(sMoveTo, 2) = "Ok" Then
sMoveTo = Mid(sMoveTo, 4)
Else
MsgBox('Cancel')
WScript.Quit

End If

В блоке Else надо завершить скрипт чтобы не выполнялись команды после End If
какой командой можно это сделать?


Попутные вопросы, чтобы темы не плодить:
Странное поведение MSGBox

Dim sVariable, sAllowed
sVariable = 'Переменная'
MsgBox ("Warning")
sAllowed = MsgBox("Перемещение: " & sVariable, 1, "Перемещение")
MsgBox ("Allow:" & sAllowed)

1.Первый выскакивает как и положено с кнопкой ok, Второй тоже нормально - с двумя кнопками.
Третий как будто запомнил параметры последнего и вылазит с заголовком "Перемещение" и кнопками Ok/Cancel

2. Если чуть изменить строку sAllowed = MsgBox("Перемещение: " & sVariable & " уверены?", 1, "Перемещение")
то есть строка сообщения оканчивается на текст в кавчках "...", а не переменной
то в сообщении MSGBox вместо значений переменных будут имена переменных.


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

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
WScript.Quit должно работать.
Странное поведение MsgBox не обнаружили.
Наверное, вы используете старую версию.

_________________
2B OR NOT 2B = TRUE


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

Зарегистрирован: 30.07.2014 14:11
Сообщения: 18
Dim InputNumber
InputNumber = InputBox('Введите номер')
If InputNumber = NULL Then
MsgBox ("Не найден")
WScript.Quit
End If
MsgBox ("Введено:" & InputNumber)

Если ввести число отрабатывает нормально
Если ничего не ввести - выходит "не найден" и скрипт продолжается - выходит "Введено:"
Может я чтото не так пишу?
Версия 2.537


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

Зарегистрирован: 30.07.2014 14:11
Сообщения: 18
[про кавычки удалено, разобрался в новом восприятии программы]
Wscript.Quit все так же не работает =(


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

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Доработали кое-что. Можно обновиться.
Вот эта строчка не верна
If InputNumber = NULL Then

Любая операция с NULL-ом будет NULL.
Есть спец. функция IsNull
Но в данном случае нужно просто с пустой строкой сравнивать:
If InputNumber = "" Then

_________________
2B OR NOT 2B = TRUE


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

Зарегистрирован: 30.07.2014 14:11
Сообщения: 18
Теперь работает, благодарю!


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

Зарегистрирован: 16.07.2016 13:41
Сообщения: 124
mssql 2014, учет клиентов 2.1016
Вопрос не совсем по теме, но столкнулся с похожей задачей.

Код:
Dim InputText, UP1, UPP1
InputText = InputBox('Введите пояснение')
If InputText = "" Then
MsgBox ("Вы ничего не ввели!")
WScript.Quit
End If
MsgBox ("Введено:" & InputText)
UP1 = "UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] =  " & InputText & "  WHERE ClientID = <ClientID>"
UPP1 = ExecuteSQL(UP1)


Если в поле вводить число все ОК!
Если текст, то выдает ошибку. Недопустимое имя столбца.
Еще вопрос, как можно сделать так, чтоб при обновлении поля сохранялось то что было уж написано, а то что ввели в диалоговое окно добавлялось.
Пробывал запросить с начало в процедуре через select значение, а в update уже скомпоновать 2 переменных, но тоже безрезультатно.


Вложения:
Новый точечный рисунок.jpg
Новый точечный рисунок.jpg [ 123.61 КБ | Просмотров: 85269 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30.01.2018 14:01 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Константин5825 писал(а):
Еще вопрос, как можно сделать так, чтоб при обновлении поля сохранялось то что было уж написано, а то что ввели в диалоговое окно добавлялось.
Через переменные {} и <> пробовали?

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


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

Зарегистрирован: 16.07.2016 13:41
Сообщения: 124
Да, перепробовал кучу вариантов.
Все не подходит. Проблема именно в подстановке в update переменных из процедуры.
если одну переменную вставляю (обновляется, но только числа, с буквами - ошибка)
Если две переменных то ошибки. Пытался соединить различными знаками & +
Все бесполезно


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

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

_________________
2B OR NOT 2B = TRUE


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

Зарегистрирован: 16.07.2016 13:41
Сообщения: 124
Ivan,

Если использовать следующие:
Код:
Dim InputText, SEL1, SELL1, UP1, UPP1
InputText = InputBox('Введите пояснение срыва заявки:Причина срыва. Не забудьте изменить ставки клиента и перевозчика!Так же не забудьте отредактировать примечание к перевозке!')
If InputText = "" Then
MsgBox ("Вы ничего не ввели!")
WScript.Quit
End If
SEL1 = "SELECT DopolnitelnoyeOpisaniye FROM qdfMain WHERE ClientID = <ClientID>"
SELL1 = ExecuteSQL(SEL1)
MsgBox ("UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = InputText WHERE ClientID = <ClientID>")
UP1 = "UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = " & InputText & " WHERE ClientID = <ClientID>"
UPP1 = ExecuteSQL(UP1)


При вводе цифр все ок! При вводе текста - ошибка.
В сам MsgBox по разному вставлял InputText ( в скобках,в угловых в квадратных, в кавычках двойных и одинарных и множество других вариантов которые предлагали в сети.
В каких то случаях отображает формулу корректно в каких то не очень и т.д.

Но строка
Код:
UP1 = "UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = " & InputText & " WHERE ClientID = <ClientID>"

Работает только на числа. Каким бы способом я не заносил переменную InputText


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

Зарегистрирован: 06.10.2014 18:30
Сообщения: 279
Откуда: Орел
Константин5825 писал(а):
Но строка
Код:
UP1 = "UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = " & InputText & " WHERE ClientID = <ClientID>"

Работает только на числа. Каким бы способом я не заносил переменную InputText

Так и должно быть :)

Ivan написал ведь (выделено мной)
Ivan писал(а):
Азы SQL: есть три основншых типа данных - числа, строки и даты.
Числа не надо ничем окружать.
Строки надо окружать одинарными кавычками.
Даты надо окружать диезами # (Access) или одинарными кавычками.
Делайте всегда MsgBox sSql непосредственно перед выполнением и смотрите внимательно на команду, которую вы сформировали.

Я могу к этому добавить лишь то что сами кавычки/диезы и т.п. содержимым переменной не являются.

Сделайте то что жирным в Ивановом совете


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

Зарегистрирован: 16.07.2016 13:41
Сообщения: 124
Спасибо) 1 раз не вдумчиво прочитал)
в таком виде действительно работает:
Код:
UP1 = 'UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = ' & InputText & ' WHERE ClientID = <ClientID>'


Но при обновлении поля получается следующие:
Ввели: ПРА123
Получили: & "ПРА123" &

Как убрать знаки и оставить только тест?

в MsgBox
Код:
MsgBox ("UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = InputText WHERE ClientID = <ClientID>")


Показывает только: "ПРА123"

Но если вставлять в Update без ' & & ' то ничего не работает.

Есть возможность при вставке убрать все знаки кроме теста?
Если спрашиваю очевидные, глупые вещи - сильно не ругайтесь)
Спасибо всем за помощь)


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

Зарегистрирован: 06.10.2014 18:30
Сообщения: 279
Откуда: Орел
1.
В vbs строки в двойных кавычках ("), а в SQL в одинарных (').
У Вас
2-я строка в InputBox('Введ... стоит одинарная.
в
UP1 = 'UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = ' & InputText & ' WHERE ClientID = <ClientID>'
то же не то

Вот так пробуйте
Код:
Dim InputText, UP1
InputText = InputBox("Введите ")
UP1 = "UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = " & "'" & InputText & "'"
MsgBox UP1


"'" - это одинарная кавычка внутри двойных

2.
для разработчиков программы напишу. "Учет пациентов" в. 2.718.
Код:
Dim InputText, UP1
InputText = InputBox("Введите ")
UP1 = "UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = " & Chr(39) & InputText & Chr(39)
MsgBox UP1

Dim Apostrof
Apostrof = Chr(39)
MsgBox Apostrof

UP1 = "UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = " & Apostrof & InputText & Apostrof
MsgBox UP1

Apostrof = "'"
UP1 = "UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = " & Apostrof & InputText & Apostrof
MsgBox UP1
Выдает см. рисунок.


Вложения:
Apostrof.jpg
Apostrof.jpg [ 117.98 КБ | Просмотров: 85211 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01.02.2018 13:54 
Не в сети

Зарегистрирован: 16.07.2016 13:41
Сообщения: 124
Спасибо, работает!

Код:
Dim InputText, SEL1, SELL1, UP1, UPP1
InputText = InputBox("Введите пояснение срыва заявки:Причина срыва. Не забудьте изменить ставки клиента и перевозчика!Так же не забудьте отредактировать примечание к перевозке!")
If InputText = " " Then
MsgBox ("Вы ничего не ввели!")
WScript.Quit
End If
SEL1 = "SELECT DopolnitelnoyeOpisaniye FROM qdfMain WHERE ClientID = <ClientID>"
SELL1 = ExecuteSQL(SEL1)
UP1 = "UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = " & "'" & InputText & "' WHERE ClientID = <ClientID>"
MsgBox UP1
UPP1 = ExecuteSQL(UP1)


Но последний мучающий меня вопрос, если нужно сохранить значение которые было занесено раннее и добавить то что было введено.
Делаю так же запросом сначала:
Код:
SEL1 = "SELECT DopolnitelnoyeOpisaniye FROM qdfMain WHERE ClientID = <ClientID>"

Код:
SELL1 = ExecuteSQL(SEL1)


Далее пытаюсь вставить так же в update, но при попытке вставить то же ошибка.
Что делаю не так?
Код:
UP1 = "UPDATE qdfMain SET [DopolnitelnoyeOpisaniye] = " & UPP1 & " " & "'" & InputText & "' WHERE ClientID = <ClientID>"


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

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


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

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


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

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