Programación General > Bases de Datos

 Conexion Visual Basic-access Mediante Ado

(1/2) > >>

robbie110487:
Hola, un saludo, he practicado un poco mas de visual basic y hasta ahora todo bien, excetpo en las bases de datos que no estoy familiarizado, asi que me decidi a hacer un proyecto muy simple para empezar a practicar mediante el control ADO y MS Access, Se trata de un programa que gestiona los episodios de la serie Los Simpson mediante temporadas agregar, las temporadas estan en tablas distintas en una base de datos, en total hasta ahorita van 4 tablas, pero son 17 las uqe voy a, llevo casi un mes en ello, y planeo terminarlo en un par de meses mas, pero estoy atorado en una parte, y no quisiera quitar esa opcion ya que se me hace importante para practicar y quisiera aprender. Miren el dilema es el sig:

Al empezar el programa empieza un formulario MDI, el cual a traves de un menu manda llamar a un formulario MDI-Child con la temporada seleccionada, cada temporada es el mismo formulario solo cambio la tabla en el recordsource por la temporada correspondiente, hasta ahi muy bien. El problema es en el formulario de altas.. al teclear el numero de episodio y darle clicl a un command Button, se debe buscar a traves de todas las tablas para ver si esta dado de alta el episodio y que lo muestre en pantalla y mande un msgbox diciendo que ya existe en la base de datos, y si no existe que se muestren los demas campos a rellenar para completar el registro, lo intente mediante la sentencia if sin exito, miren el codigo:


--- Código: Text ---Private Sub cmdAceptar_Click()On Error Resume Next    If txtAltasnum = "" Then        MsgBox "Debes introducir un numero de episodio", 128, "Error"        txtAltasnum.SetFocus    Else        If Val(txtAltasnum.Text) >= 1 And Val(txtAltasnum.Text) <= 13 Then            frmTemporada.temp1.RecordSource = "temporada1"                ElseIf Val(txtAltasnum.Text) >= 14 And Val(txtAltasnum.Text) <= 35 Then            frmTemporada.temp1.RecordSource = "temporada2"         ElseIf Val(txtAltasnum.Text) >= 36 And Val(txtAltasnum.Text) <= 59 Then            frmTemporada.temp1.RecordSource = "temporada3"                ElseIf Val(txtAltasnum.Text) >= 60 And Val(txtAltasnum.Text) <= 91 Then            frmTemporada.temp1.RecordSource = "temporada4"        End If                Dim ncap As Long        Dim sAdoBuscar As String        Dim vbookmark As Variant        ncap = Val(frmAltas.txtAltasnum.Text)        sAdoBuscar = "num_cap=" & ncap        frmTemporada.temp1.Recordset.Find sAdoBuscar, 1        vbookmark = frmTemporada.temp1.Recordset.Bookmark         If Err.Number Or frmTemporada.temp1.Recordset.BOF Or frmTemporada.temp1.Recordset.EOF Then             Err.Clear                        Label2.Visible = True            Label3.Visible = True            Label4.Visible = True            txtAltasclacap.Visible = True            txtAltasclatemp.Visible = True            txtaltastemp.Visible = True            txtAltasclacap.SetFocus        Else        MsgBox "El episodio ya fue dado de alta, mas cuidado OK??"        frmTemporada.temp1.Recordset.Bookmark = vbookmark        frmTemporada.Hide        txtAltasnum.SetFocus        End If    End IfEnd Sub 
espero entiendan lo que quiero hacer... si queda alguna duda puedo adjuntar todo el proyecto para que lo observen, y me ayuden con eso, ya que en realidad sera un logro importante terminar el proyecto. Gracias de antemano.

Un saludo
Robbie

ElberGon:
 Oye si me muestras con que haces tu conexion y que tipo de variable u objeto es temp1 claro que puedo ayudarte . . .

robbie110487:
Bueno, tal como comente talvez no me explique bien, como decia, la conexion es mediante ado, y temp1 es precisamente el control Adodc, aqui dejo el protecto completo para que quede mas claro, aun no consigo hacer lo que quiero  :unsure:

salu2

ElberGon:
Cheque tu proyecto y si te falta mucho pero vas bien, tu problema ya lo solucione checalo si tienes dudas sigo en contacto con la discucion.segun yo y alo que entendi ya quedo tu problema pero checalo te adjunto el archivo:




Aunque dejame darte un consejo para ayudar a tu desarrollo en la Rama  yo en lugar de haber creado tantas tablas yo hubiera echo un campo llamado temporada de tipo numerico entero corto y solo hubiera creado Una tabla lo que tu estas haciendo genera mas espacio en disco y redundancia; un buen programador debe de tratar redundar lo menos posible . . . .

ElberGon:
Aqui esta con las modificaciones que te dije que yo le hubiera hecho checalo puede ser que te sirve modifique la Base de Datos y un poco de Codigo checalo y comparalo usa lo que mas te agrade  . . .



[email:3jbijfr4]elbertcastaneda@solectron.com[/email:3jbijfr4]

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa