Помогите!!!!!!! VBA и Accesse

Программирование на Visual Basic for Applications
UliyaP
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.10.2006 (Пн) 21:09

Помогите!!!!!!! VBA и Accesse

Сообщение UliyaP » 27.11.2006 (Пн) 17:54

Здравствуйте!!!!!
Помогите!!!!!!
Есть база данных в Access.
В ней две таблицы «Товары» и «Категория».
Необходимо все ячейки столбца «Описание» таблицы «Товары» сравнить 3 только первые три ячейки столбца «Слова» таблицы «Категории».
И если есть совпадения по какому-либо слову, то занести «Да» в ячейку столбца «Совпадения» таблицы «Товары».
Не знаю, как сравнивать!!!!!
Подскажите!!!!!!
Заранее спасибо!!!!!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 27.11.2006 (Пн) 18:04

что в вашем понимании слово "ячейки" :?:

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 27.11.2006 (Пн) 18:06

таблица в базе данных имеет Колонки(поля) (вы их назвали столбцами), а данные лежат в записях (ряд из полей таблицы)


теперь объясните на примере, что и как вам надо сравнить. Приветствуется структура таблиц и их содержимое, а также желаемый результат. :)
Последний раз редактировалось Konst_One 27.11.2006 (Пн) 18:08, всего редактировалось 1 раз.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 27.11.2006 (Пн) 18:06

не совсем понятно что значит все ячейки столбца «Описание» и только первые три ячейки столбца
если взять за ячейки записи, то примерно так

Код: Выделить всё
UPDATE Товары SET Совпадения = 'Да' WHERE Описание IN (SELECT TOP 3 Слова FROM Категория)


хотя ...
I Have Nine Lives You Have One Only
THINK!

UliyaP
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.10.2006 (Пн) 21:09

Сообщение UliyaP » 27.11.2006 (Пн) 19:23

Сейчас переделаю!!!!
Есть база данных в Access.
В ней две таблицы «Товары» и «Категория».
Необходимо все записи поля «Описание» таблицы «Товары» сравнить только 3 первые записи поля «Слова» таблицы «Категории».
И если есть совпадения по какому-либо слову, то занести «Да» в поле "Совпадения» таблицы «Товары».

Т.Е. надо сравнить два поля и если есть частичные совпадение в словах записать туда значение из третьего поля.
Надо сделать в коде VBA. У меня не получается!!!!!!

UliyaP
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.10.2006 (Пн) 21:09

Сообщение UliyaP » 27.11.2006 (Пн) 19:33

Могу ее вот так еще описать
Два поля, в двух таблицах(таб1 и таб2)
в одном поле табл. 1 записей много в другом поле таб.2 записей только 10.
И надо сравнить оргомное количество записей одного поля таб.1 с 10 записями другого таб.2, и если частично совпадают, то занести значения в другое поля табл.1 из другого поля табл. 2
Надо сделать в коде VBA. У меня не получается!!!!!!

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 28.11.2006 (Вт) 10:22

Лучше бы пример кинул...

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 28.11.2006 (Вт) 10:25

Вариант1:

Код: Выделить всё
UPDATE Товары SET Совпадения = 'Да'
WHERE (Описание Like '*модем*' Or Описание Like '*сканер*' Or Описание Like '*принтер*');



Вариант2:

Код: Выделить всё
UPDATE Товары SET Совпадения = 'Да'
WHERE (Описание Like '*'+(select слова from категория where категория.id=1)+'*' Or Описание Like '*'+(select слова from категория where категория.id=2)+'*' Or Описание Like '*'+(select слова from категория where категория.id=3)+'*');

UliyaP
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.10.2006 (Пн) 21:09

Сообщение UliyaP » 28.11.2006 (Вт) 10:48

Вот пример:
в первой таблице ест строка где, запись "SYMANTEC ANTIVIRUS FOR CACHING 4.3 IN LIC + GOLD MAINT 1YR VALUE BAND C" и запись"_"
во второй таблице есть строка, где запись "ANTIVIRUS" и запись "По" надо, что бы она сравнила строки и если совпадают записала то записла в пустое поле "ПО", если нет то "Иное".

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 28.11.2006 (Вт) 10:56

UliyaP
ну у тебя в этом примере строки совпадают или нет?

UliyaP
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.10.2006 (Пн) 21:09

Сообщение UliyaP » 28.11.2006 (Вт) 11:06

Да, в это совпадают, т.к. "ANTIVIRUS" входит в строку "SYMANTEC ANTIVIRUS FOR CACHING 4.3 IN LIC + GOLD MAINT 1YR VALUE BAND C"

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 28.11.2006 (Вт) 11:45

А дальше что ты хочешь сделать? Просто кнопку на форме? Или как ты будешь передавать поисковое слово для поиска? :?

UliyaP
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.10.2006 (Пн) 21:09

Сообщение UliyaP » 28.11.2006 (Вт) 11:56

поисковое слово должно браться из поля, получаюся что два поля сравниваются.
(в одном поле много слов,в другом одно.
И если поле в котором много слов содержит поле в котором одно слово, то происходит запись другого поля, если нет просьавляется "Иное").

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 28.11.2006 (Вт) 12:57

Вот тебе рыба:
Код: Выделить всё
rs.Open "select * from товары"
rs2.Open "select * from категория"
rs.MoveFirst
rs2.MoveFirst
Do Until rs.EOF
    Do Until rs2.EOF
        my_compare = rs.fileds("описание") Like "*" + rs2.Fields("слова") + "*"
        If my_compare = True Then
            rs.Fields("совпадения") = "Да"
            rs.Fields("тип") = rs2.Fields("тип")
            Exit Do
        End If
    Loop
    If my_compare = False Then
        rs.Fields("совпадения") = "Нет"
        rs.Fields("тип") = "Иное"
    End If
    rs.MoveNext
    rs2.MoveFirst
Loop
rs.Close
rs2.Close

где запись "ANTIVIRUS" и запись "По"

"ANTIVIRUS" - это поле rs2.Fields("слова")
"По" - это поле rs2.Fields("тип")
если совпадают записала то записла в пустое поле "ПО"

в пустое поле "ПО" - это поле rs.fields("тип")

UliyaP
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.10.2006 (Пн) 21:09

Сообщение UliyaP » 28.11.2006 (Вт) 13:17

ожешь напистаь полностью текст :oops::
он ругается: Method of data member not found
или что мне надо сделать?

UliyaP
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.10.2006 (Пн) 21:09

Сообщение UliyaP » 28.11.2006 (Вт) 13:31

все вроде получилось, огромное всем спасибо!!!!!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 107

    TopList