|
v7: Помогите с прямым запросом | ☑ | ||
---|---|---|---|---|
0
Бамагите
21.03.21
✎
17:17
|
есть вот такой простой запрос
ТекстЗапроса = " |SELECT | Спр.ID as [Ссылка $Справочник.Номенклатура], | $Спр.Марка as [Марка $Справочник.Марка] |FROM | $Справочник.Номенклатура AS Спр в результатах выполнения запроса поле Марка пусто. Не могу понять почему. Марка это реквизит справочника Номенклатура, тип Справочник.Марка |
|||
2
Злопчинский
21.03.21
✎
17:24
|
что скажет на такое?
|
|||
3
Злопчинский
21.03.21
✎
17:26
|
...ну и попутно у меня вызывает сомнение что у тебя именно такая архитектура для марочного учета..
получаетяс у тебя для КАЖДОЙ МАРКИ в справочнике НОМЕНКЛАТУРА - отдельная карточка номенклатуры...? смысл тогда заводить отдельны справочник марко... пиши ВСЕ ДАННЫЕ о марке - СРАЗУ в карточку номенклатуры.. ;-) |
|||
4
Бамагите
21.03.21
✎
17:55
|
(1) в справочнике Номенклатура хранятся автозапчасти. Реквизит Марка соответственно от какой марки авто эта запчасть.
при таком запросе частично поле Марка заполняется, но очень мало где, при том что поле у товаров проставлено. При типизации в запросе у этих товаров в поле Марка отображается "Объект не найден" |
|||
5
acanta
21.03.21
✎
18:00
|
Требуется ли в этом же запросе получить id справочника марки и воспользоваться левым соединением?
|
|||
6
Бамагите
21.03.21
✎
18:10
|
(5) в целом мне нужно выбирать товары с фильтром по марке авто, по модели, по кузову, а я даже просто марку выбрать не могу...
|
|||
7
hhhh
21.03.21
✎
18:13
|
(0) почему Спр.ID без доллара, а $Спр.Марка с долларом? Это так и задумано?
|
|||
8
AAA
21.03.21
✎
18:20
|
Марка - случайно не периодический реквизит справочника Номенклатура ?
|
|||
9
Бамагите
21.03.21
✎
18:24
|
(8) нет
(7) такие правила |
|||
10
Бамагите
21.03.21
✎
18:25
|
Обычным черным запросом все работает, но оооочень долго
|
|||
11
Злопчинский
21.03.21
✎
18:27
|
(4) а, ну тады понятно. что это не марочный учет, уже легче ;-)
|
|||
12
evorle145
21.03.21
✎
18:27
|
(8) что такое "переодический" реквизит? о_О
|
|||
13
Злопчинский
21.03.21
✎
18:28
|
(4) "при таком запросе частично поле Марка заполняется, но очень мало где,"
- значит мало где введено |
|||
14
Злопчинский
21.03.21
✎
18:28
|
(4) "При типизации в запросе у этих товаров в поле Марка отображается "Объект не найден""
- битые ссылки. |
|||
15
Злопчинский
21.03.21
✎
18:30
|
(4) для начала - если это дбф - убить все индексные файлы и переиндексироватьяс начистовую
|
|||
16
vladmenleo
21.03.21
✎
18:32
|
(8) ставлю именно на это
(12) тут речь про 7.7 однако |
|||
17
Злопчинский
21.03.21
✎
18:35
|
(16) раз все тривиально. а не работает - значит автор на троллит и не все говорит...
|
|||
18
acanta
21.03.21
✎
18:39
|
(10) Галочку отбор в свойствах реквизита марка не ставили?
|
|||
19
AAA
21.03.21
✎
18:39
|
Причин может быть несколько
1 - периодический реквизит 2 - действительно мало где заполнен 3 - справочник не "Марка", а например "Марки". Точно не помню, но по моему ругаться не будет, а будет неверно типизтроваться |
|||
20
AAA
21.03.21
✎
18:40
|
(18)Галочка [X] - Отбор по моему никак не влияет
|
|||
21
vladmenleo
21.03.21
✎
18:40
|
(0) попробуй так
вместо $Спр.Марка as [Марка $Справочник.Марка] напиши $ПоследнееЗначение.Марка.Марка(Спр.ID, :НужнаяДата) Марка и параметр поставь типа ТекущаяДата() |
|||
22
acanta
21.03.21
✎
18:42
|
(20) в черном запросе используются индексы если они есть. В этом не знаю.
|
|||
23
vladmenleo
21.03.21
✎
18:43
|
(17) почему я поставил на периодику - когда пишешь в черном запросе, то там по умолчанию берется последнее значение, а в прямом нужно это явно указать
|
|||
24
Mikeware
21.03.21
✎
20:06
|
для начала, если не признаешься в типах и периодичности - дай скрин справочника "номенклатура" из конфигуратора.
ну и попробуй SELECT Спр.ID as [Ссылка $Справочник.Номенклатура], $Спр.Марка as [Марка $Справочник.Марка] FROM $Справочник.Номенклатура AS Спр ORDER BY $Спр.Марка DESC или SELECT Спр.ID as [Ссылка $Справочник.Номенклатура], $Спр.Марка as [Марка $Справочник.Марка] FROM $Справочник.Номенклатура AS Спр where $Спр.Марка <> $ПустойИд |
|||
25
Злопчинский
21.03.21
✎
20:48
|
(22) индексы - строятся по галке "Сортировка". А галка "Отбор" - исключительно для визуальных форм для фильтрации по значению поля.
|
|||
26
Злопчинский
21.03.21
✎
20:49
|
(25) ..то есть индексы и по "отбор" м.б строятся, но доя чорных запросов не используются
|
|||
27
Mikeware
21.03.21
✎
21:10
|
(26) а разве отбор без сортировки возможен? под рукой клюшек нет, снес все нахрен очередной раз...
|
|||
28
dmitryds
21.03.21
✎
21:37
|
может быть $Спр.Марка as [Марка $Справочник.Марки]
? |
|||
29
Злопчинский
21.03.21
✎
23:53
|
(27) отбор без сортировки - нет, наоборот - да. (так что - лень смотреть в DD - скорее всего отбор юзает индекс сортировки)
|
|||
30
trdm
22.03.21
✎
09:49
|
(28) ТОже подозреваю, что так.
|
|||
31
Mikeware
22.03.21
✎
10:42
|
(30) матюкнется жеж, на то, что не знает, к чему типизировать...
(29) дык! "сортировка" строит индекс, а отбор - позволяет его использовать интерактивно. |
|||
32
Бамагите
22.03.21
✎
10:54
|
||||
33
trdm
22.03.21
✎
11:02
|
(32) (0) > в результатах выполнения запроса поле Марка пусто. Не могу понять почему. Марка это реквизит справочника Номенклатура, тип Справочник.Марка
Возможно само заполнение поля в спр. Номенклатура совсем не "спр.марка", т.к. запрос просто не типизирует, а к примеру др. справочник. |
|||
34
Mikeware
22.03.21
✎
11:04
|
(32) по скрину видно, что не периодический. Теперь уточни тип значения реквизита Марка.
запросы из (24), особенно последний - что говорят? |
|||
35
trdm
22.03.21
✎
11:05
|
(4) > При типизации в запросе у этих товаров в поле Марка отображается "Объект не найден"
Это явно показывает на это. Может шаловливые ручки просто погуляли по справочнику и поудаляли часть записей "спр. марка." |
|||
36
trdm
22.03.21
✎
11:12
|
Если есть архив, то можно просто сравнить к примеру кол-во записей.
|
|||
37
Mikeware
22.03.21
✎
11:14
|
- мальчик, тебя как звать??
-- - ты что, тормоз? -- Вася! - а сколько тебе лет, Вася? -- сам ты тормоз!!! © |
|||
38
trdm
22.03.21
✎
11:14
|
(36) + ну и восстановить недостающие из архива. DTS-ом перетянуть к примеру.
|
|||
39
Бамагите
22.03.21
✎
11:35
|
(34) https://pastenow.ru/BXWHT
(24) вот такой запрос |SELECT | Спр.ID as [Ссылка $Справочник.Номенклатура], | $Спр.Марка as [Марка $Справочник.Марка] |FROM | $Справочник.Номенклатура AS Спр |WHERE | (( UPPER( STRTRAN( Спр.DESCR, ""-"","""" )) LIKE '%" + сПоиска + "%' ) OR | ( UPPER( STRTRAN( $Спр.ДопИнформация, ""-"","""" )) LIKE '%" + сПоиска + "%' ) OR | ( UPPER( STRTRAN( $Спр.Артикул, ""-"","""" )) LIKE '%" + сПоиска + "%' ) OR | ( Спр.CODE LIKE '%" + сПоиска + "%' )) AND | ( $Спр.Марка <> $ПустойИд ) |ORDER BY $Спр.Марка DESC выдает https://pastenow.ru/BXWOS |
|||
40
Бамагите
22.03.21
✎
11:36
|
https://pastenow.ru/BXWOS
у всех этих позиций выбрана Марка AUDI |
|||
41
Mikeware
22.03.21
✎
11:40
|
(40) если типизацию поля Марка убрать из запроса - что выдаст?
представление справочника "Марка" - в виде кода, и код пустой? |
|||
42
AAA
22.03.21
✎
11:56
|
Чудес не бывает. Запрос тривиальный. Если реквизит не периодический (этой картинки я так и не увидел), то теоретически могут быть
кривые индексы, но маловероятно. Возьми элемент номенклатуры с нормальной маркой и посмотри что для него выдает запрос без типизации. Напиши запрос к справочнику Марка, выбери все поля и посмотри какие там ID. Что-то тут не то |
|||
43
Mikeware
22.03.21
✎
12:00
|
(42) картинки в (32)(39) Не периодическй.
Просто, похоже, ТСу помощь нахрен не нужна. |
|||
44
Бамагите
22.03.21
✎
12:03
|
(42) без типизации:
https://pastenow.ru/BXX1X |
|||
45
Бамагите
22.03.21
✎
12:03
|
(43) помощь очень нужна, но оперативно отвечать не могу
|
|||
46
AAA
22.03.21
✎
12:07
|
Какой то странный ID без типизации. А плоскую выборку справочника Марка глянуть бы ?
|
|||
47
Mikeware
22.03.21
✎
12:09
|
если в dds SP8959 -это поле Марка справочника Номенклатура - то покажи, скрин где оно заполнено.
И срави элемент "колодки" и "ябагаж" |
|||
48
Mikeware
22.03.21
✎
12:11
|
(46) нормальный ид
|
|||
49
AAA
22.03.21
✎
12:14
|
(48)Какой он нормальный, сколько же у него там марок ?
|
|||
50
Mikeware
22.03.21
✎
12:17
|
(49) 5 миллионов 598 тысяч 945. запись создана в информационной базе № 815 :-)
|
|||
51
Злопчинский
22.03.21
✎
12:23
|
танцевать надо от (1) и (4)
всё. |
|||
52
Бамагите
22.03.21
✎
12:29
|
(46) выборка марок: https://pastenow.ru/BXXCO
(1) https://pastenow.ru/BXXDR (4) запустил выгрузку загрузку, жду. Переиндексация не помогла. |
|||
53
Бамагите
22.03.21
✎
12:34
|
||||
54
Бамагите
22.03.21
✎
12:35
|
(47) кстати база ДБФ
|
|||
55
Mikeware
22.03.21
✎
12:41
|
(54) на таком запросе - пофиг.
(52) привязано это поле на форме точно к реквизиту Марка? |
|||
56
Mikeware
22.03.21
✎
12:44
|
"ЯМусор, ябагаж" - зачёт!
|
|||
57
Бамагите
22.03.21
✎
12:48
|
(55) да, проверил
|
|||
58
Mikeware
22.03.21
✎
12:51
|
(57) в dds SP8959 -это поле Марка справочника Номенклатура ?
|
|||
59
AAA
22.03.21
✎
12:53
|
Почему в плоской выборке СПРАВОЧНИКА Марка Id как у обычной базы, а в выборке из номенклатуры как распределенной ?
|
|||
60
Бамагите
22.03.21
✎
13:12
|
вот что показывает ДБФ навигатор
https://pastenow.ru/BXXVA (58) да, https://pastenow.ru/BXXVV (59) у нас УРБД, это как-то влияет? |
|||
61
Ёпрст
22.03.21
✎
13:19
|
(60) запрос на чем хоть ? vfpoledb, надеюсь ?
|
|||
62
Ёпрст
22.03.21
✎
13:19
|
какой объект используешь для создания запроса ?
|
|||
63
Бамагите
22.03.21
✎
13:26
|
(61)
База = СоздатьОбъект("OLEDBData"); Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ() + ";Mode=ReadWrite;Collating Sequence=MACHINE"; |
|||
64
Mikeware
22.03.21
✎
13:50
|
(59) ну создавали в нераспределенной, потом распределили...
(60) судя по картинке нафигатора - запрос тянет чото не то |SELECT | Спр.ID as [Ссылка $Справочник.Номенклатура], | Спр.SP8959 as [Марка $Справочник.Марка] |FROM | $Справочник.Номенклатура AS Спр нормально отработает? |
|||
65
Бамагите
23.03.21
✎
06:37
|
Привет, простите за долгое отсутствие
(64) запрос |SELECT | Спр.ID as [Ссылка $Справочник.Номенклатура], | Спр.SP8959 |FROM | $Справочник.Номенклатура AS Спр возвращает тоже самое :( https://pastenow.ru/BY7YM |
|||
66
Бамагите
23.03.21
✎
06:41
|
https://pastenow.ru/BY80B
а вот это показывает база после выгрузки-загрузки |
|||
67
Mikeware
23.03.21
✎
07:42
|
(66) сдается мне, что у тебя с dd что-то, или с подключением к базе. я с дбф прямыми работал мало, терзай Ёп'а
|
|||
68
Бамагите
23.03.21
✎
14:26
|
Попробовал через 1SQlite:
БазаДанных = СоздатьОбъект("SQLiteBase"); БазаДанных.Открыть(":memory:"); Запрос = БазаДанных.НовыйЗапрос(); Запрос.ВыполнитьЗапрос("create virtual table Товары using dbeng(Справочник.Номенклатура)"); Текст = "SELECT |code Код, |id [Товар :Справочник.Номенклатура], |Товары.Марка [Марка :Справочник.Марка] |From Товары |WHERE | (( UPPER( REPLACE( Товары.DESCR, ""-"","""" )) LIKE '%" + сПоиска + "%' ) OR | ( UPPER( REPLACE( Товары.ДопИнформация, ""-"","""" )) LIKE '%" + сПоиска + "%' ) OR | ( UPPER( REPLACE( Товары.Артикул, ""-"","""" )) LIKE '%" + сПоиска + "%' ) OR | ( Товары.CODE LIKE '%" + сПоиска + "%' )) //| ( Товары.Марка <> $ПустойИд ) //|ORDER BY Товары.Марка |"; https://pastenow.ru/BYCOG через 1SQLite работает исправно... Чтото не так с 1С++ ? |
|||
69
Mikeware
23.03.21
✎
14:30
|
(68) смотри или dd или строку подключения. нечто похоже у меня было, когда я писал сам "типо драйвер для дбф", и ошибся в вычислении оффсета в записи...
|
|||
70
Ёпрст
23.03.21
✎
15:21
|
(68) всё так. Скорее всего,в словарике описания полей идут не в том порядке, что в самом дбф.
|
|||
71
Ёпрст
23.03.21
✎
15:21
|
Такое бывает, если новые реквизиты добавляли ручонками в дбф
|
|||
72
Djelf
23.03.21
✎
15:45
|
+(71) Видимо еще что-то делали: https://gyazo.com/b9f823564e6a8f825c4adf1831d84f46
Как оно вообще еще работает? oO |
|||
73
Бамагите
23.03.21
✎
16:07
|
(72) Год и Комментарий это строки неограниченной длины, может поэтому их нет в dd
Удалил dd, создал заново, год и комментарий не появились в dd запрос от 1cpp также криво отрабатывает неужели это изза длинных строк? |
|||
74
Mikeware
23.03.21
✎
16:09
|
(72) а откедова у тебя dd? читер?
|
|||
75
Бамагите
23.03.21
✎
16:11
|
(74) в (60) я его показывал
|
|||
76
Mikeware
23.03.21
✎
16:14
|
(75) ааа.... сапсэм йа плёхой стал...
|
|||
77
Ёпрст
23.03.21
✎
16:14
|
(73) нет. Тут все дело в волшебных реквизитах строка 999
|
|||
78
Mikeware
23.03.21
✎
16:14
|
(75) ну выклади куда-нибудь мд/дд..
|
|||
79
Ёпрст
23.03.21
✎
16:15
|
(73) строки неогр.длины хрпнятся в блобе..через ж..пу
|
|||
80
Mikeware
23.03.21
✎
16:17
|
но "год" - неограниченной длины - это, как минимум, оригинально...
там, наверное, описывется, все произошедшее за этот год... |
|||
81
Mikeware
23.03.21
✎
16:24
|
(79) наследие тех времен, когда в единицах ГБ измеряли диск, а не озу
|
|||
82
dmitryds
23.03.21
✎
16:54
|
(73) Вы прикалываетесь? Ни на одном скрине нет справочника марок. Везде справочник Номенклатура. Покажите в дереве конфигурации справочник Марок.
Все уже давно поняли, что реквизит справочника Номенклатура называется Марка. А теперь покажите справочник из которого выбирается это значение. (скрин дерева конфигуратора и скрин свойства поля Номенклатура.Марка) |
|||
83
Бамагите
23.03.21
✎
17:25
|
||||
84
Бамагите
23.03.21
✎
17:28
|
||||
85
Mikeware
23.03.21
✎
18:32
|
(82) анахуа он вам, пардон за мой французский?
(89) хм. чой-то я забыл, как там должно быть с полями неограниченой длины. завтра доковыряю. |
|||
86
AAA
23.03.21
✎
18:47
|
с полями неограниченной длины отдельная история, они хранятся, как уже тут было сказано, в отдельном файле, да еще и нарезаны блоками. Давно имел дело, мало приятного
|
|||
87
Ёпрст
23.03.21
✎
19:05
|
(86) да. скульлайт их нормально тащит, через фокс нужно писать обработку блоков..текст запроса валяется на 1cpp
|
|||
88
Mikeware
23.03.21
✎
19:32
|
(86) (87) а почему их в дд нет?
|
|||
89
Mikeware
23.03.21
✎
19:35
|
может, как вариант решения, сдвинуть их в конец списка реквизитов?
в конце концов, он же тянет не "неограниченные", а вполне себе ссылки... |
|||
90
Ёпрст
23.03.21
✎
19:40
|
(88) они же в блобе валяются, в отдельной табличке
|
|||
91
dmitryds
23.03.21
✎
20:08
|
(84) запрос верный. Могу только предложить попробовать проверить длину значения, которое возвращается, может тут проблема.
Потому что если подсунуть просто текстовый id из любой таблицы и указать правильно тип, то 1С++ его правильно преобразует. |
|||
92
Ёпрст
23.03.21
✎
20:40
|
Короче, ответ в (77)
Выкинь нахрен КомментарийJapan Строка 999 ..или сделай его короче. И всё будет работать и через vfpoledb Иметь такие строки, ну это полный пэ. |
|||
93
Злопчинский
23.03.21
✎
21:57
|
(92) то есть vfp просто не понимает такую длину строки и возвращает что-то кривое?
|
|||
94
Mikeware
24.03.21
✎
09:14
|
(93) vfp не учитыввает поля, котоых нет в этом dbf
(0) корроче, убираешь все свои суперполя (бесконечные и супердлинные) в конец списка реквизитов https://prnt.sc/10u161h , и все начинает работать https://prnt.sc/10u161h |
|||
95
Mikeware
24.03.21
✎
09:18
|
+(94) последняя ссылка - https://prnt.sc/10u1bgj
|
|||
96
Mikeware
24.03.21
✎
09:19
|
блин, все поперепутал
https://prnt.sc/10u1ccx |
|||
97
Ёпрст
24.03.21
✎
09:27
|
(94) там одно поле все портит..строка 999, омтальные можно не трога ть
|
|||
98
Djelf
24.03.21
✎
11:25
|
+(97) Точно. Очень мало с фоксом работал, забыл уже.
(0) Максимальная длина текстового поля для фокса 255 символов. Когда в поле 256 символов и больше фокс начинает сбоить на все последующие поля после этого поля. Передвинь КомментарийJapan в самый низ, либо используй 1sqlite, в нем этой проблемы нет. |
|||
99
Mikeware
24.03.21
✎
12:03
|
(97) (98) поле ДопИнформация - строка 500
|
|||
100
Mikeware
24.03.21
✎
12:03
|
Ну да ладно, проблема решена, моск немного размяли
|
|||
101
Бамагите
24.03.21
✎
13:17
|
Спасибо, Друзья! :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |