2015-04-23 6 views
1

Я получаю эту ошибку:Ни DataColumn, ни DataRelation - ошибка asp.net

banner_flag is neither a DataColumn nor a DataRelation for table temp

После поиска, ошибка, по-видимому появляется, потому что я ссылки banner_flag, но она не существует, но я объявил это во всех тех же местах, что и intra_user (например).

Ниже приводится мой код, любая помощь с благодарностью. Спасибо !:

Dim reason As String = "" 
Dim banner_action As String = "" 
Dim esr_link As String = "" 
Dim seen_message AS String = "" 
Dim last_updated AS String = "" 
Dim daysSinceUpdated As Integer 
Dim intra_user As String = "" 
Dim banner_flag As String = "" 

Sub Page_Load(ByVal Sender As Object, ByVal e As EventArgs) 
    Dim sc As Web.HttpContext = Web.HttpContext.Current 
    Dim updatePeriod As Integer = 90 
    Dim strConn As String = getStrConn(sc) 
    Dim rst As DataView 
    Dim strsql, last_updated, email_address As String 
    Dim update_required As String = "" 

    ' - Really don't know what this is for... so I have commented it out. 
    ' - Response.Write("<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />hello no details") 

    ' Check users last update to their email address 
     strsql = "select last_updated, email, esr_link, intra_user, banner_action, seen_message from user_group where id = " & Session("u_id") & " AND (esr_link <> 5)" 
     rst = GetDefaultView(strsql, strConn) 

     If (rst.count > 0) Then 
     ' Get details for new banner check for launching windows at startup 
     If Not IsDBNull(rst(0)("banner_action")) Then 
     banner_action = rst(0)("banner_action").ToString 
     Else 
     banner_action = "" 
     End If 

     ' Get details for seen message 
     If Not IsDBNull(rst(0)("seen_message")) Then 
     seen_message = rst(0)("seen_message").ToString 
     Else 
     seen_message = "" 
     End If 

     ' Gets banner_flag value 
     If Not IsDBNull(rst(0)("banner_flag")) Then 
     banner_flag = rst(0)("banner_flag").ToString 
     Else 
     banner_flag = "" 
     End If 



     ' Gets the ESR link value to check if the New User code needs to run 
     If Not IsDBNull(rst(0)("esr_link")) Then 
     esr_link = rst(0)("esr_link").ToString 
     Else 
     esr_link = "" 
     End If 


     ' Gets the intra_user value 
     If Not IsDBNull(rst(0)("intra_user")) Then 
     intra_user = rst(0)("intra_user").ToString 
     Else 
     intra_user = "" 
     End If 



     ' Grab users last_updated value if available 
      If Not IsDBNull(rst(0)("last_updated")) Then 
       last_updated = rst(0)("last_updated").ToString 
      Else 
       last_updated = "" 
     End If 

     ' Grab users email address if available 
      If Not IsDBNull(rst(0)("email")) Then 
       email_address = rst(0)("email").ToString 
     email_address = Replace(email_address, "'", "") 

      Else 
       email_address = "" 
     End If 

      'Checks the email address to see if it is valid 
      If email_address <> "" Then 
       If IsEmailValid(email_address) = False Then 
        update_required = "true" 
        reason = "Your current Email address is invalid please  update it." & vbCrLf 
       End If 
      Else 
       update_required = "true" 
       reason = "You have not entered a current Email address please add one." & vbCrLf 
     End If 

      'If it not empty then compare 
      If last_updated <> "" Then 
       last_updated = CDate(last_updated) 
       daysSinceUpdated = DateDiff("d", last_updated, Now()) 
       If daysSinceUpdated > updatePeriod Then 
        update_required = "true" 
        reason &= "Your details have expired please check them to ensure they are up-to-date" & vbCrLf 
       End If 
       'If it empty then needs updating... 
      Else 
       update_required = "true" 
       reason = "Your details have expired please check them to ensure they are up-to-date" & vbCrLf 
     End If 

     rst.Dispose() 
     rst = Nothing 
     Session("checked_details") = "true" 

     If update_required = "true" Then 
      reason = Server.UrlEncode(reason) 
     'response.write(reason) 

      'Response.Write("<scr" & "ipt language='javascript'>findTop().submitURL('/sorce/app_centre/launch_form.aspx?fhandle=User_Details_Amendment&elemid=" & Session("u_id") & "&reason=" & reason & "');</scr" & "ipt>") 

     End If 

    Else 

     'Response.Write("<br /><br /><br /><br /><br /><br />hello details") 
     'Response.Write("<scr" & "ipt language='javascript'>findTop().submitURL('/sorce/app_centre/launch_form.aspx?fhandle=User_Details_Amendment&elemid=" & Session("u_id") & "&reason=" & reason & "');</scr" & "ipt>") 


    End If 
End Sub 

Function IsEmailValid(ByVal strEmail As String) As Boolean 
    Dim strArray() As String 
    Dim strItem As String 
    Dim i As Integer 
    Dim c As String 
    Dim blnIsItValid As Boolean 

    ' assume the email address is correct 
    blnIsItValid = True 

    ' split the email address in two parts: [email protected] 
    strArray = Split(strEmail, "@") 

    ' if there are more or less than two parts 
    If UBound(strArray) <> 1 Then 
     blnIsItValid = False 
     IsEmailValid = blnIsItValid 
     Exit Function 
    End If 

    ' check each part 
    For Each strItem In strArray 
     ' no part can be void 
     If Len(strItem) <= 0 Then 
      blnIsItValid = False 
      IsEmailValid = blnIsItValid 
      Exit Function 
     End If 

     ' check each character of the part 
     ' only following "abcdefghijklmnopqrstuvwxyz_-." 
     ' characters and the ten digits are allowed 
     For i = 1 To Len(strItem) 
      c = LCase(Mid(strItem, i, 1)) 
      ' if there is an illegal character in the part 
      If InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 And Not IsNumeric(c) Then 
       blnIsItValid = False 
       IsEmailValid = blnIsItValid 
       Exit Function 
      End If 
     Next 

     ' the first and the last character in the part cannot be . (dot) 
     If Left(strItem, 1) = "." Or Right(strItem, 1) = "." Then 
      blnIsItValid = False 
      IsEmailValid = blnIsItValid 
      Exit Function 
     End If 
    Next 

    ' the second part (domain.ext) must contain a . (dot) 
    If InStr(strArray(1), ".") <= 0 Then 
     blnIsItValid = False 
     IsEmailValid = blnIsItValid 
     Exit Function 
    End If 

    ' check the length oh the extension 
    i = Len(strArray(1)) - InStrRev(strArray(1), ".") 
    ' the length of the extension can be only 2, 3, or 4 
    ' to cover the new "info" extension 
    If i <> 2 And i <> 3 And i <> 4 Then 
     blnIsItValid = False 
     IsEmailValid = blnIsItValid 
     Exit Function 
    End If 

    ' after . (dot) cannot follow a . (dot) 
    If InStr(strEmail, "..") > 0 Then 
     blnIsItValid = False 
     IsEmailValid = blnIsItValid 
     Exit Function 
    End If 

    ' finally it's OK 
    IsEmailValid = blnIsItValid 

End Function 
+0

Вы всегда должны использовать параметризованные запросы вместо конкатенации строк для построения своих операторов sql. Это защитит атаки от SQL-инъекций. –

ответ

0

Ваш SQL заявление:

select last_updated, email, esr_link, intra_user, banner_action, seen_message from user_group where ... 

Поэтому будет столбец в возвращаемый DataView для intra_user, который присутствует в SQL SELECT, но не banner_flag, которая не является настоящее время.

+1

Спасибо !!!! Бог, который так раздражает, не может поверить, что я его пропустил. – SamFarr

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