powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / интегер 71 почему-то меньше интегера 39
33 сообщений из 33, показаны все 2 страниц
интегер 71 почему-то меньше интегера 39
    #40038881
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здарова, коллеги!
в операторе IF проверяются значения двух переменных типа Integer. При этом при сравнении i3=71 и i1=39 почему-то уходит в ветку i3<i1. Причем при проверке функцией IsNumeric обе возвращают "true". Прилагаю саму базу. Там на форме "Форма1" есть кнопка "Step1". В ее коде внутри цикла do while всё и происходит. Уже всё урезано до проблемных данных. Сейчас сделаю по-другому: возьму i3-i1 и буду сравнивать с нулем. Но хотелось бы разобраться, что за бл?*:!во-то твориться...
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038885
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar,

А с чего вы решили чё переменные Integer
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038886
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
до 150 кб не жмется, так что вот вторая часть...
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038887
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ROI
Beliar,

И

нечаяно ctrl+Enterнажал (чтоб перейти на новую строку)
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038888
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038890
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ROI
Beliar,

А с чего вы решили чё переменные Integer


Объявлены как интегер лично моими руками
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038891
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторСейчас сделаю по-другому: возьму i3-i1 и буду сравнивать с нулем.
Вот так работает. Но что не так с прямым сравнением???
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038893
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar
Здарова, коллеги!
в операторе IF проверяются значения двух переменных типа Integer. При этом при сравнении i3=71 и i1=39 почему-то уходит в ветку i3<i1. Причем при проверке функцией IsNumeric обе возвращают "true". Прилагаю саму базу. Там на форме "Форма1" есть кнопка "Step1". В ее коде внутри цикла do while всё и происходит. Уже всё урезано до проблемных данных. Сейчас сделаю по-другому: возьму i3-i1 и буду сравнивать с нулем. Но хотелось бы разобраться, что за бл?*:!во-то твориться...

i1="39" строковый
i3=71 числовой
в отладчике все видно
отсюда и не складушки
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038895
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI,

проблему вот осюда
Dim i, h1, h2, h3, i1, i2, i3, i4, i5, i6 As Integer
все переменные кроме i6 имеют тип вариант
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038898
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI,

Dim i1 As Integer
Dim i2 As Integer
Dim i3 As Integer
Dim i4 As Integer
Dim i5 As Integer
Dim i6 As Integer
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038901
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar
ROI
Beliar,

А с чего вы решили чё переменные Integer


Объявлены как интегер лично моими руками

Это вам только кажется (ноги то же участвовали но не голова)
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038906
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ROI,
вот в первый раз слышу, что при такой записи только последняя объявляется как положено а ведь уже туеву хучу проектов сдал в производство за 11 лет))) слов нет
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038907
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ROI,
Спасибо огромное!
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038912
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
но это отвратительно. В одном модуле бывает нужно объявить до 40-50 переменных разного типа. И каждой персонально прописывать тип???
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038916
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar
но это отвратительно. В одном модуле бывает нужно объявить до 40-50 переменных разного типа. И каждой персонально прописывать тип???

Да, прописывать каждую, иначе переменные типа Variant
сыграют с вами злую шутку (вы это уже почувствовали)
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038919
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI,

Можно через сокращения
https://docs.microsoft.com/ru-ru/office/vba/language/concepts/getting-started/declaring-variables

Dim intX%, intY%, intZ as Integer

Сокращение для типов: % – Integer; & – Long; @ – Currency; # – Double; ! – Single; $ – String
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038921
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ROI
ROI,

Можно через сокращения
https://docs.microsoft.com/ru-ru/office/vba/language/concepts/getting-started/declaring-variables

Dim intX%, intY%, intZ as Integer

Сокращение для типов: % – Integer; & – Long; @ – Currency; # – Double; ! – Single; $ – String

Ну это меняет дело! Еще раз спасибо!
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038923
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чуток не допонял. Допустим нужно объявить i1,i2,i3,i4,i5 как Integer. Как правильно,
так: Dim i1%, i2%, i3%, i4%, i5 as Integer
или так: Dim i%, i5 as Integer
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038925
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar
чуток не допонял. Допустим нужно объявить i1,i2,i3,i4,i5 как Integer. Как правильно,
так: Dim i1%, i2%, i3%, i4%, i5 as Integer
или так: Dim i%, i5 as Integer


Dim i1%, i2%, i3%, i4%, i5% все переменные интеджер
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038927
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar,

здесь то-же бардак
Dim dbs1, dbs2, dbs3 As Database
Dim rst1, rst2, rst3 As Recordset
Dim dat1, dat2 As Date
Dim str1, str2, str3, str4, str5 As String
Dim int1, int2, int3 As String
надо так:
Dim dbs1 As Database
Dim dbs2 As Database
Dim dbs3 As Database

для объектных переменных нет сокращений
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038934
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ROI, теперь понял. Перелопачу хотя бы в этой бд., пока немного)) И как это за столько лет ни разу не выстрелило?! Ладн, спасибо. Тема закрыта))
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038951
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar
но это отвратительно. В одном модуле бывает нужно объявить до 40-50 переменных разного типа. И каждой персонально прописывать тип???
Ну это разве в БД определяющей объем силуэта коня в вккуме (я безуспешно пытался понять цели которые преследуются созданием этой БД) и пришел к выводу что четкая постановка задачи отсутствует-а то глядишь и объектов бы стало на порядок меньше и кд бы значительно упростился.Если есть желание объясните для чего создается БД и какие исходные(набиваемые ручками)имеются.
Beliar
ROI, теперь понял. Перелопачу хотя бы в этой бд., пока немного)) И как это за столько лет ни разу не выстрелило?! Ладн, спасибо. Тема закрыта))
Стесняюсь спросить,но уж больно интересно, а за сколько лет и сколько создано "боевых"(рабочих и используемых) БД
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038953
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar, изучите оператор def, причем там можно выбирать сразу несколько букв типа defbool B-C
он как то не прижился в листингах, но может вам подойдет.
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038959
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar
но это отвратительно

Это вба. Что ты от него хотел?
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40038983
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster
Beliar
но это отвратительно
Это вба. Что ты от него хотел?
на VB6 из вижуал-студио я писал еще в универе. Там-то и объявлялись переменные через запятую. Хотя может, память подводит, но откуда-то же такая форма записи в памяти торчит.
sdku
Beliar
но это отвратительно. В одном модуле бывает нужно объявить до 40-50 переменных разного типа. И каждой персонально прописывать тип???
Ну это разве в БД определяющей объем силуэта коня в вккуме (я безуспешно пытался понять цели которые преследуются созданием этой БД) и пришел к выводу что четкая постановка задачи отсутствует-а то глядишь и объектов бы стало на порядок меньше и кд бы значительно упростился.Если есть желание объясните для чего создается БД и какие исходные(набиваемые ручками)имеются.

Это лишь фрагмент базы, я лишнее удалил, перед тем, как сжать и прикрепить к теме. Да и половина объектов временные. После окончания разработки удалю. Не знаю, зачем Вам подробности, но раз уж интересено: это прога по составлению ротационного отчета по продукции на складе. Из 1с выгружается в excel отчет по движению товара (ну в виде Нач.Ост.; Приход; Расход; Кон.Ост.). Импортируется сюда. Руками вбивается два прихода (для каждого наименования связанные записи в виде Кол-во;ДатаПроизводства;НомерПрихода). А дальше... юзер жмет всего одну кнопку и веселый VBA списывает расход начиная со старых дат, сначала из начальных остатков, затем из первого прихода, потом из второго и сохраняет, что осталось, ввиде нового отчета. Толку высматривать "силуэт коня" в нескольких косточках с одним копытом.
sdku
Стесняюсь спросить,но уж больно интересно, а за сколько лет и сколько создано "боевых"(рабочих и используемых) БД

5 в медицинском учреждении с 2008 по 2011. В те годы опыта совсем ни на грош было. И Вы, sdku, были среди тех, кто не раз помогал мне. Я то математик. Кроме акса и ВБ нихера в универе не изучалось. Потом для мелких фирм, уже и не вспомнить, сколько мелких бд-шек нацарапал. С одной, правда, возился, больше полугода, слишком много ситуативных разборов было. Здесь на кондитерке уже пятый проэкт за 2 года. Из первых 4 только один перестал использоваться за ненадобностью. Ну да, может местами рациональностью и не блещем. И у меня до сих пор Акс 2002.
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40039035
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar,

Небольшое замечание
Установите галочку явное объявление переменных
у вас в модулях появиться строка
Option Explicit
а то кое-где нету этого
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40039042
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar

это прога по составлению ротационного отчета по продукции на складе. Из 1с выгружается в excel отчет по движению товара (ну в виде Нач.Ост.; Приход; Расход; Кон.Ост.). Импортируется сюда. Руками вбивается два прихода (для каждого наименования связанные записи в виде Кол-во;ДатаПроизводства;НомерПрихода). А дальше... юзер жмет всего одну кнопку и веселый VBA списывает расход начиная со старых дат, сначала из начальных остатков, затем из первого прихода, потом из второго и сохраняет, что осталось, ввиде нового отчета.
Ну если "это прога по составлению ротационного отчета по продукции на складе" то она будет поменьше "фрагмента" и не потребует использования 3 программных продуктов(1с,ёкселя и акса)-задача достаточно проста. Поэтому четко формулируйте ТЗ-накидаю пример, так-как все свое время отдать этому занятию не смогу, то дня за два, если хотите и Вас это устраивает.
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40039204
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar
Там-то и объявлялись переменные через запятую. Хотя может, память подводит, но откуда-то же такая форма записи в памяти торчит.

Так точно можно делать в java. На плюсах, си и шарпе скорее всего тоже. Вба не стесняется быть особенным.
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40039210
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Вба (скорее vb6) не стесняется быть особенным.
Это плохо?
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40039216
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku
Ну если "это прога по составлению ротационного отчета по продукции на складе" то она будет поменьше "фрагмента" и не потребует использования 3 программных продуктов(1с,ёкселя и акса)-задача достаточно проста. Поэтому четко формулируйте ТЗ-накидаю пример, так-как все свое время отдать этому занятию не смогу, то дня за два, если хотите и Вас это устраивает.

Да по сути-то все уже разработано. Осталось собрать, затянуть гайки, запилить юзерский интерфейс и нарисовать репорты. Но я непрочь посмотреть, как решит задачу настоящий опытный программер. Из этого можно извлечь что-нибудь поучительное.
Снова приложу мдбшку, убрав всё кроме необходимых исходных данных. А данные таковы:
t_products - таблица-каталог по продукции.
t_reports - хранилище р.отчетов по каждому дню. В ней уже забит р.отчет за 08.12.2020. Р.отчет - не объект бд, а условное название данных для документа (ротационного отчета) - цели проекта. Поля: cdate - текущая дата (дата отчета); p_name - наименование продукции; pr_date - дата производства; p_count - количество. Остальные поля несут инфу о сроке хранения и степень его истечения. С этим незачем возиться, добавлю сам к финальным данным отчета.
t_InPut - данные про приходам. Их всего 2 в каждом дне. Внесены приходы за 09.12.2020. Поля: cdate - текущая дата; p_name - наименование продукции; p_count - количество; pr_date - дата производства; in_part - номер прихода (соответственно 1 или 2).
t_Moves - данные по движению продукции за день. Уже внесено за 09.12.2020. Поля: cdate - текущая дата; p_name - наименование продукции; InBal - остаток на начало дня, InPut - приход; OutPut - расход; FinBal - остаток на конец дня. Задача в след.посте
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40039218
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача: Работаем с 09.12.2020. Необходимо к вчерашнему отчету добавить оба прихода. Затем произвести списание по таким требованиям:
1) по возрастанию дат, т.е. старые даты производства вперед
2) продукция расходуется весь день, а приходуется всего 2 раза в день. Поэтому начинаем списывать сначала с начальных остатков (т.е. берутся конечные остатки предыдущего дня), сколько не хватило списываем с первого прихода, сколько еще не хватило со второго.
Остатки с их датами производства вставляем в t_reports с текущей датой в качестве cdate.

Данные по приходам, движению и р.отчету остаются храниться в своих таблицах. Процесс списания необходимо разделить на 3 шага, сохранять в отдельную таблицу, что бы иметь возможность ручного редактирования результатов. К примеру, при автоматическом списании ушла продукция, скажем "Гурман (2,4)" 11 штук с датой производства 09.12.2020 по правилу списания. Но на самом деле 5 штук из этих 11 отгрузили с датой 10.12.2020 (про просьбе клиента или по невнимательности). Необходимо это отразить.
С импортом и рисованием отчетов я разберусь сам. Интересен сам механизм списания. Прочие тонкости тоже и озвучивать не буду.
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40039221
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster,

так я ж не изучал ни джаву, ни си, ничего кроме ВБ, так что это точно в VB6 было
...
Рейтинг: 0 / 0
интегер 71 почему-то меньше интегера 39
    #40039229
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ROI
Beliar,

Небольшое замечание
Установите галочку явное объявление переменных
у вас в модулях появиться строка
Option Explicit
а то кое-где нету этого


Ну так там много чего еще не прописано. Например, очистка содержимого переменных типа DataBase и Recordset еще не добавлена. В оригинале-то уже к тому моменту всё было :-)
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / интегер 71 почему-то меньше интегера 39
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]