SQL-запрос и Memo-поле, кто кого?

МаксиМ.М
Дата: 27.09.2005 09:57:22
Есть запрос:
SELECT
 X.Pole1,
 Y.Pole2

FROM
 X,
 Y

WHERE
 X.ID = 666 AND
 Y.Number IN (X.MemoPole)
Y.Number - Целое число
X.MemoPole - Memo, в данном примере его значение равно "1, 2, 3" (без кавычек)
Выдает несоответсвие типов данных. Можно это как-тоо побороть? Желательно запросом
Toking
Дата: 27.09.2005 10:21:39
Так не пойдет ... Access не будет парсить вашу строку ... после оператора IN должен следовать подзапрос или список значений, а не переменная, параметр или поле.

Можно сделать примерно так

SELECT
 X.Pole1,
 Y.Pole2

FROM Y

INNER JOIN X ON InStr(replace(X.MemoPole, " ", ""), "," + Y.Number + ",") <> 0

WHERE X.ID = 666 

Собственно не проверял, но смысл должен быть ясен
Пользователь2
Дата: 27.09.2005 10:50:31
SELECT X.Pole1, Y.Pole2, InStr([X]![MemoPole],[Y]![Number]) AS Log
FROM X, Y
WHERE (((X.ID)=666) AND ((InStr([X]![MemoPole],[Y]![Number]))<>0));
МаксиМ.М
Дата: 27.09.2005 12:04:32
Пользователь2
SELECT X.Pole1, Y.Pole2, InStr([X]![MemoPole],[Y]![Number]) AS Log
FROM X, Y
WHERE (((X.ID)=666) AND ((InStr([X]![MemoPole],[Y]![Number]))<>0));

Все хорошо, но "1" является подстрокой у "1" и у "11" :(
Allll
Дата: 27.09.2005 12:12:05
А если так:
SELECT X.Pole1, Y.Pole2, InStr([X]![MemoPole],[Y]![Number]) AS Log
FROM X, Y
WHERE (((X.ID)=666) AND ((InStr([X]![MemoPole],[Y]![Number] & ","))<>0));

Запятая должна быть и после последнего символа 1,2,3,
МаксиМ.М
Дата: 27.09.2005 12:13:04
Allll
Запятая должна быть и после последнего символа 1,2,3,

Ну нету тама запятой :'(
Пользователь2
Дата: 27.09.2005 12:31:22
Идею подсказал Toking от нее и отталкивайся.

SELECT X.Pole1, Y.Pole2
FROM X, Y
WHERE (((InStr(("," & [X]![MemoPole] & ","),("," & [Y]![Number] & ",")))<>0) 
AND ((X.ID)=666));
Allll
Дата: 27.09.2005 12:35:24
МаксиМ.М
Ну нету тама запятой :'(

А кто запрещает её туда поставить?
Неужели, в огромном memo-поле не найдётся места для одной маленькой запятой? :)

Запятая - ограничитель и она нужна в конце строки, чтобы было найдено последнее число "3".
МаксиМ.М
Дата: 27.09.2005 14:05:12
Пользователь2
Идею подсказал Toking от нее и отталкивайся.

SELECT X.Pole1, Y.Pole2
FROM X, Y
WHERE (((InStr(("," & [X]![MemoPole] & ","),("," & [Y]![Number] & ",")))<>0) 
AND ((X.ID)=666));

Гранд мерси *кланяется* , так и сделал.

Allll
А кто запрещает её туда поставить?

Тяжелые жизненные обстоятельства :)
Несообразил как-то сразу, подставить её в запросе с обоих боков.