[ТЕМА ЗАКРЫТА]
31.03.2011 08:09
akonev
 
Цитата:
Vovantus строки не выбраны, пишет...
значит разбирайся вот с этим куском:
Код:
select a.id
      from sacardnameformdef f, sacardclassaux a
      where f.item=2
      and f.formid=a.nameformid
      and f.name='Вес'
сделай
select * from sacardnameformdef
посмотри, как там написана твоя масса в Name и в какие Item она попадает.
31.03.2011 08:22
akonev
 
Цитата:
Vovantus [I]... вес изделия забивается в граммах. как правило, он содержит в себе дробную часть. а вот разделитель может быть либо , (запятая), либо . (точка), всё будет зависеть от раскладки клавиатуры в момент забивки. надрессировать оператора забивать что-то одно не получится, полюбому где-нить проскочит другое.
вот в этих кусках
Код:
substr(c.name,instr(c.name,chr(9),1,2)+1,instr(c.name,chr(9),1,3)-instr(c.name,chr(9),1,2)-1) as ves,
можно добавить замену точек на запятые или наоборот, смотря чего тебе надо
Код:
replace(substr(c.name,instr(c.name,chr(9),1,2)+1,instr(c.name,chr(9),1,3)-instr(c.name,chr(9),1,2)-1),'.',',') as ves,
но шаблон все равно стоит поправить и заставить перебить названия.

хотя уже существующие неправильные можно и апдейтом поправить...
только тебе надо сначала с отбором групп с разными шаблонами разобраться
31.03.2011 09:34
John Doe
 
А вот интересно стало, если СМ проверяет число это или нет, то как он это делает? Ведь в итоге получается строка. Т.е. и точка и запятые допустимы. А СМ зависит от региональных настроек... И единожды вбитое при отображении строки уже меняться не будет. По идее от операторов, где десятичный разделитель точка, будет все время идти точка, у кого запятая - запятая... Шансы расхождения малы, но они есть?
31.03.2011 09:41
Vovantus
 
Цитата:
Andrew_Konev посмотри, как там написана твоя масса в Name и в какие Item она попадает.
в поле NAME написано МАССА. про item не понял, там циферки идут какие-то..
31.03.2011 10:03
akonev
 
Цитата:
Vovantus в поле NAME написано МАССА. про item не понял, там циферки идут какие-то..
я вот сейчас не понял: тебе комплект документации достался без девятого тома? :connie_tap:

конечно, там циферки. это номер поля в описании шаблона.
нумеруются с нуля. то есть у тебя, как бы, должны быть циферки 2 и 3.

но наверное, могут быть и другие, если шаблон сочинялся долго и мучительно. не проверял, что там происходит при удалении или перестановке полей в шаблоне.
31.03.2011 12:16
Vovantus
 
Цитата:
Andrew_Konev то есть у тебя, как бы, должны быть циферки 2 и 3.
так и есть, циферка либо 2, либо 3.
31.03.2011 12:17
Vovantus
 
предлагаю перенести обсуждение вопроса изъятия поля с весом в отдельную тему.
31.03.2011 12:29
Vovantus
 
Цитата:
Dim дык в шаблонах надо указать тип данных число и не париться. СМ неправильный разделитель сам не даст ввести
даст. для поля с массой установлен числовой тип данных. однако, в момент заполнения поля с весом изделия прокатывает и точка и запятая. сейчас проверил, можно создать две карточки, абсолютно одинаковые, но отличие будет только в разделителе дробной части. какой забьёшь, такой и будет в названии.
31.03.2011 13:08
akonev
 
Цитата:
Vovantus так и есть, циферка либо 2, либо 3.
Код:
select a.id
      from sacardnameformdef f, sacardclassaux a
      where f.item=2
      and f.formid=a.nameformid
      and f.name='МАССА'
чего-нить возвращает?
31.03.2011 14:01
Vovantus
 
Цитата:
Andrew_Konev чего-нить возвращает?
вернул значение ID, в нём циферка 538.
31.03.2011 14:21
akonev
 
Цитата:
Vovantus вернул значение ID, в нём циферка 538.
всего одно? получается, у тебя только одна группа на которую назначен шаблон с весом в третьем поле?

в этой группе товар-то есть вообще? ;)

теперь тот же самый запрос с item=3
31.03.2011 14:38
Vovantus
 
Цитата:
Andrew_Konev всего одно? получается, у тебя только одна группа на которую назначен шаблон с весом в третьем поле?

в этой группе товар-то есть вообще? ;)

теперь тот же самый запрос с item=3
ну да. шаблонов, пока, четыре. у одного вес идёт третьим полем, у оставшихся четвёртым. твой последний запрос это подтвердил, на выходе 3 значения. но я считаю, что с этим сейчас заморачиваться не нужно. сейчас нужно добавить в запрос выборку ветки классификатора. и уже в разрезе этого, я буду подставлять в вес либо третье поле, либо четвёртое, но с привязкой к конкретной группе классификатора. если там кольца, то вес идёт четвёртым полем, сразу после размера, а если размера нет, то вес идёт третьим полем. так что давай как-нить привязываться к группе классификатора товаров, от неё я и буду потом плясать.
31.03.2011 15:50
akonev
 
я тебя кушу больно.
классификатор еще в 55 посте этой ветки привинчен. отображение.
если тебе надо условие по ветке классификатора, то придумай, как ты видишь условие: по наменованию, по номеру группы/подгруппы какого-то уровня,...

типа: "кольца у меня живут в 1.3.1, по ним третье поле; на все остальное четвертое поле."
31.03.2011 16:11
Vovantus
 
Цитата:
Andrew_Konev типа: "кольца у меня живут в 1.3.1, по ним третье поле; на все остальное четвертое поле."
с номером поля я понял. классификатор выглядит следующим образом.
ВСЕ
ЮВЕЛИРКА
ЗОЛОТО
КОЛЬЦА
31.03.2011 16:12
Vovantus
 
Цитата:
Andrew_Konev типа: "кольца у меня живут в 1.3.1, по ним третье поле; на все остальное четвертое поле."
с номером поля я понял. классификатор выглядит следующим образом.
Код:
ВСЕ
   ЮВЕЛИРКА
      ЗОЛОТО
         КОЛЬЦА
            поставщик 1
            поставшик 2
            поставщик 3
         СЕРЬГИ
            поставщик 1
            поставшик 2
            поставщик 3
так вот. отбор веса металла нужно производить либо в разрезе основных групп, т.е. ЗОЛОТО или СЕРЕБРО, далее, в разрезе изделий, т.е. кольца, серьги, цепи и т.д. ну и по поставщику желательно тоже смотреть.
31.03.2011 16:43
Vovantus
 
но привязываться к названиям групп классификатора не обязательно. достаточно указать номер. например, нужно выбрать сколько металла на остатках по группе ЗОЛОТО, в запрос вписываем просто номер подгруппы ЗОЛОТО. нужно узнать, сколько осталось металла в кольцах, конкретно по поставщикам, указываем, что ищем в подгруппе ЗОЛОТО, далее, в КОЛЬЦАХ и потом ПОСТАВШИКА указываем. ну как-то так. мне бы накидать пару вариантов, да я сидел бы уже пробовал :)
31.03.2011 18:06
akonev
 
последние два условия - первый и второй уровни классификатора.
вместо моих '18.' и '6.' вставляешь свои номера по классификатору. также как у меня, с точкой.

если нужен только первый уровень классификатора - выкини условие с Item2.
нужно глубже - добавь такие же строчки с Item3 и так далее до Item10

выкинешь все условия с Item - будут все карточки из всех групп

раз у тебя больше с весом в четвертом поле - сделал под четвертое.

не забывай, что остатки по месту хранения не фильтруются. если мест хранения с остатками в базе больше, чем одно - надо добавлять условие.
Код:
select 
  replace(c.name,chr(9),' ') as name, 
  substr(c.name,instr(c.name,chr(9),1,3)+1,instr(c.name,chr(9),1,4)-instr(c.name,chr(9),1,3)-1) as ves, 
  g.quantity,
  v.tree,
  RTRIM(v.name1||'/'||v.name2||'/'||v.name3||'/'||v.name4||'/'||v.name5||'/'||v.name6||'/'||v.name7||'/'||v.name8||'/'||v.name9||'/'||v.name10||'/','/') as gr
from smcard c, smgoods g, svcardtreesplit v
where c.article=g.article
  and v.id=c.idclass
  and g.quantity<>0
  and v.Item1='18.'
  and v.Item2='6.'


Опции темы


Часовой пояс GMT +3, время: 02:17.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.