¿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.