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

Programación aspx.vb

Estas en el tema de Programación aspx.vb en el foro de ASPX (.net) en Foros del Web. ¿Qué tal? Este es mi primer tema, solicitando ayuda. ;) Me encuentro desarrollando una aplicación Web y tras realizar varias consultas en Google la respuesta ...
  #1 (permalink)  
Antiguo 26/11/2010, 17:13
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Programación aspx.vb

¿Qué tal? Este es mi primer tema, solicitando ayuda. ;)

Me encuentro desarrollando una aplicación Web y tras realizar varias consultas en Google la respuesta me trajo repetidamente a este foro, por lo que me dispongo a poner mi duda aquí.

A continuación les presento el contenido del archivo de código de una página de la aplicación, voy a marcar ciertas partes con (#) para hacer referencia a ellas (ninguna relación con Wikipedia XD ):


************CODIGO******************************** ********

Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.Odbc

Public Class saldosindividuales
Inherits System.Web.UI.Page

'Cadena de conexión'
Dim connectionString As String = _
"Dsn=Simapmysql;uid=root;pwd=root"

'Query predeterminado'
Dim queryBasico As String = _
"SELECT * FROM `websimap`.`saldos`"

'Query de la primera búsqueda
Dim queryString As String = queryBasico (5)

'Adaptador de la conexión (emplea query y cadena de conexión'
Dim adaptador As OdbcDataAdapter
'Dim adaptador As OdbcDataAdapter = New OdbcDataAdapter( _
queryString, connectionString) (6)

'Declaración del Dataset'
Dim saldosData As DataSet = New DataSet

'Variable para contener el nombre de la tabla saldos dentro del DataSet'
Dim tablaData As String



Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
tablaData = "Tablasaldos"
'adaptador = New OdbcDataAdapter( _ (1)
' queryString, connectionString)
'adaptador.SelectCommand.CommandText = queryString (7)
'adaptador.Fill(saldosData, tablaData)

End Sub

Protected Sub ButtonBuscar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonBuscar.Click

queryString = queryBasico + " WHERE " + DropDownListaBuscarp.SelectedValue + " LIKE '%" + TextBoxContenga.Text + "%'"
llenarDatos(queryString)
End Sub



Protected Sub llenarDatos(ByVal cadenaQuery As String)
'adaptador = New OdbcDataAdapter( _ (2)
' queryString, connectionString)
adaptador.SelectCommand.CommandText = cadenaQuery (8)
adaptador.Fill(saldosData, tablaData)
Dim pRow As DataRow
For Each pRow In saldosData.Tables(tablaData).Rows
MsgBox(pRow("ANoP").ToString())
Next
If (saldosData.Tables(tablaData).Rows.Count > 0) Then

pRow = saldosData.Tables(tablaData).Rows(0)
TextBoxNoP.Text = pRow("ANoP").ToString()
TextBoxRFC.Text = pRow("BRFC").ToString()
TextBoxNombre.Text = pRow("CNombre").ToString()
TextBoxMontop.Text = pRow("DMontop").ToString()
TextBoxTotalac.Text = pRow("ETotalac").ToString()
TextBoxMontoiq.Text = pRow("FMontoiq").ToString()
TextBoxMontoaq.Text = pRow("GMontoaq").ToString()
TextBoxQuincenasi.Text = pRow("Hquincenasi").ToString()
TextBoxEmision.Text = pRow("IEmision").ToString()
TextBoxQuincenasd.Text = pRow("JQuincenasd").ToString()
TextBoxSaldoar.Text = pRow("KSaldor").ToString()
TextBoxEstado.Text = pRow("LEstado").ToString()
Else
MsgBox("Valor no encontrado")
End If


End Sub


Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click (3)
MsgBox(queryString)
MsgBox(adaptador.SelectCommand.CommandText)

Dim pRow As DataRow
For Each pRow In saldosData.Tables(tablaData).Rows (4)
Console.WriteLine(pRow("ANoP").ToString())
MsgBox(pRow("ANoP").ToString())
Next
End Sub
End Class

***************FIN*********CODIGO***************** **********



Lo que intento es hacer una conexión manual a una base de datos en MySql, después realizar una consulta y llenar varios TextBox con los resultados de esa consulta.
El problema viene cuando la consulta arroja varios resultados.

Primero hacia el llenado del DataSet aquí (1), pero representaba llenar el DataSet con toda la tabla sin hacer nada todavía.
Después cambie el llenado del DataSet para acá (2). Inserté otro botón (3) donde me disponía a poner código para navegar entre los resultados de (2). El problema es que al dar clic en un botón el postback vuelve a cargar la página y elimina los resultados de la anterior consulta, diciéndome en (4) que necesitaba agregar una instancia.
Así que se me ocurrió intentar cambiar el valor de la cadena de la consulta y reactivar (1), pero lo que uso como comando de selección (queryString) siempre vuelve a tomar el valor de (5).
También intenté dejar la selección desde la declaración (6) y alterar el comando de selección (7), pero tuve el mismo problema.
El (4) lo utilizo para revisar el contenido del DataSet. Después dejé (6) sin comentar, (7) comentado y utilicé (8) para llenar el DataSet con la consulta que requiero, pero me llena el DataSet 2 veces.



Lo que busco es la manera de quitar el postback. En otros temas he visto que sugieren hacer esto con javascript, pero como ven, en esta ocasión requiero programación del lado del servidor.
Otra opción que pensé fue agregar una etiqueta con el texto ">" representando una flecha, pero requiero el evento clic para los objetos Label.
La respuesta más sencilla quizá sea poder modificar el valor de mis variables para que lo conserven después de que la página sea recargada, pero no he podido lograr esto.

Espero pudieran ayudarme.

MUCHAS GRACIAS.
  #2 (permalink)  
Antiguo 26/11/2010, 19:29
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Programación aspx.vb

si comprendo bien, la solucion es simple, es cuestion de utilizar bien la estructura basica de programacion de portales aspnet, y en este caso no veo que tengas control del post back por ningun lado. voy a poner tu evento load controlado para que solo cargue el contenido de t u tabla Tablasaldos la primera vez que se ingresa a la pagina, a partir de alli seras tu quien lo recargue cuando sea necesario.

Código vb:
Ver original
  1. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.  
  3. If Not IsPostBack then
  4.  
  5. tablaData = "Tablasaldos"
  6. 'adaptador = New OdbcDataAdapter( _ (1)
  7. ' queryString, connectionString)
  8. 'adaptador.SelectCommand.CommandText = queryString (7)
  9. 'adaptador.Fill(saldosData, tablaData)
  10.  
  11. End If
  12.  
  13. End Sub
  14.  
  15. con esto solo ingresa al realizar la carga inicial de tu pagina.
  16.  
  17. saludos espero te sirva de algo.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #3 (permalink)  
Antiguo 29/11/2010, 12:59
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Programación aspx.vb

Mmm, creo que podría funcionar. Aquí el problema viene cuando necesito hacer una consulta posterior, ¿cómo cambio el valor de queryString? Ya que por el nivel donde está declarada cada postback regresa al valor de la declaración.

O quizá intentando algo diferente pueda trabajar, ¿alguna idea para navegar entre los resultados de la consulta? La única condición es que sean de uno por uno.

Gracias por contestar tan pronto.
  #4 (permalink)  
Antiguo 29/11/2010, 16:25
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Programación aspx.vb

claro, cuando necesites hacer una nueva consulta, sera necesario volver a cargar el data set o datatable con la informacion de la consulta, es por ello que mensione

Cita:
a partir de alli seras tu quien lo recargue cuando sea necesario.
por lo cual debes tener un metodo o funcion que lo haga por ti y en el momento de cargar nuevamente un query solo tendrias que llamar ese metodo.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #5 (permalink)  
Antiguo 29/11/2010, 16:41
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Programación aspx.vb

Para hacer la consulta no tengo problema, le paso un SelectCommand modificado como lo puse inicialmente en el ejemplo en (8). Lo que no puedo es navegar entre los resultados de la consulta, ya que si agrego un botón que sirva como "siguiente", el postback, aunque no pase por el procedimiento Load, regresa las variables a los valores originales, así que solo puedo ver el primer resultado de la consulta.

Así que básicamente veo 3 posibles opciones, que se convierten en preguntas:
1. ¿Cómo elimino el postback de un botón?
2. ¿Cómo le hago para que el postback no regrese las variables a los valores iniciales?
3. ¿Cómo le agrego un evento onClick a una etiqueta?

Gracias
  #6 (permalink)  
Antiguo 29/11/2010, 19:30
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Programación aspx.vb

jejeje. bueno mira creo que esto cambiaria tus tres opciones a solo 1.

siempre los limpia, lo que debes hacer es utilizar una de las posibles opciones y seria usar variables de sesion.

ahora como lo haria?

te lo voy a explicar paso a paso:

1. creas un DataSet que contenga todas las tablas de resultados.
2. asignas tu DataSet a una variable de sesion.
3. cuando haces el postback debes preguntar por el estado de tu variable de sesion
4. obtienes la variable de sesion asignadola nuevamente a tu DataSet (OJO: haciendo conversion de tipo).
5. navegas al resultado necesario (por indice numerico, si lo deseas por nombre debs renombrarlos).

bueno asi lo hago con resultados a los cuales no me interesa pegar siempre a la bd.

saludos y suerte amigo.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #7 (permalink)  
Antiguo 30/11/2010, 10:39
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Programación aspx.vb

Ok. Voy a intentar esto. Gracias por la ayuda.

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 22:03.