2013-12-24 3 views
0

Я делаю сайт в VB.NET, который позволяет пользователям создавать и просматривать профили. Для первых двух пользователей профиль отображается отлично, но для любого пользователя с идентификационным номером, равным или превышающим три, он не работает. Что может быть причиной этого и как я могу это исправить?На моем веб-сайте отображаются только профили пользователей с первыми двумя идентификационными номерами. Как я могу правильно отобразить все профили пользователей?

Это код, который загружает профиль в веб-форму:

Public Sub cargarPerfil(cnn As SqlConnection, cmd As SqlCommand) 

    Dim perfil, nombre, nick, pais, ciudad, codigo, telefono, nacimiento, nivel, tipo1, tipo2 As String 
    Dim social, artistico, comercial, rango, titulo1, titulo2, titulo3, foto, credito As String 
    Dim da As New SqlDataAdapter 
    Dim dt As DataTable 

    perfil = "SELECT USUARIONOMBREREAL, USUARIONICK, PAISNOMBRE AS PAIS, CIUDADNOMBRE AS CIUDAD, USUARIOCODIGO, USUARIOTELEFONO, USUARIONACIMIENTO, " & _ 
      "TIPONOMBRE AS TIPO1, NIVELNOMBRE AS NIVEL, USUARIOSOCIAL, USUARIOARTISTICO, USUARIOCOMERCIAL, USUARIOFOTO, USUARIOCREDITO, " & _ 
      "RANGONOMBRE AS RANGO, TITULONOMBRE AS TITULO1 FROM USUARIO " & _ 
      "INNER JOIN PAIS ON USUARIO.USUARIOPAIS = PAIS.PAISID " & _ 
      "INNER JOIN CIUDAD ON USUARIO.USUARIOCIUDAD = CIUDADID " & _ 
      "INNER JOIN TIPO ON USUARIO.USUARIOTIPO1 = TIPO.TIPOID " & _ 
      "INNER JOIN NIVEL ON USUARIO.USUARIONIVEL = NIVEL.NIVELID " & _ 
      "INNER JOIN RANGO ON USUARIO.USUARIORANGO = RANGO.RANGOID " & _ 
      "INNER JOIN TITULO ON USUARIO.USUARIOTITULO1 = TITULO.TITULOID " & _ 
      "WHERE USUARIOID = '" & Session(Principal.User.UserID) & "' AND USUARIONICK = '" & Session(Principal.User.UserName) & "'" 

    With cmd 
     .CommandType = CommandType.Text 
     .CommandText = perfil 
     .Connection = cnn 
    End With 

    da.SelectCommand = cmd 
    dt = New DataTable 
    da.Fill(dt) 

    nombre = dt.Rows.Item(0).Item("USUARIONOMBREREAL") 
    nick = dt.Rows.Item(0).Item("USUARIONICK") 
    pais = dt.Rows.Item(0).Item("PAIS") 
    ciudad = dt.Rows.Item(0).Item("CIUDAD") 
    codigo = dt.Rows.Item(0).Item("USUARIOCODIGO") 
    telefono = dt.Rows.Item(0).Item("USUARIOTELEFONO") 
    nacimiento = dt.Rows.Item(0).Item("USUARIONACIMIENTO") 
    tipo1 = dt.Rows.Item(0).Item("TIPO1") 
    nivel = dt.Rows.Item(0).Item("NIVEL") 
    social = dt.Rows.Item(0).Item("USUARIOSOCIAL") 
    artistico = dt.Rows.Item(0).Item("USUARIOARTISTICO") 
    comercial = dt.Rows.Item(0).Item("USUARIOCOMERCIAL") 
    rango = dt.Rows.Item(0).Item("RANGO") 
    titulo1 = dt.Rows.Item(0).Item("TITULO1") 
    foto = "~/0/" + nombre + ".jpg" 
    credito = dt.Rows.Item(0).Item("USUARIOCREDITO") 

    dt = Nothing 

    perfil = "SELECT TIPONOMBRE AS TIPO2, TITULONOMBRE AS TITULO2 FROM USUARIO " & _ 
      "INNER JOIN TIPO ON USUARIO.USUARIOTIPO2 = TIPO.TIPOID " & _ 
      "INNER JOIN TITULO ON USUARIO.USUARIOTITULO2 = TITULO.TITULOID " & _ 
      "WHERE USUARIOID = '" & Session(Principal.User.UserID) & "' AND USUARIONICK = '" & Session(Principal.User.UserName) & "'" 

    With cmd 
     .CommandType = CommandType.Text 
     .CommandText = perfil 
     .Connection = cnn 
    End With 

    da.SelectCommand = cmd 
    dt = New DataTable 
    da.Fill(dt) 

    tipo2 = dt.Rows.Item(0).Item("TIPO2") 
    titulo2 = dt.Rows.Item(0).Item("TITULO2") 

    dt = Nothing 

    perfil = "SELECT TITULONOMBRE AS TITULO3 FROM USUARIO INNER JOIN TITULO ON USUARIO.USUARIOTITULO3 = TITULO.TITULOID " & _ 
      "WHERE USUARIOID = '" & Session(Principal.User.UserID) & "' AND USUARIONICK = '" & Session(Principal.User.UserName) & "'" 

    With cmd 
     .CommandType = CommandType.Text 
     .CommandText = perfil 
     .Connection = cnn 
    End With 

    da.SelectCommand = cmd 
    dt = New DataTable 
    da.Fill(dt) 

    titulo3 = dt.Rows.Item(0).Item("TITULO3") 

    dt = Nothing 

    lblNombre.Text = nombre 
    lblNick.Text = nick 
    lblPais.Text = pais 
    lblCiudad.Text = ciudad 
    lblCodigo.Text = codigo 
    lblTelefono.Text = telefono 
    lblNacimiento.Text = nacimiento 
    lblTipo1.Text = tipo1 
    lblTipo2.Text = tipo2 
    lblNivel.Text = nivel 
    lblSocial.Text = social 
    lblArtistico.Text = artistico 
    lblComercial.Text = comercial 
    lblRango.Text = rango 
    lblTitulo1.Text = titulo1 
    lblTitulo2.Text = titulo2 
    lblTitulo3.Text = titulo3 
    imgPerfil.ImageUrl = foto 
    lblCredito.Text = credito 

End Sub 

Это код, который создает профили в другом веб-форму:

Private Sub registro(cnn As SqlConnection, cmd As SqlCommand) 

    Dim nuevo, nombre, nick, pass, mail, pais, ciudad, codigo, telefono, nacimiento, nivel, tipo1, tipo2 As String 
    Dim social, artistico, comercial, rango, titulo1, titulo2, titulo3, foto, contrato As String 
    Dim savePathF As String = "F:\ComparteME\ComparteME\0\" 
    Dim savePathC As String = "F:\ComparteME\ComparteME\Reconocimientos\" 
    Dim fileNameF As String = txtNombreReal.Text + ".jpg" 
    Dim fileNameC As String = "Reconocimiento - " + txtNombreReal.Text + ".jpg" 
    Dim pathToCheckF As String = savePathF + fileNameF 
    Dim pathToCheckC As String = savePathC + fileNameC 
    Dim tempfileNameF As String = "" 
    Dim tempfileNameC As String = "" 

    nuevo = "" 

    nombre = txtNombreReal.Text 
    nick = txtNick.Text 
    pass = txtPassword.Text 
    mail = txtMail.Text 
    pais = ddlPais.SelectedValue 
    ciudad = ddlCiudad.SelectedValue 
    codigo = txtCodigo.Text 
    telefono = txtTelefono.Text 
    nacimiento = txtNacimiento.Text 
    nivel = ddlNivel.SelectedValue 
    tipo1 = ddlTipo1.SelectedValue 
    tipo2 = ddlTipo2.SelectedValue 
    foto = "" 
    contrato = "" 
    social = 0 
    artistico = 0 
    comercial = 0 
    rango = 1 
    titulo1 = 0 
    titulo2 = 0 
    titulo3 = 0 

    If (uplFoto.HasFile) Then 
     If (System.IO.File.Exists(pathToCheckF)) Then 
      Dim counter As Integer = 0 

      While (System.IO.File.Exists(pathToCheckF)) 
       tempfileNameF = counter.ToString() + fileNameF 
       pathToCheckF = savePathF + tempfileNameF 
       counter = counter + 1 
      End While 

      If counter > 0 Then 
       fileNameF = tempfileNameF 
      End If 

     End If 

     savePathF += fileNameF 
     uplFoto.SaveAs(savePathF) 

     foto = savePathF 
    End If 

    If (uplReconocimiento.HasFile) Then 
     If (System.IO.File.Exists(pathToCheckC)) Then 
      Dim counter As Integer = 0 

      While (System.IO.File.Exists(pathToCheckC)) 
       tempfileNameC = counter.ToString() + fileNameC 
       pathToCheckC = savePathC + tempfileNameC 
       counter = counter + 1 
      End While 

      If counter > 0 Then 
       fileNameC = tempfileNameC 
      End If 

     End If 

     savePathC += fileNameC 
     uplReconocimiento.SaveAs(savePathC) 

     contrato = savePathC 
    End If 

    nuevo = "INSERT INTO USUARIO (USUARIOID, USUARIONOMBREREAL, USUARIONICK, USUARIOPASSWORD, USUARIOENCRIPTADO, USUARIOCORREO, USUARIOPAIS, USUARIOCIUDAD, USUARIOCODIGO, USUARIOTELEFONO, " & _ 
      "USUARIONACIMIENTO, USUARIOTIPO1, USUARIOTIPO2, USUARIONIVEL, USUARIOSOCIAL, USUARIOARTISTICO, USUARIOCOMERCIAL, USUARIORANGO, USUARIOTITULO1, USUARIOTITULO2, " & _ 
      "USUARIOTITULO3, USUARIOFOTO, USUARIOCONTRATO) " & _ 
      "SELECT (ISNULL(MAX(USUARIOID), 0)+1), '" & nombre & "', '" & nick & "', '" & pass & "', PWDENCRYPT('" & pass & "'), '" & mail & "', " & pais & ", " & ciudad & ", " & codigo & ", " & _ 
      "" & telefono & ", '" & nacimiento & "', " & tipo1 & ", " & tipo2 & ", " & nivel & ", " & social & ", " & artistico & ", " & comercial & ", " & rango & ", " & _ 
      "" & titulo1 & ", " & titulo2 & ", " & titulo3 & ", '" & foto & "', '" & contrato & "' FROM USUARIO " 

    cnn.Open() 
    cmd.CommandText = nuevo 
    cmd.Connection = cnn 
    cmd.ExecuteNonQuery() 
    cnn.Close() 

    lblSuccess.Text = "¡Bienvenido a ComparteME! En un momento se comprobar&aacuten tus datos y tu cuenta será activada. Intenta iniciar sesión." 

    tblRegistro.Visible = False 
    tblSuccess.Visible = True 

End Sub 

Даже когда я делаю запрос непосредственно в SQLServer, он загружает только данные, когда ID < 3, а не выше. SQL выглядит так:

SELECT 
USUARIONOMBREREAL, 
USUARIONICK, 
PAISNOMBRE AS PAIS, 
CIUDADNOMBRE AS CIUDAD, 
USUARIOCODIGO, 
USUARIOTELEFONO, 
USUARIONACIMIENTO, 
TIPONOMBRE AS TIPO1, 
NIVELNOMBRE AS NIVEL, 
USUARIOSOCIAL, 
USUARIOARTISTICO, 
USUARIOCOMERCIAL, 
USUARIOFOTO, 
USUARIOCREDITO, 
RANGONOMBRE AS RANGO, 
TITULONOMBRE AS TITULO1 
FROM 
    USUARIO 
    INNER JOIN PAIS ON USUARIO.USUARIOPAIS = PAIS.PAISID 
    INNER JOIN CIUDAD ON USUARIO.USUARIOCIUDAD = CIUDADID 
    INNER JOIN TIPO ON USUARIO.USUARIOTIPO1 = TIPO.TIPOID 
    INNER JOIN NIVEL ON USUARIO.USUARIONIVEL = NIVEL.NIVELID 
    INNER JOIN RANGO ON USUARIO.USUARIORANGO = RANGO.RANGOID 
    INNER JOIN TITULO ON USUARIO.USUARIOTITULO1 = TITULO.TITULOID 
WHERE 
    USUARIOID = '1' AND USUARIONICK = 'SpuntikPPV' 
+1

«Это не работает» должно быть самым бесполезным комментарием, сделанным в вопросе на этом сайте. Скажите нам, как это не работает. Укажите, что произойдет, и что должно произойти, и опубликуйте только код, необходимый для воспроизведения проблемы. –

+0

Извините, я имею в виду, что он не загружает данные для пользователей с идентификатором выше 2. Когда идентификатор равен 1 или 2, он загружает информацию пользователя из таблицы в БД, если это не 1 или 2 он говорит, что нет данных, хотя есть. – PPizzaniV

ответ

0

Поскольку много информации отсутствует, я собираюсь угадать.

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