Visual Basic Foro
Programación => Bases de Datos => Mensaje iniciado por: capoeira en Agosto 07, 2010, 09:32:56 am
-
Hola foreros, he publicado mi problema en varios foros, pero poco éxito he tenido en las contestaciones, haber si alguien me puede ayudar
le estaria eternamente agradecido ya que es algo que me haría mejorar en mi trabajo y seria ganar unos cuantos puntos.
Tengo una base de datos en oracle, con una tabla que se llama "EXPEDICION" y esta tabla tiene 3 campos (codigobulto, agencia, division)
Me gustaría que me explicaran como podría hacer para que al escribir en un textbox asociado al campo codigobulto y pulsar en un botón (buscar) me busque la fila que en el campo codigobulto = texbox.text y me mustre los otros 2 campos (agencia y division), y que cuando le de a otro botón guarde los cambios.
Hasta ahora solo he sabido hacer que muevan los registros a través de unos botones.
Os adjunto código
¡¡¡Muchas gracias de antemano!!
Imports System.Data
Imports System.Data.OracleClient
Public Class Form1
Dim tabla As DataTable
Dim DataA As OracleDataAdapter
Dim Fila As Short = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim CadenaConexion As String = "Data Source=ORCL;User Id=ORCL;Password=ORCL;"
Dim Conexion As OracleConnection = New OracleConnection(CadenaConexion)
DataA = New OracleDataAdapter("SELECT * FROM EXPEDICION", Conexion)
tabla = New DataTable
' Llenar la tabla con los datos indicados
DataA.Fill(tabla)
' Si se encontraron registros...
End Sub
Private Sub btnAnterior_Click() Handles btnAnterior.Click
If Fila > 0 Then
Fila = Fila - 1
MostrarDatos(Fila)
Else
MsgBox("No se puede ir al registro anterior. Este es el primer registro")
End If
End Sub
Private Sub btnSiguiente_Click() Handles btnSiguiente.Click
If Fila < (tabla.Rows.Count - 1) Then
Fila = Fila + 1
MostrarDatos(Fila)
Else
MsgBox("No se puede ir al registro siguiente. Este es el último registro")
End If
End Sub
Private Sub btnPrimero_Click() Handles btnPrimero.Click
Fila = 0
MostrarDatos(Fila)
End Sub
Private Sub btnUltimo_Click() Handles btnUltimo.Click
Fila = tabla.Rows.Count - 1
MostrarDatos(Fila)
End Sub
Private Sub MostrarDatos(ByVal f As Short)
TextBox1.Text = tabla.Rows(f)("codigobulto").ToString
TextBox2.Text = tabla.Rows(f)("division").ToString
TextBox3.Text = tabla.Rows(f)("agencia").ToString
End Sub
End Class
-
Me parece que solo estas usando ADO. Si te interesa te puedo ayudar como consulta SQL, cono ADO solamente no trabajo mucho.
-
Ante todo agradecerte tu contestacion, me da igual como hacerlo, si por ADO o por SQL.
Por favor ayudame, llevo muchos años sin manejar Visual Basic y el ponerme ahora despues de 12 años me esta constando.
Muchas Gracias de antemano
-
Siendo los siguiente controles
txCodigoBulto = para buscar el codigobulto
txAgencia = para la agencia
txDivision = para la division
lbCodigoBulto = para el codigo hallado
cmdModificar = para modificar los datos
Para buscar:
Dim rs As New ADODB.Recordset
sql = "Select agencia, division From EXPEDICION WHERE codigobulto = " & _
Trim(txCodigoBulto) 'nunca falta un chistoso que meta un espacio demas, por eso el Trim.
rs.Open sql, dB, 1, 1
If rs.RecordCount > 0 Then
LbCodigoBulto = Trim(txCodigoBulto)
txAgencia = rs.fields("agencia")
txDivision = rs.fields("division")
End If
Para modificar, pones dentro del control cmdModificar
sql = "Update EXPEDICION Set agencia = '" & txAgencia & "', division = '" & txDivision & _
"' Where codigobulto = " & lbCodigoBulto
dB.Execute sql, , adCmdText
Algunas observaciones.
1.- Me salto la parte de la conexión porque presumo ya la tienes y que debe estar en el main o en un módulo.
2.- Este es un código que deberás afinar para Oracle, no se que exquisitez tenga Oracle con respecto a su script, pero creo que debe funcionar.
3.- Los campos codigobulto, agencia y division no se que tipo de datos son, asumo que codigobulto es numérico y los otros texto o varchar, sino lo fueran quita las comillas simples según sea el caso.
4.- Te pongo un lbCodigoBulto para que solo modifique los otros dos en base a lo que se encontró.
Espero te sirva
-
Agradecerte tu ayuda, te comento los fallos que me da en buscar:
1º En la linea Sql = "Select agencia, divi.... me subralla la palabra SQL y me dice Visual que 'System.Data.SQL' es un espacio de nombre y no se puede utilizar como una expresion.
2º dB dB No se declara el nombre ¿deduzco que hay tengo que poner el nombre de la conexion, en mi caso 'CadenaConexion'?
3º en los rs.fields ("agencia y division") me dice: Se pueden producir errores en tiempo de ejecucion al convertir 'ADDB.Field' en 'String'- en cual no tengo ni idea que quiere decir eso.
Muchas Gracias
-
Como te dije, debes adaptarlo, es un acercamiento.
Sobre el 1: No me habia fijado en esta linea de tu codigo:
Imports System.Data
Esa linea es de .Net, no me habia percatado de ello en tu código, asi que has caso omiso a todo lo que explique porque no se nada de .Net, te puedo ayudar en VB6. (Como hablaste que hace 12 años no ves programación, deduje que querías la solución en VB6)
Sobre el 2: Por eso aclare que la conexión ya debería estar dada.
Sobre el 3: Consecuencia del fallo en el punto 2.
Como estas en .Net te sugiero ubiques un foro de .Net que allí debes encontrar la solución mas rápido. Ahora, en este foro hay varios que saben de .Net, pero seria cuestión de esperar a que respondan.
Saludos
-
Gracias.
Voy hacer una cosa, voy a instlar VB6 y te cuento.
Gracias
-
Borro este post por que he solucionado varios de los problemas que tenia.
Mil Gracias
En unas horas os comento que tal me ha ido todo
-
No borres nada, que a otra gente le puede servir, y que ademas invertí un tiempo para explicar lo que explique que de memoria no lo se.
-
Tienes razón, pero eran fallos tontos mios, sobre lo tuyo ¡¡perfecto!! lo has clavado solo has fallado en el codigo de guardar que en el update sobra
)"
Por lo demas felicitarte por tu gran sabiduria y agradecerte toda la ayuda.
Un Saludo
-
Chanfle, se me paso, jeje, ok ya lo edite para hacer honor a tus palabras.
Saludos y me alegra que halla podido ayudarte.