Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как скопирить часть содержимого из поля2 в поле1 ??? Access 2003
 
 автор: Alexey   (16.11.2007 в 09:47)   личное сообщение
 
 

Задача вот какая: есть поле2, в нем запись напр. CryslerCrossfire 2003г.в. цвет красный, пробег 70000км. Из этого всего нужно вырезать например, модель: Crossfire и поставить ее в поле1. Далее то же по всем записям таблицы..
В общем, как это реализовать в коде VBA?
Спасибо большое

  Ответить  
 
 автор: ДрЮня   (16.11.2007 в 09:57)   личное сообщение
 
 

Задачи такого рода практически неразрешими и не гарантируют 100% правильности сепарации (разбора) данных
нужно было думать на стадии формирования таблицы-источника данных, чтобы данные заносились в определенные поля, как-то
марка
цвет
год выпуска
и т.д.

попробуйте использовать функцию Split()

  Ответить  
 
 автор: Alexey   (16.11.2007 в 10:07)   личное сообщение
 
 

Дело в том, что таблица-источник - это импортируемый файл, содающийся постоянно не мной, но постоянно мной импортируемый. Вообще моя задача - преобразовать исх. таблицу в таблицу должного мне вида.
А как именно можно использовать Split? и задать изначально в коде условие поиска [Crossfire] из всей записи?
На VBA практикуюсь, (нравиться в нем капаться)

  Ответить  
 
 автор: час   (16.11.2007 в 10:05)   личное сообщение
 
 

Можно конечно создать в таблице с этими данными ещё одно поле
и в нём держать нужную фразу.
и досьавать их оттуда для второго поля или сразу они оттуда будут автоматом подставлятся при выборе в первое поле.

++++++++++++++++++++++++
Если всегда за назвнием идёт год выпуска то можно вырезать CryslerCrossfire , но никак не Crossfire т.к. неизвестно заранее длинна названия и т.д.

  Ответить  
 
 автор: Alexey   (16.11.2007 в 10:11)   личное сообщение
 
 

А можно ли задать условие поиска CryslerCrossfire (и всех прочих моделей), затем его заSplit-ить (не знаю как пока!) ну а далее уже обработать разбитый пробелом текст?

  Ответить  
 
 автор: osmor   (16.11.2007 в 10:34)   личное сообщение
 
 

читаем:
Like
instr
Mid

  Ответить  
 
 автор: Alexey   (16.11.2007 в 11:08)   личное сообщение
 
 

Нет точной позиции для фрагмента текста Crossfire, записи поля2, чтобы его найти. Может быть как то задать конкретно внутри кода "Crossfire", если сама модель (которая ищется - Crossfire) будет иметь пробелы с обеих сторон?

  Ответить  
 
 автор: osmor   (16.11.2007 в 11:18)   личное сообщение
 
 

зачем пробелы?
InStr найдет вам начальную позицию, дальше вырезайте с помощью MID
если хотите в запросе, то можно иcпользовать LIKE

  Ответить  
 
 автор: Alexey   (16.11.2007 в 11:57)   личное сообщение
 
 

Osmor, я не совсем понимаю, как будет выглядеть.. часть кода вырезающая текст "Модель" и вставляющая этот текст в поле левее.. только начинаю разбираться в вижуале

  Ответить  
 
 автор: osmor   (16.11.2007 в 12:11)   личное сообщение
 
 

если нужен кусок кода, то давайте задачу подробнее.
Сколько возможных "моделей", есть ли их полный список, если нет, то по каким "граничным" признака можно ыыделить "модель" из строки?

  Ответить  
 
 автор: Alexey   (16.11.2007 в 13:04)   личное сообщение
 
 

Нет, количество моделей ограничено. Вот модели "Crysler"-а: 300C, 300C Touring, Grand Voyager, PT Cruiser, Crossfire, Sebring.
Поле2 содержит: "CryslerCrossfire 2003г.в. цвет красный, пробег 70000км."

Примерно столько же для других производителей, но для одной модели наверное достаточно будет примера. Остальное аналогично можно будет...
(Такая же таблица есть по ПК, тоже импортится, но это похожая тема)

  Ответить  
 
 автор: aleksandr_72   (16.11.2007 в 13:07)   личное сообщение
 
 

Выложи пример, поле2 с данными и чего хочешь из этого получить

  Ответить  
 
 автор: osmor   (16.11.2007 в 13:20)   личное сообщение
 
 

да это было бы проще всего

  Ответить  
 
 автор: Alexey   (16.11.2007 в 13:29)   личное сообщение
 
 

Пример: Таблица: АВТО
Поле1 Поле2 Поле3
В Поле3 строка: CryslerCrossfire 2003г.в. цвет красный, пробег 70000км.
Хочу, чтобы в Поле1 скопирилось "Crysler"
в Поле2 скопирилось "Crossfire"
а все остальное осталось в Поле3.. Вот вся задача.

Под копированием понимаю
( Application.CutCopyMode = true)

  Ответить  
 
 автор: osmor   (16.11.2007 в 13:43)   личное сообщение
 
 

"Выложи пример, поле2 с данными "
Имелось ввиду файлик MDB таблицей и куском данных в ней
Под копированием понимаю
( Application.CutCopyMode = true)

вот этого не понял

  Ответить  
 
 автор: alexey   (16.11.2007 в 14:12)   личное сообщение
 
 

просто имел в виду, что не копирить, а вырезать-вставить. База как таковая не готова еще, в ней куча хлама, таблицу в ней пришлю сейчас.

  Ответить  
 
 автор: Alexey   (16.11.2007 в 15:26)   личное сообщение
14 Кб.
 
 

База Catalogue
Табличка Tech содержит поле3, откуда нужно скопирить название позиции (т.е."Ноутбук") в поле1, название фирмы-производителя (т.е. напр. ASUStec) в поле2, остальное (описание модели) оставить в поле3;

  Ответить  
 
 автор: osmor   (16.11.2007 в 16:10)   личное сообщение
23 Кб.
 
 

Ну здесь то легко... это совсем другой случай, здесь есть разделитель (пробел)

  Ответить  
 
 автор: Alexey   (16.11.2007 в 16:28)   личное сообщение
 
 

В том и дело, что в другой табличке многое идет слитно. я еще позадаю вопросы по ней если многоуважаемые господа программисты не против

  Ответить  
 
 автор: osmor   (16.11.2007 в 16:31)   личное сообщение
 
 

если поля идут слитно, то нужна таблица в которой отпределены те слова вхождения которых нужно искать. иначе невозможно их будет выделить

  Ответить  
 
 автор: Alexey   (16.11.2007 в 20:25)   личное сообщение
 
 

Osmor, а как сделать то же на VBA? Просто изначально, я планировал написать код, который бы делал много другого еще, ну и это вот копирование..
И как бы сделать в SQL, чтобы обойтись без доп. поля, т.е., чтобы оставшийся в поле3 текст, уходил бы напр. в память, а после обновления Поля3 (очистка) снова там появлялся.
Или же более тривиально наверное можно: после запроса - прибить поле Old и скопирить в Поле3 все из поле New...

  Ответить  
 
 автор: osmor   (19.11.2007 в 10:19)   личное сообщение
 
 

можно и без дополнительного. дополнительное я ввел что бы продемонстрировать, что бы можно было запрос несколько раз запустить, иначе исходные данные затирались бы
Это и так на VBA сделано...просто не оформлено в виде отдельной функции.

  Ответить  
 
 автор: Alexey   (19.11.2007 в 22:37)   личное сообщение
 
 

Спасибо за помощь Osmor
Т.е. как я понял, надо объявить INSTR, MID, Left, right и len как функции, и так же их задать?
Буду теперь думать, как это все проделать....

"..Respect is everything.."

  Ответить  
 
 автор: osmor   (20.11.2007 в 08:42)   личное сообщение
 
 

зачем что-то объявлять? эти функции стандартные функции VBA их нужно посто использовать

  Ответить  
 
 автор: час   (25.11.2007 в 23:24)   личное сообщение
 
 

А ВЫ смотрели запрос "q " из базы "Catalogue" в конструкторе запросов
там используются эти непонятные пока для Вас функции

INSTR, MID, Left, right 

откройте хелп и спросите Left,- многое проясниться --чес слово

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList