- Я предполагаю, что вы ожидаете одну строку или вам нужна только первая строка?
- Является ли MembersFullName nullable?Является ли NewsShortDesc обнуляемым?
- Вы должны всегда проверять свои входные данные, а не объединять их непосредственно в строку.Поэтому вам следует использовать функцию, которая проверяет и проверяет, что NewsID относится к ожидаемому вами типу и правильно экранирован, например:
SQL = SQL & " Where N.NewsId = " & SqlString("int", newsId)
4.Вы можете использовать синтаксис JOIN следующим образом:
(Предполагая функцию проверки ввода)
SQL = "SELECT N.NewsID, N.MembersID, N.CategoriesID, N.ImagesID, N.NewsTitle, N.NewsShortDesc, N.NewsDesc, N.NewsActive, N.NewsDateEntered, C.CategoriesID, C.CategoriesName, M.MembersID, M.MembersFullName"
SQL = SQL & " FROM News N"
SQL = SQL & " Inner Join Categories C"
SQL = SQL & " On C.CategoriesID = N.CategoriesID"
SQL = SQL & " Inner Join Members M"
SQL = SQL & " On M.MembersID = N.MembersID"
SQL = SQL & " Where N.NewsId = " & SqlString(VariantType.Integer
, NewsId)
SQL = SQL & " And N.NewsActive = 1"
(форматирование может быть странным)
РЕДАКТИРОВАНИЕ Вы должны попробовать обернуть все значения в CDATAвот так:
With Response
.Write "<row id='"& objViewNews("NewsID") &"'>"
.Write "<FullName><![CDATA["& objViewNews("MembersFullName") &"]]></FullName>"
.Write "<CategoryName><![CDATA["& objViewNews("CategoriesName") &"]]></CategoryName>"
.Write "<Title><![CDATA["& objViewNews("NewsTitle") &"]]></Title>"
.Write "<ShortDesc><![CDATA["& objViewNews("NewsShortDesc") &"]]></ShortDesc>"
.Write "<Desc><![CDATA["& objViewNews("NewsDesc") &"]]></Desc>"
.Write "<Date>"& objViewNews("NewsDateEntered") &"</Date>"
.Write "</row>"
End With
Я не обернул значение даты в CDATA, хотя вы могли бы также подумать об этом просто для уверенности.