|
|
|
новичок
      
участник
Last Login: 19.04.2007 11:52
Сообщ.: 9,
Visits: 173
|
|
Вопрос у меня такой.
Есть две таблицы(тест1 и Тест2),в них два столбца QUEST и B1.
Так вот требуется сверить все эти данные .Если QUEST и B1 в таблицах тест1 и Тест2
совподают удалить из таблицы Тест1 одинаковые вопросы.Т.е каждую строку в столбцах QUEST и B1
сверить с таблицей Тест1 ,и удалить их из Тест2.????Незнаю понятно ли я обьяснил...
|
|
|
|
|
Supreme Being
      
участник
Last Login: 07.03.2008 19:04
Сообщ.: 328,
Visits: 1 857
|
|
Удаление из таблицы Test1 записей совпадающих с записями таблицы Test2
DELETE * FROM Test1 WHERE ([QUEST] & Chr(0) & [B1]) IN (SELECT ([QUEST] & Chr(0) & [B1]) FROM Test2);
|
|
|
|
|
новичок
      
участник
Last Login: 19.04.2007 11:52
Сообщ.: 9,
Visits: 173
|
|
На пустой базе которую сам сделал все отлично работает, но на базе которая мне нужеа выдает ошибку(Ошибочное поле Memo,объектаOLE или Объекта гиперссылки в подчиненном запросе '[QUEST] & Chr(0) & [B1]')
Посмотрите пожалуста я базу эту выложу...
|
|
|
|
|
Supreme Being
      
участник
Last Login: 07.03.2008 19:04
Сообщ.: 328,
Visits: 1 857
|
|
В тестовой базе у Вас поля QUEST и B1 были, наверное, текстовые , а в реальной, которую выложили, - Memo. Поэтому пробуйте так:
DELETE * FROM Test1 WHERE (CStr([QUEST]) & Chr(0) & CStr([B1])) IN (SELECT (CStr([QUEST]) & Chr(0) & CStr([B1])) FROM Test2)
|
|
|
|
|
Supreme Being
      
участник
Last Login: 13.03.2008 11:35
Сообщ.: 839,
Visits: 8 738
|
|
Вам же написали, что по полям Мемо сравнивать нельзя.
Создайте запрос ЗапросTest1:
SELECT Test1.№QUEST, Format([QUEST]) AS Q1, Format([B1]) AS B1_ FROM Test1;
и запрос ЗапросTest2:
SELECT Test2.№QUEST, Format([QUEST]) AS Q2, Format([B2]) AS B2_ FROM Test2;
А затем их и объединяйте.
Кстати, у Вас нет одинаковых значений...
|
|
|
|
|
новичок
      
участник
Last Login: 19.04.2007 11:52
Сообщ.: 9,
Visits: 173
|
|
| Спасибо за помощь. Я просто поменял тип поля на текстовый -работает ,только пишет что некоторые данные могут потерятся.что там может потерятся?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 07.03.2008 19:04
Сообщ.: 328,
Visits: 1 857
|
|
maliardo (13.04.2007) Спасибо за помощь. Я просто поменял тип поля на текстовый -работает ,только пишет что некоторые данные могут потерятся.что там может потерятся?
Длина текстового поля не может быть более 255 символов, а поля Memo - 65535. Поэтому при преобразовании поля Memo в текстовое поле длиной n в последнее помещаются n левых символов из Memo, а остальные правые теряются.
А что, вариант с функцией CStr не сработал?
|
|
|
|
|
новичок
      
участник
Last Login: 19.04.2007 11:52
Сообщ.: 9,
Visits: 173
|
|
BoNiM (13.04.2007)
maliardo (13.04.2007) Спасибо за помощь. Я просто поменял тип поля на текстовый -работает ,только пишет что некоторые данные могут потерятся.что там может потерятся?
Длина текстового поля не может быть более 255 символов, а поля Memo - 65535. Поэтому при преобразовании поля Memo в текстовое поле длиной n в последнее помещаются n левых символов из Memo, а остальные правые теряются.
А что, вариант с функцией CStr не сработал?
1)Функция Сstr работает но вылезла друга проблема ,в некторых столбцах B1 нет данных ,из -за этого выводит ошибку "недопустимое использование NULL"?
2)И еще такой вопрос оказалось ,что такой проверке между двумя таблицами недостаточен,необходимо сделать это еще и в каждой по отдельности т.е в самих находить одинаковые вопросответ.
p.s скажите я знаю ,что в столбцах B1_O находятся \Рисунок или формула к вопросу (объект OLE)\
но при попытке их открыть вылезает ошибка Активекс ,как их просмотреть?
посоветуйте книгу ...
|
|
|
|
| | |