Драйвера к материнке установили? Что есть в диспетчере устройств в разделе "Контроллеры USB"? Нет ли в диспетчере каких "Неизвестных устройств"? Дистрибутив винды нормальный, не репак-перепак-зверьсиди какой?
Что значит "ничего не выполняет"? Батник не запускается вообще или запускается, но чего-то не делает?
Формально функция правильно вызывается. Если батник в одном каталоге с exe программы или в каталоге из path, то должен запуститься. А уж правильный ли набор параметров передаёте - Вам виднее.
Mercury13: Интересно! Формально Вы, наверное, правы, и автору вопроса этот вариант может подойдёт. Я про record case в таком плане не думал. Самому применять record case не приходилось, но представлял себе я это примерно так:
MyRec=record
case integer of
1: (i: integer);
2: (w1, w2: word);
3: (b1, b2, b3, b4: byte);
end;
Т. е. вот есть 4 байта данных и мы их только интерпретируем различными способами. А чтобы разнотипные данные объединять, ну очень внимательно следить за содержимым нужно. Если мы запишем булево значение, а прочитать попробуем TObject, то хоть получим ошибку. А вот если наоборот, запишем TObject, а читать будем буль, то оно ведь и прочитает чего попало.
ndbn: Ну хорошо, тогда повторю без суждений. В Delphi поле нельзя сделать двух типов. В каких-то случаях подошёл бы тип Variant, но не для Boolean и TObject.
Мне кажется, что Вы чего-то не договариваете. Либо есть конечный набор формул, из которого нужно выбрать подходящую, либо описание формулы типа "полином с целыми коэффициентами", либо что-то ещё. А существование решения в такой общей формулировке сомнительно.
Алексей A: Теперь понятнее. Пожелание видеть нули, для меня всё равно необычным осталось, но надо так надо.
Если товары выводиться по заказам будут, то конечно то суммирование товаров из разных заказов (ну или заданий - это не важно), которое перед этим делали, здесь не требуется. Наверное абсолютно всё на sql перекладывать и не нужно. Какие-то вещи уже при формировании отчёта получить можно. Тут уж Вам виднее - это Ваша конфигурация. О чём я? Например общее количество в штуках и в баксах по заданию может посчитать придётся, а если они уже в документе есть, тогда запросом. А в плане товаров идея такая, если в лоб брать. Считаем, что список товаров уже получен из справочника некоторым ЗапросомТоваров. Дальше нужны все заказы (ну за период конечно) и в каждом заказе нужны все товары из ЗапросаТоваров. Это полное соединение двух таблиц. Одна - запрос заказов:
Выбрать
НомерЗаказа, ИтогКоличество, ИтогДеньги (эти если есть)
Из
Заказы
Где
Дата какая надо
Вторая таблица - ЗапросТоваров. Получили список всех заказов, в каждом все товары.
Теперь к этой таблице присоединить выборку товаров с количеством и деньгами из заказов. Левое соединение по номеру заказа и номенклатуре.
Вообщем направление мысли примерно такое должно быть. Дальше уже по месту ориентируйтесь.
Алексей A: Вообще-то естьnull действительно, как раз для этого и к месту. Но сейчас 1С под рукой нет, по памяти не соображу, почему не сработало. Успехов!
Если это какое-то задание, то ладно. А вообще ценность последнего действя сомнительна. В реальной жизни справочники номенклатуры весьма большие. И эта куча строк с нулями вряд ли кому-то нужна.
Алексей A: Во, хороший запрос. Это одна таблица, другая - справочник Номенклатура. Соединяете по Номенклатура.Ссылка. Лень все эти длинные названия писать, но что-то типа:
Выбрать Напименование, Количество, Сумма
Из Справочник.Номенклатура
Левое соединение
Тут предыдущий запрос
По Справ.Ном.Ссылка=Номенклатура
И вроде как и всё...
В запросе, который считает количество не будет никаких объединений. Наименование здесь не нужно. В группировке только ЗаказКлиентаТовары.Номенклатура.Ссылка оставьте
Алексей A: У Вас в SQL пробелы - ликвидируйте! Выкинте для начала отсюда всё про справочник Номенклатура. Убедитесь, что у Вас правильно считается количество и сумма по нескольким заказам. А потом выбирайте всю номенклатуру из справочника и присоединяйте к ней результат этого запроса.
logpol32: Ну функция DateInRange здесь чисто для красы :) Она никаких чудес не делает:
function DateInRange(ADate: TDate; AStartDate, AEndDate: TDate; AInclusive: Boolean = True): Boolean;
begin
if AInclusive then
Result := (DateOf(AStartDate) <= DateOf(ADate)) and (DateOf(ADate) <= DateOf(AEndDate))
else
Result := (DateOf(AStartDate) < DateOf(ADate)) and (DateOf(ADate) < DateOf(AEndDate));
end;
А строки Ваши по-любому надо во что-то более удобное для сравнения преобразовать. Совсем без телодвижений никак не обойтись. Всё зависит от формата входных данных - известен ли он Вам и постоянен ли он. Если формат всех трёх дат такой, как написано в вопросе, то я бы добавил в начале строки '01.' а дальше StrToDate и сравнивайте на здоровье.
Дмитрий Петров: Так Евгений всё правильно написал, если под другой осью usb заработает, значит только у винды крыша съехала, что поправимо. Если нет, то в ремонт профессионалам.
Что-то мне не нравится, что при подключении вентилятора есть звук подключения устройства. Разве должен быть? Сдаётся мне, что он питание и данные коротит.
Che_Bu_Rashka: Сами по себе эти записи кроме "Зависание" ничего не обозначают. Гугл на это самое AppHangB1 даёт кучу ссылок. Большая часть - жалобы игроков, иногда подобное случается с другими приложениями. Конкретных советов по лечению я не встречал. Всё типично - переустановить систему, обновить драйвера, сторонний софт добавлять по одному. И я с этим в принципе согласен, потому что обычно это и по времени быстрее выходит.