|
сепарация значений
|
|||
---|---|---|---|
#18+
Всем доброго дня! 8 лет не занимался Акцессом и программированием вообще, и не могу решить простую задачу. В импортируемой таблице данные представлены вот так: коднаименованиеколичество1Клиент1142Изделие183Изделие264Клиент2115Изделие136Изделие467Изделие528Клиент3159Изделие1810Изделие37 Т.е. в одном поле в виде записей перечислены покупатели и покупаемый ими товар. Хорошо, хоть есть поле (при чем ключевое) "код", однозначно задающее порядок записей, т.к. после записи "Клиент*" перечисляются позиции, покупаемые именно им. Короче, нужно представить в виде клиентнаименование количествоКлиент1Изделие18Клиент1Изделие26Клиент2Изделие13Клиент2Изделие46Клиент2Изделие52Клиент3Изделие18Клиент4Изделие37 Допустим, поле "Клиент" уже есть в исходной таблице с пустыми значениями. Его буду заполнять оператором UPDATE, по прежде... Просто запросами не получится, создать формочку и в VB с помощью циклов нужно проанализировать поле "Наименование". Не могу вспомнить как циклы к выборке применять. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 08:12 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Есть некая запись клиент наименование количество125 хрень125 1000 По каким признакам можно однозначно определить, клиент это или товар? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 08:20 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Akina, a as string Left( a ,6) = "Клиент" Left( a ,6)="издели" Хотя, можно и по первым 2-3 символам. Вопрос, как в а перебирать значения поля "Наименование" из исходной таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 08:29 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Что-то типа Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 08:38 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Я вообще забыл, как с SQL-запросами в VBA работать. Есть запрос "SELECT bla-bla ... FROM bla-bla-bla", запускаем с помощью RunSQL, как перебрать циклом поле "Наименование" из этого запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 08:38 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Пардон, там должно быть LEFT(наименование,1) = "К"... ну в общем разберёшься, логика должна быть понятна. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 08:39 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
BeliarЕсть запрос "SELECT bla-bla ... FROM bla-bla-bla", запускаем с помощью RunSQLАга... и результат уходит в никуда. Beliarкак с SQL-запросами в VBA работать Типа Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 08:43 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Akina, в strSQL должен содержаться текст запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 08:55 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Akina, авторDebug.Print .Fields("Наименование").Value Вот этим что делается? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 08:57 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Beliarв strSQL должен содержаться текст запроса?Да. BeliarВот этим что делается?Выводится значение в окно отладки. Безопасный способ убедиться, что получено верное значение, используется при трассировке (Locals/Watch не всегда удобны...). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 09:21 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Т.е. b принимает пустое значение, если это сам клиент, либо наименование клиента, если это изделие. Как бы теперь в каждом шаге Do Until присваивать полю Tab1.Клиент значение из b? И, кстати, перебор нужно делать в порядке, заданном в ключевом поле Tab1.Код, иначе рекорды все переебyтся, и будет неверная рассортировка товара по клиентам. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 09:51 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Код: vbnet 1.
Вот что ты хотел сказать этой строкой кода? Код: vbnet 1.
А это что за бредовая конструкция? И опять же текст запроса я тебе выше давал - а ты что в код засунул? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 10:27 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
AkinaИ опять же текст запроса я тебе выше давал - а ты что в код засунул? Забыл саму таблицу Tab указать, а воткнул текст для указанного случая простой выборки, без условий, но в рабочем варианте запрос будет другой коднаименованиеколичествоклиент1Клиент1142Изделие183Изделие264Клиент2115Изделие136Изделие467Изделие528Клиент3159Изделие1810Изделие37 Akina Код: vbnet 1.
Вот что ты хотел сказать этой строкой кода? Мож, я неверно понял. ("Наименование").Value - значение поля "наименование"? Akina Код: vbnet 1.
А это что за бредовая конструкция? Я неправильно сконструировал. Вот так Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Т.е. на каждом шаге цикла значение поля "наименование" помещаем в а , проверяем, если это "Клиент*", то в b берем это значение, а в поле "Клиент" - пустое "", если нет (т.е. это "изделие*"), то b остается прежним (т.е. то, что присвоили при предыдущем обнаружении значения "Клиент*", это я и делал с помощью условия left(a,1)="K"), и это же значение вставляем в поле "клиент". Должно получиться так: коднаименованиеколичествоклиент1Клиент1142Изделие18Клиент13Изделие26Клиент14Клиент2115Изделие13Клиент26Изделие46Клиент27Изделие52Клиент28Клиент3159Изделие18Клиент310Изделие37Клиент3 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 11:22 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 11:26 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
AkinaТипа Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 11:35 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
А ещё - посмотри встроенную справку по IF Statement. И сравни со своим опусом ПО БУКВАМ. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 11:36 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
AkinaА ещё - посмотри встроенную справку по IF Statement. И сравни со своим опусом ПО БУКВАМ. да сам увидел, then конечно же, а не when, это по запарке))))) AkinaAkinaТипа Код: vbnet 1. 2. 3.
Как раз то, чего я, видимо не знаю. Код: vbnet 1.
,т.е. а принимает значение из поля "наименование", или снова не то. И, наоборот, как вставить значение в поле? Код: vbnet 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 11:43 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
чувствую себя бараном, не могу сейчас ни старые работы свои посмотреть, ни в литературу залесть ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 11:45 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
BeliarКак раз то, чего я, видимо не знаю. Код: vbnet 1.
,т.е. а принимает значение из поля "наименование", или снова не то. И, наоборот, как вставить значение в поле? Код: vbnet 1.
? Почти. Только ещё нужно учесть, что ты находишься внутри With-блока, и с его учётом .Fields("Наименование").Value на самом деле есть rs.Fields("Наименование").Value. Конечно, всё это поддаётся упрощению - например, свойство Value есть свойство по умолчанию, так что rs.Fields("Наименование").Value эквивалентно rs.Fields("Наименование"). Ну и - поле рекордсета есть элемент коллекции его дефолтного свойства, так что rs.Fields("Наименование") эквивалентно rs!Наименование. Но мне, например, не нравятся подобные "упрощения" и кивание на дефолтность свойств. И да - в указанной версии открытия рекордсета он имеет тип Dynaset, так что имеет тип доступа Read/Write, и присвоение возможно. Если предварительно открыть запись на корректировку методом rs.Edit, и не забыть записать внесённые изменения методом rs.Update. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 12:25 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Akina, кажется, понял: Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 12:49 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Угу... ну с учётом типа данных поля и, соответственно, свойства Value этого поля. Если оно, скажем. числовое - нежелательно присваивать ему строку, надеясь на неявное приведение типов. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 13:02 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
Akina, Ну, спасибо огромное, завтра попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 14:14 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
теоретически-ДА,а реально,в "боевой" базе, Вы эту задачу не решите:как быть если клиент Трещоткин а изделие трещотка?(как говорил Козьма Прутков,за точность цитаты не ручаюсь,но как-то так: "На любую большую трубу обязательно найдется еще больший предмет который заткнет её) Реально только одно-настучать по голове тем кто представляет такие данные и добиться чтоб они были в адекватном виде ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2018, 15:55 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
А если в Debug.Print полностью задать имя контрола? Не пробовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 08:34 |
|
сепарация значений
|
|||
---|---|---|---|
#18+
учитывая что есть сортировка, необязательно привязываться к наименованию- пройти по числам исходя из того что число в 1-й строке- это сумма последующих, как добрали до первого числа количество - (или если больше- то это следующий клиент) - перешли к следующему клиенту и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 09:42 |
|
|
start [/forum/topic.php?fid=45&msg=39619611&tid=1611575]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 166ms |
0 / 0 |