Foros del Web » Programando para Internet » ASPX (.net) »

SqlDataSource,varias consultas en Badas

Estas en el tema de SqlDataSource,varias consultas en Badas en el foro de ASPX (.net) en Foros del Web. Tengo un problemita jeje.. Tengo una pagina con lo siguiente: -Droplist con 5 ciudades (cada ciudad es un SqlDataSource distinto o Bases de Datos diferentes) ...
  #1 (permalink)  
Antiguo 27/02/2010, 11:39
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Exclamación SqlDataSource,varias consultas en Badas

Tengo un problemita jeje.. Tengo una pagina con lo siguiente:
-Droplist con 5 ciudades (cada ciudad es un SqlDataSource distinto o Bases de Datos diferentes)
-2 radiobutton (q son las columnas en las que van a buscar un numero:Referencia y cuenta)
-un textbox donde se le va a poner el numero a buscar

bueno.. la logica es que me busque el numero segun la opcion que le de del radiobutton y el droplist.. por ejemplo..

Buscar el numero 123456, escojo q me la busque en Referencia(radiobutton) y por ultimo en la ciudad de NewYork(droplist).. si no lo encuentra entoncs que me muestre mensaje de error

Aki esta el codigo donde deberia realizar las consultas..(solo pongo de una ciudad dado que supongo es el mismo sistema para las otras 4 restantes)

f DropDownList1.SelectedValue = "NewYork" Then
If rbtreferencia.Checked Then
If CType(sender, SqlDataSource).ID = "SqlDatasource4" Then
e.Command.CommandText = "SELECT NUM_REF,NUM_REC,FEC_ELAB,FEC_CIE,ESTATUS FROM TablaDatos WHERE NUM_REF= ('" & txtconsulta.Text & "')"
Else
e.Command.Parameters("@NUM_REF").Value = Nothing
e.Command.Parameters("@NUM_REC").Value = ""
End If
ElseIf rbtcuenta.Checked Then
If CType(sender, SqlDataSource).ID= "SqlDatasource4" Then
e.Command.CommandText = "SELECT NUM_REF,NUM_REC,FEC_ELAB,FEC_CIE,ESTATUS FROM TablaDatosWHERE NUM_REC= ('" & txtconsulta.Text & "')"
Else
e.Command.Parameters("@NUM_REC").Value =Nothing
e.Command.Parameters("@NUM_REF").Value = ""
MsgBox("No se encuentran los Datos", MsgBoxStyle.OkOnly)
End If
End If
End If

Aki el del SqlDataSource:
<asp:SqlDataSource ID="SqlDataSource4" runat="server" OnSelecting="SqlDataSource_Selecting"
ConnectionString="<%$ ConnectionStrings:BaseDeDatos1ConnectionString %>"



SelectCommand="SELECT NUM_REF, ESTATUS, NUM_REC, FEC_ELAB, FEC_CIE FROM TablaDatos WHERE (NUM_REF = @NUM_REF) OR (NUM_REC = @NUM_REC)">
<SelectParameters>
<asp:ControlParameter ControlID="txtconsulta" Name="NUM_REF"
PropertyName="Text" />
<asp:ControlParameter ControlID="txtconsulta" Name="NUM_REC"
PropertyName="Text" />
</SelectParameters>
</asp:SqlDataSource>

Bueno.. el error que me marca es este:

Unable to cast object of type 'System.Web.UI.WebControls.SqlDataSourceView' to type 'System.Web.UI.WebControls.SqlDataSource'.

De la linea donde dice: If CType(sender, SqlDataSource).ID = "SqlDatasource4" Then

Bueno.. alguien q me pueda ayudar?? Pueden ver le error q no puedo detectar??
De antemano.. gracias
  #2 (permalink)  
Antiguo 02/03/2010, 13:06
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Exclamación Respuesta: SqlDataSource,varias consultas en Badas

Lo resolví cambiandolo así..

If DropDownList1.SelectedValue = ("Nuevo Laredo") Then
If rbtreferencia.Checked Then

Me.SqlDataSource1.SelectParameters("NUM_REF").Defa ultValue = Me.txtconsulta.Text
Me.SqlDataSource1.DataSourceMode = SqlDataSourceMode.DataReader
objCmd.Connection.Open()
ObjLector = objCmd.ExecuteReader

If SqlDataSource1.SelectParameters("NUM_REF").Default Value = String.Empty Then
'si no devuelve un valor mandamos mensaje
MsgBox("Los Datos No Se Encuentran", MsgBoxStyle.OkOnly) ' Label1.Text = "No Hay Datos Del Registro"
Else 'si devuelve un valor mostramos en gridview
ObjLector = objCmd.ExecuteReader
Me.GridView1.DataSourceID = String.Empty
Me.GridView1.DataSource = ObjLector
Me.GridView1.DataBind()
ObjLector.Close()
objCmd.Connection.Close()
End If

ElseIf rbtcuenta.Checked Then

Me.SqlDataSource1.SelectParameters("NUM_REC").Defa ultValue = Me.txtconsulta.Text
Me.SqlDataSource1.DataSourceMode = SqlDataSourceMode.DataReader
sss2.Connection.Open()
ObjLector = sss2.ExecuteReader

If SqlDataSource1.SelectParameters("NUM_REC").Default Value = String.Empty Then
'si devuelve un valor nulo devolvemos mensaje
MsgBox("Los Datos No Se Encuentran", MsgBoxStyle.OkOnly) ' Label1.Text = "No Hay Datos Del Registro"

Else
'si devuelve un valor mandamos al Gridview
ObjLector = sss2.ExecuteReader
Me.GridView1.DataSourceID = String.Empty
Me.GridView1.DataSource = ObjLector
Me.GridView1.DataBind()
ObjLector.Close()
sss2.Connection.Close()
End If
End If

**Eso seria por cada opcion del droplist.. ahora los problemas son que :
1. El mensaje de error no me lo muestra.
2. Cuando doy un numero que existe en la bada NewYork pero lo busco en la de Paris, como quiera me lo muestra cuando deberia de darme el mensaje de error.. alguien que me ayude con esto???

si le pongo en lugar del :
If SqlDataSource1.SelectParameters("NUM_REC").Default Value = String.Empty Then

pongo lo siguiente:
If Not (ObjLector Is Nothing) Then

Ahi es cuando me muestra el mensaje de error que quiero.. pero me lo muestra siempre... a que se deberá esto??? alguien que me pueda iluminar??

Última edición por Joyliz; 02/03/2010 a las 13:20 Razón: Actualizacion de codigo
  #3 (permalink)  
Antiguo 02/03/2010, 13:37
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: SqlDataSource,varias consultas en Badas

Dejame ver... estas usando ASP cierto??
Lo primero que haria es revisar la siguiente linea:
MsgBox("Los Datos No Se Encuentran", MsgBoxStyle.OkOnly) ' Label1.Text = "No Hay Datos Del Registro"

Pues el msgbox no esta definido para ASP.NET, es decir lo puedes usar mientras estas desarrollando pero luego en implementación ya no mas.
Yo usaria algo asi:
Response.Write("<script>window.alert('Usuario ya Existe');</script>")

En cuanto al error que sale siempre me parece que es por lo siguiente;

If SqlDataSource1.SelectParameters("NUM_REC").Default Value = String.Empty Then

Aca estas diciendo que si el valor es igual a nada que de el mensaje (mira lo que te propongo arriba)

Y aca hace lo contrario
If Not (ObjLector Is Nothing) Then

Le dices que si el ObjLector no esta vacio, osea si tiene algo que de el error, por eso es que siempre te salta el mensaje.

Si fuera para saber si esta limpio creo que:
If Objlector is Nothing then

Saludos,
  #4 (permalink)  
Antiguo 02/03/2010, 17:29
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: SqlDataSource,varias consultas en Badas

Hola.. gracias por responderme.. antes de leer tu respuesta.. encontré q solo debia agregar 2 simples linea.. entonces quedo mi codigo asi..
Dim datgr As New DataGrid

Select Case (DropDownList1.SelectedValue)
Case "Piedras Negras"
If rbtreferencia.Checked Then
Me.SqlDataSource4.SelectParameters("NUM_REF").Defa ultValue = Me.txtconsulta.Text
Me.SqlDataSource4.DataSourceMode = SqlDataSourceMode.DataReader
objCmd.Connection.Open()
ObjLector = objCmd.ExecuteReader
datgr.DataSource = ObjLector

Me.GridView3.DataBind()
ObjLector.Close()
objCmd.Connection.Close()

If Me.GridView3.Rows().Count = 0 Then MsgBox("No se Encuentran Datos", MsgBoxStyle.OkOnly)

ElseIf rbtcuenta.Checked Then

Me.SqlDataSource4.SelectParameters("NUM_REC").Defa ultValue = Me.txtconsulta.Text
Me.SqlDataSource4.DataSourceMode = SqlDataSourceMode.DataReader
sss2.Connection.Open()
ObjLector = sss2.ExecuteReader
datgr.DataSource = ObjLector

Me.GridView3.DataBind()
ObjLector.Close()
sss2.Connection.Close()
If Me.GridView3.Rows().Count = 0 Then MsgBox("No se Encuentran Datos", MsgBoxStyle.OkOnly)

End If
...(demas ciudades mismo codigo)

Probe lo que me dijiste y no me gustó como salia jeje.. pero se te agradece tu sugerencia.. aora eso lo resolví bien.. pero falta de que si pongo un numero que se encuentra en base de datos PAris por ejemplo y yo lo busco en Nuevo Laredo.. pues debe de salir el error y hasta ahi vdd?? pero lo que hace es q me muestra el mensaje y luego sigue buscando en las otras bases de datos hasta encontrarla y la muestra...

No quiero que me haga eso.. a q creen q se deba?? Ya es lo unico q me falta.. ayuda por favor..!!!!!

Última edición por Joyliz; 03/03/2010 a las 10:13 Razón: Actualizacion
  #5 (permalink)  
Antiguo 16/03/2010, 16:35
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: SqlDataSource,varias consultas en Badas

Cita:
Iniciado por Joyliz Ver Mensaje
Hola.. gracias por responderme.. antes de leer tu respuesta.. encontré q solo debia agregar 2 simples linea.. entonces quedo mi codigo asi..
Dim datgr As New DataGrid

Select Case (DropDownList1.SelectedValue)
Case "Piedras Negras"
If rbtreferencia.Checked Then
Me.SqlDataSource4.SelectParameters("NUM_REF").Defa ultValue = Me.txtconsulta.Text
Me.SqlDataSource4.DataSourceMode = SqlDataSourceMode.DataReader
objCmd.Connection.Open()
ObjLector = objCmd.ExecuteReader
datgr.DataSource = ObjLector

Me.GridView3.DataBind()
ObjLector.Close()
objCmd.Connection.Close()

If Me.GridView3.Rows().Count = 0 Then MsgBox("No se Encuentran Datos", MsgBoxStyle.OkOnly)

ElseIf rbtcuenta.Checked Then

Me.SqlDataSource4.SelectParameters("NUM_REC").Defa ultValue = Me.txtconsulta.Text
Me.SqlDataSource4.DataSourceMode = SqlDataSourceMode.DataReader
sss2.Connection.Open()
ObjLector = sss2.ExecuteReader
datgr.DataSource = ObjLector

Me.GridView3.DataBind()
ObjLector.Close()
sss2.Connection.Close()
If Me.GridView3.Rows().Count = 0 Then MsgBox("No se Encuentran Datos", MsgBoxStyle.OkOnly)

End If
...(demas ciudades mismo codigo)

Probe lo que me dijiste y no me gustó como salia jeje.. pero se te agradece tu sugerencia.. aora eso lo resolví bien.. pero falta de que si pongo un numero que se encuentra en base de datos PAris por ejemplo y yo lo busco en Nuevo Laredo.. pues debe de salir el error y hasta ahi vdd?? pero lo que hace es q me muestra el mensaje y luego sigue buscando en las otras bases de datos hasta encontrarla y la muestra...

No quiero que me haga eso.. a q creen q se deba?? Ya es lo unico q me falta.. ayuda por favor..!!!!!
Doy por terminado el tema dado que ya lo solucioné.. pongo el codigo que agregué al principio de cada case para que no me mostrara los valores de los demas Gridviews..

Me.GridView1.Columns.Clear().. y asi de todos los Gridviews en cada case

Gracias..!!!!

Etiquetas: aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:03.