2016-07-25 13 views
0

В мой цикл, я пишу вставки и удаления запроса, который выполняет следующие действия:Удалить, если запись существует и вставка, если запись не существует

В случае, если флажок не проверить, то проверьте, запись есть & если есть, то удаление. Если этого не существует, ничего не делайте.

Если установлен флажок, проверьте также, существует ли запись &, если она существует, то ничего не делать, если она не существует, а затем вставить ее.

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

For Each oDataGridItem In valgrid2.Items 
     chk = oDataGridItem.FindControl("CheckBox1") 
     rn = oDataGridItem.FindControl("lblrptName") 
     rid = oDataGridItem.FindControl("lblReportID") 
     If chk.Checked = True Then 
      rpti = CType(oDataGridItem.FindControl("lblReportID"), Label).Text 

      'valsql2 = "INSERT INTO CompanyReportListTable(CompanyID, ReportID) Values (valCompanyId, rpti) WHERE NOT EXISTS(SELECT * FROM CompanyReportListTable WHERE ReportID <> rpti and companyid <> valCompanyId and " & chk.Checked & "= 1)" 
      'if it exists then don’t do anything 
      'valsql2 = valsq2 & ";IF ReportID = rpti and companyid = valCompanyId BEGIN WHERE CompanyID = CompanyID AND ReportID = ReportID END" 
      'To do nothing, i'd equal the parameter's value to the column name 

      count += 1 
      rptn = CType(oDataGridItem.FindControl("lblrptName"), Label).Text 
      oExArgs.Add(rptn) 
      Response.Write(rpti + " - " + rptn + "<br/>") 
     Else 
      'valsql2 = valsq2 & ";DELETE FROM CompanyReportListTable WHERE EXISTS(Select * FROM CompanyReportListTable WHERE ReportID = rpti and companyid = valCompanyId and" & chk.Checked & " = 0)" 
      'if it doesn't exist then don’t do anything 
      'valsql2 = valsq2 & ";IF ReportID <> rpti and companyid <> valCompanyId BEGIN WHERE CompanyID = CompanyID AND ReportID = ReportID END" 

     End If 
+0

Вы пытались запустить их? Что происходит? Вы получили сообщение об ошибке? Изменит ли он правильные данные? –

+0

Я получаю сообщение об ошибке из одного из подзапросов, но я запускался только один раз, потому что я не хотел менять свою базу данных в тот момент, пока не напишу правильные утверждения. –

+0

Что делать, если пользователь проверяет оба поля? – Plutonix

ответ

1
valsql2 = "INSERT INTO CompanyReportListTable(CompanyID, ReportID) Values (valCompanyId, rpti) WHERE NOT EXISTS(SELECT * FROM CompanyReportListTable WHERE ReportID <> rpti and companyid <> valCompanyId and " & chk.Checked & "= 1)" 

В этом коде " & chk.Checked & "= 1)" даст ошибку. True = 1, который не поддерживается в sql.

+0

Thanks Karthick. chk находится в интерфейсе и не находится ни в одном из столбцов или значений, поэтому он не понадобится. –

0

Не нужно было бы использовать инструкцию CASE, если вы не хотите, чтобы код ничего не делал, поскольку CASE будет работать с оператором SELECT. Поскольку запросы находятся под оператором If-Else, valsql2 = what, а не valsql2 = valsql2 & ";" потому что это условный оператор и независимо от условия, так будет и запрос. Запросы довольно хорошие, просто избавьтесь от chk.Checked = 0 и chk.Checked = 1

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