2012-07-04 2 views
-4

Может кто-то помочь мне с этим, им получаю ошибку синтаксиса, когда я запускаю мой код, я не знаю, что это может быть .. спасибо заранееНеверный синтаксис '. '

SqlCommand scGetPostings = new SqlCommand ("SELECT D1.dr,D1.cr,d1.asset_no ,(open_bal+dr-cr) as closing_balance FROM" + 
"(SELECT COALESCE(SUM(dr_amount),0) as dr, COALESCE(SUM(cr_amount),0) as cr,invasset.asset_no FROM posting,sysasset,invasset" + 
"WHERE posting.asset_no = invasset.asset_no AND posting.asset_no = @AssetNo, AND period >= asset_open_per GROUP BY invasset.asset_no)" + 
"as D1,asset", DataAccess.AConnection); 
+0

Try с и скопировать его в SQL Manager ... он должен сказать вам, где ошибка ... – Kek

+1

', как D1, возможно, это должно быть 'как D1.asset' –

+1

У вас есть запятая между вашими заявлениями И – stuartd

ответ

1

Проблема находится в пункте где:

WHERE posting.asset_no = invasset.asset_no AND posting.asset_no = @AssetNo, AND period >= asset_open_per 

Удалить запятая, и он должен работать. Как это:

WHERE posting.asset_no = invasset.asset_no AND posting.asset_no = @AssetNo AND period >= asset_open_per 
2

Добавьте некоторые пробелы в конце вашего линии, в противном случае это является результатом конкатенации:

FROM(SELECT 
invassetWHERE posting.asset_no 

...

UPDATE: фактическая ошибка происходит от WHERE posting.asset_no < - эта точка. Потому что, где положение не разбирается, и posting.asset_no, как ожидается, в качестве имени таблицы

+0

Пространства там не требуются синтаксически. 'select c from (выберите 1 как c) t' отлично работает. –

+0

@MS - да, это сработает, я добавил его только для примера. Следующая строка не будет работать. – Tisho

+0

Согласовано. Не уверен, что условия соединения также правильны. И кто знает, что «как D1, актив» должен быть для ... –

1
SqlCommand scGetPostings = new SqlCommand ("SELECT D1.dr,D1.cr,d1.asset_no ,(open_bal+dr-cr) as closing_balance FROM " + 
"(SELECT COALESCE(SUM(dr_amount),0) as dr, COALESCE(SUM(cr_amount),0) as cr,invasset.asset_no FROM posting,sysasset,invasset" + 
" WHERE posting.asset_no = invasset.asset_no AND posting.asset_no = @AssetNo AND period >= asset_open_per GROUP BY invasset.asset_no)" + 
"AS D1,asset", DataAccess.AConnection); 
+0

Можете ли вы объяснить, что вы изменили и почему? Кодовые ответы - не очень хорошие объяснения. – David

1

Добавить пробелы в конце строки фрагментов!

"(SELECT ...,sysasset,invasset " + 
"WHERE ... invasset.asset_no)" 

вместо

"(SELECT ...,sysasset,invasset" + 
"WHERE ... invasset.asset_no)" 
1

Избавьтесь от , после AND posting.asset_no = @AssetNo

Смежные вопросы