Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

Consulta sencilla en VB

Participa en el tema Consulta sencilla en VB en el foro Programación.
pongo tambien en el form_activate del formulario.. call cargargrilla y me manda "el argumento no ...2

Buscar en este tema:
< 1 2 3 4 5 >
 
  •  
    rmc08 escribió hace 2 meses
     
    #1 Consulta sencilla en VB
    Mostrar el primer mensaje completo
  • #11 Re: Consulta sencilla en VB

    pongo tambien en el form_activate del formulario..

    call cargargrilla y me manda "el argumento no es opcional" .. se que deberia ponerle algo entre parentesis despues de cargargrilla pero nose que es..
    Me gusta este mensaje
  • #12 Re: Consulta sencilla en VB

    Originalmente publicado por rmc08 Ver mensaje
    Bueno explico un poco... lo del rs.open lo puse mal en el codigo, en realidad era
    Código:
    rs.Open StrSql, cn, adOpenDynamic, adLockOptimistic
    
    y el proyecto es para un trabajo de la facu, es fictioso el nombre "RMC Systems", (se nota q soy estudiante no?? jaja) bue... em no tengo idea de como subir el proyecto a psicofxp, si queres te lo mando por mail.

    este codigo
    Código:
     If InStr(Cade, Right(Me.txtOpcion, 1)) <> 0 Then
    
    es para que en le vaya saliendo a medida que escribe la persona, por eso el Right (segun lo que me dijeron)

    una pregunta mas... que quiere decir el ME.txt.... osea el ME en el textbox ??


    saludos y gracias
    El Me, es una llamada a un objeto con un Pseudonimo.
    Por ejemplo: Yo estoy en el Formulario "Form1"
    "ME" es como Form1

    Ejemplo:
    Código:
    Form1.Text1.text = "Hola"
    
    Es lo mismo que poner
    Código:
     Me.Text1.text = "Hola".
    
    El "ME" puede ser mas util en funciones como en un Command1 pone

    Código:
    Private Sub Command1_Click()
        Unload Me
    End Sub 
    Si yo pongo

    Código:
    Private Sub Command1_Click()
        Unload Form1
    End Sub 
    Hace exactamente lo mismo.

    Por ello por ejemplo si uno tiene una funcion Llamada "Modificar_Formulario"donde requiere el Argumento el cual es el OBJETO formulario lo que podes hacer es.

    Modificar_Formulario Me

    Que seria lo mismo que poner

    Modificar_Formulario Form1
    En el caso que vos tenes poner "Me.algo" es al pedo, solo es redundar, porque los objetos estan en el mismo formulario.

    Otra cosa seria que desde el Formulario1 Manejes el Formulario 2

    En el Form1:
    Código:
    Private Sub Command1_Click()
        Form2.Show
        Form2.Text.Text1 = "GOL"
    End Sub 
    Igualmente no le busques mucho sentido, porque en realidad "Me" es para mas que nada, Argumentos cuando tenes funciones en modulos y tenes Formularios creados en tiempo de ejecucion, cosa que me imagino que todavia no viste.
    Por lo que "Me", nomas lo vas a poner ussar en funciones tontas o cosas simples como "Unload Me"

    Originalmente publicado por rmc08 Ver mensaje
    pongo tambien en el form_activate del formulario..

    call cargargrilla y me manda "el argumento no es opcional" .. se que deberia ponerle algo entre parentesis despues de cargargrilla pero nose que es..

    "El argumento no es Opcional".

    Esto que te voy a decir, en mi anterior post largo, te lo explique en una parte, porque me imagine que te iba a pasar.

    Como veras la funcion que vos llamas es

    Private Sub OptDatos(Index As Integer)

    Cuando escribis OptDatos te sale un cuadrito abajo con un (Index As Integer) en Negrita.
    Esto es porque ese es el Argumento.
    Lo que te remarca ese cuadrito en Negrita es que lo que escribas debe ser Integer, Osea Numerico y este entre -32768 y 32767

    Ademas nos indica que Index se va a llamar la variable que guardara el numero que le escribamos.
    Cuando pones
    Call OptDatos
    Lo que debes hacer es ponerle un numero a continuacion

    Ejemplo
    Código:
    Call OptDatos 3
    
    Incluso te di un metodo para poder hacer la consulta dependiendo el "Option" que haya seleccionado el usaurio.

    Todo esto, mas o menos lo explique.
    Me autocito yo mismo, en mi anterior post.

    Originalmente publicado por -HeavenMight- Ver mensaje

    Lo Importante.

    Como veras yo reemplace, todos los IF de los 'Option', por un Select Case Index.

    Bueno, como habiamos dicho los OptDatos o como los hayas llamado, se manejaban por un "Index".

    En el cabezal de la funcion puse un argumento que se llama "index" tambien aunque lo pude haber llamdo "pepe", "a", "VariableLoca",etc...

    A lo que me refiero a "Cabezal" y "Argumentos" es:
    Código:
    Private Function CargarGrilla(Index As Integer)
    
    Lo subrayado es "Cabezal" y lo que esta entre parentesis es "Argumento".

    Cuando llamas a la funcion, por ejemplo desde el Command1 pones
    Código:
    Private Sub Command1_Click()
         CargarGrilla 1
    End Sub 
    Cuando haces eso, llama a la funcion y automaticamente la variable "Index" en la funcion vale "1", si le hubieramos puesto "2000" en el Command1, cuando llamamos a la funcion, luego la variable Index valdria "2000".

    Lo mejorcito, que se podria hacer para que esta funcion funcione bien seria en el Comman1 o en el boton que usas o objeto que usas para llamar a la funcion poner:

    Código:
    Private Sub Command2_Click()
         Dim i As Byte
         For i = 1 To OptDatos.Count
             If OptDatos = True Then CargarGrilla i
         Next i
    End Sub 
    Para Subir el Proyecto a Psicofxp
    Metodo 1:
    Con Winrar O Winzip o 7z o algun compresor, compri todo los archivos de tu proyecto.

    Luego Anda a este link
    http://www.4shared.com/account/dir/1...xh7aQrWHG41Ink

    Posteriormente, en la parte inferior de la pagina, hay 1 boton que dice "Examinar ..."
    Busca el Archivo que quedo como resultado de comprimir los archivos del proyecto.
    Finalmente pone "Abrir".

    Para terminar, apretas el boton "Subir" que esta abajo de examinar.
    Cuando termine de subir el archivo. Te salta una ventana con una direccion, copiala y pegala en el foro.
    O simplemente decime "Ya lo subi" por medio del foro y listo.

    Yo reviso la carpeta, dado que ese link que te pase, es de una carpeta dentro de mi cuenta Premium de 4shared.

    Metodo2:
    Hace Click Aca


    Luego, cuando estas en el menu para crear tu post y responderme, abajo de los botones de "Vista preliminar" y "Eviar respuesta".
    Hay 1 boton que dice "Administrar archivos Adjuntos".
    Cuando le haces click, te sale un Popup (una ventanita) que tiene varios botones "examinar..."

    Luego, buscas los archivos o simplemente Comprimis todo con winrar y seleccionas ese archivo y muy a la derecha en esa misma ventana, veras un boton que dice "Adjuntar"
    Le das "adjuntar" y al final de la ventana a la derecha dice "Cerrar esta ventana".

    Luego le das "Enviar Respuesta" y listo, el archivo o los archivos estaran alojados en el foro.
    Te envio un mail con mi MSN.
    Me gusta este mensaje
  • #13 Re: Consulta sencilla en VB

    Ahi lo subi a 4Shared, se llama "sistema TP facu.rar " .........
    fijate que hay dos hay uno que dice actualizado ese es, porque le modifique un par de tonteras- ah y me da error ahi fijate cual es
    vas a ver que el frmPrincipal tiene varias opciones que tengo que hacer... pero bue como recien lo empiezo empece por esta parte que estuvimos discutiendo en el foro.

    gracias, saludos.
    Editado por rmc08 - 01.10.2009 21:45 hs.
    Me gusta este mensaje
  • #14 Re: Consulta sencilla en VB

    perdon por volver a postear pero tengo que aclarar...
    le modifique algunas cosillas tontas
    primero me daba error en
    Código:
     rs.Open StrSql, cn, adOpenDynamic, adLockOptimistic
    
    era porque en el proyect no tenia como inicial al submain() que contiene la conexion,
    segundo me daba error en el campo Fecha de alta, era porque en el access estaba FechaDeAlta
    y tercero me daba error cuando ponia grilla.clear ....
    era porque mi grilla tenia otro nombre el default ¬¬ ....

    igual me sigue sin andar la busqueda cuando aprieto algun optionbutton,, solo muestra tdos los datos
    Editado por rmc08 - 02.10.2009 00:34 hs.
    Me gusta este mensaje
  • #15 Re: Consulta sencilla en VB

    Listo encontre el Error, era 1 pavada.

    Código:
    Private Function CargarGrilla(Index As Integer)
        Dim Cade As String
        Cade = "1234567890"
        Select Case Index
            Case 0
                If txtOpcion = Empty Then
                    StrSql = "Select id, Nombre, Apellido, Telefono, Direccion, FechadeAlta from Personas"
                Else
                    If Not IsNumeric(Me.txtOpcion) Then
                        StrSql = "Select id, Nombre, Apellido, Telefono,Direccion, FechadeAlta from Personas" & Me.txtOpcion.Text
                    Else
                        MsgBox "El codigo de cliente solo puede ser numérico", vbInformation, "sistemas"
                        txtOpcion = Empty
                        txtOpcion.SetFocus
                    End If
                End If
            Case 1
                If txtOpcion = Empty Then
                    StrSql = "Select id, Nombre, Apellido, Telefono, Direccion, FechadeAlta from Personas"
                Else
                    StrSql = "Select id, Nombre, Apellido, Telefono, Direccion, FechadeAlta from personas where apellido like '%" & txtOpcion.Text & "%'"
                End If
            Case 2
                     'StrSql = "Select id, Nombre, Apellido, Telefono, Direccion, FechadeAlta from personas where fechahora like '" & Fecha & "%'"
                     StrSql = "Select id, Nombre, Apellido, Telefono, Direccion, FechadeAlta from personas where Nombre='" & Nombre.Text & "'"
            Case 3
                     StrSql = "Select id, Nombre, Apellido, Telefono, Direccion, FechadeAlta from personas where Telefono ='" & txtOpcion.Text & "'"
        End Select
        rs.Open StrSql, cn, adOpenDynamic, adLockOptimistic
        Dim grilla As MSFlexGrid '<----- Agregado
        Set grilla = MSFlexGrid1  '<------ Agregado
        grilla.Clear
        grilla.Rows = 1
        grilla.FormatString = "ID     | Nombre                               |Apellido                                                          | Teléfono                                  | Direccion     "
        Do While Not rs.EOF
            grilla.AddItem rs!id & vbTab & rs!Nombre & vbTab & rs!Apellido & vbTab & rs!Telefono & vbTab & rs!Direccion
            rs.MoveNext
     Loop
        rs.Close
    End Function 
    El error estaba en que

    vos tenias

    StrSql = "Select id, Nombre, Apellido, Telefono, Direccion, Fecha de Alta from personas

    En donde las palabras estan separadas, ahora vos en tu tabla tenes "FechaDeAlta" todo junto.

    Por ende no funcionaba la consulta, no era problema del programa sino de como estaba escrita la consulta
    Código:
    Private Sub Form_Activate()
    CargarGrilla 1
    End Sub 
    En el Form_Active, podes sacarle el parentesis, no hace falta que los pongas.

    Suponete que tenes una funcion asi

    Código:
    Private Function MostrarTexto(Texto As Integer, Sexo As String )
        Select Case Texto
            Case 1
                If Sexo = "Masculino" Then
                    MsgBox "Bienvenido Señor"
                Else
                    MsgBox "Bienvenido Señora"
                End If
            Case 2
                If Sexo = "Masculino" Then
                    MsgBox "Disculpe Señor, no puso bien los datos"
                Else
                    MsgBox "Disculpe Señora, no puso bien los datos"
                End If
        End Select
    
    End Function 
    Como veras en el cabezal tiene los Argumentos siguientes : TEXTO Y SEXO

    Private Function MostrarTexto(Texto As Integer, Sexo As String )

    ¿Como hago para llamar a esta funcion correctamente?
    Código:
    Private Sub Form_Activate()
    MostrarTexto 1, "Masculino"
    'o si no ....
    MostrarTexto 1, "Femenino"
    'o si no ....
    MostrarTexto 2, "Masculino"
    'o si no ....
    MostrarTexto 2, "Femenino"
    
    End Sub 
    El Primer argumento es "TEXTO" y es de tipo INTEGER, en la funcion el SELECT CASE usa "1" y "2".
    Por ello en el primero ponemos 1 o 2.
    En el segundo Argumento tenemos "SEXO" que es de tipo STRING.
    Y el IF de la funcion evalua si es "Masculino" o "Femenino".

    Entonces ponemos una COMA despues del PRIMER ARGUMENTO : Asi " 1, "Masculino" "
    Y asi a continuacion pones "Masculino o Femenino".

    Esta funcion que hice, nomas reconoce a "masculino", si le pones "PERRO" o "CASA" lo toma como Femenino porque nomas puse ELSE en los IF.
    Pero si les pongo
    Código:
     ElseIf Sexo = "Femenino" Then 
    Funcionara solo con "Masculino y Femenino".

    Y asi cuando llamo a la funcion por el "Form_Active" o el "Form_Load" la funcion debe tener "UN NUMERO y COMA y "MASCULINO O FEMENINO".


    ACOTACION, Las OCX que usas para los botones no las tengo por ello no se me ven.
    SI algun dia queres llevar tu proyecto a la Escuela o Universidad.
    Lo que tenes que hacer para que siempre funcione es tener las OCX Dentro de la Carpeta que me pasate.
    Y asi, si no las encuntra en donde vos las tenias ejemplo C:\Pepe\OCX.
    Entonces las busca en la misma carpeta del proyecto y te acomoda todo solo.
    Me gusta este mensaje
  • #16 Re: Consulta sencilla en VB

    Ah bien entendi, ahora el codigo agregado
    Código:
     Dim grilla As MSFlexGrid 
        Set grilla = MSFlexGrid1
    
    estas declarando la variable grilla como un objeto es eso no?,
    y Set grilla...q le estas diciendo con eso?.

    che la verdad que me parece que me voy a dedicar a otra cosa, cada vez que le doy a ejecutar me sale un error distinto y es frustrante..
    ahora me salto error con la linea:
    Código:
    Set Grilla = MSFlexGrilla
    
    "se requiere un objeto", y nose porque ya que si tengo el objeto!! que es Grilla ! y que arriba esta declarado:
    Código:
     Dim Grilla As MSFlexGrid
    
    ---------
    edito:

    le cambie el set grilla = msflex grid por set grilla = grilla
    ahora pasa esa parte pero me sale otro error, q raro los errores.
    en el codigo grilla.clear sale " error 91, Variable de tipo object o la variable del bloque with no esta establecida" y eso que busco en internet la posible solucion...


    gracias nuevamente. saludo
    Editado por rmc08 - 02.10.2009 15:26 hs.
    Me gusta este mensaje
  • #17 Re: Consulta sencilla en VB

    Hago 1 cosa.

    Hoy a eso de las 12:30, te subo el proyecto funcionando porque a mi me funciono, no te lo paso ahora, porque aca en la officina no puedo agregar OCX a los proyectos.
    Pero en mi casa no hay drama.
    Cuando salgo de trabajar ( hoy sabado me toco ¬¬ ) te lo paso.


    Con respescto a tu duda, SI. Es como crear un Objeto, nada menos que es por medio de Codigo y no x el mouse.
    Me gusta este mensaje
  • #18 Re: Consulta sencilla en VB

    Okey, miles de gracias de nuevo...ya me fijo mas tarde
    Me gusta este mensaje
  • #19 Re: Consulta sencilla en VB

    Perdon por subirlo tarde, pero me tire a dormir un rato, me vinieron a buscar para jugar 1 partido de futbol y encima despues me colgue en el ciber :P

    Aca esta

    http://www.4shared.com/file/13739165...a_TP_facu.html


    Estem... Hay 1 OCX que no lo encontre que es el Foxlib.ocx, no se que hace o para que sirve.
    Igualmente no afecta al proyecto x ahora segun veo.

    Eso si, cuando te lo descargues, vas a tener que agregarlo de nuevo, porque yo al no tenerlo, no queda en el proyecto cuando lo grave.

    Mira a mi me funciono, este es el screen shot



    PD: Decime para que sirve o que hace el OCX - Foxlib, No me dejes con la intriga
    Me gusta este mensaje
  • #20 Re: Consulta sencilla en VB

    che lo baje y no me tira ningun error .. pero a la vez no me funca osea F5 y le pongo algo en el txtopcion y nada ni se inmuta... pero bue, como ya me habia cansado, le puse un ADO data control y con el recordset he hecho muchas mas cosas y de manera mas rapida... imaginate que solo en esta tarde, ya he terminado el buscador, Con el bendito Adodc.

    A proposito muy linda la interfaz de ese XP, lo veia raro.... lo abri en el mio y se ve distinto (Vista) .

    A mi nunca me pidio una ocx Foxlib, solo use el chamaleonButton.ocx,

    el UserControl.ctl era para ponerle el menu Ribbon de office 2007 que me lo pasaron uns compañeros, pero entre ida y vuelta lo deje tal cual.

    Bueno gracias y quedamos en contacto, si es que no vuelvo a pasar por este post, que ya lo tengo en "mis favoritos" jaja.

    Saludos.
    Editado por rmc08 - 04.10.2009 01:44 hs.
    Me gusta este mensaje
< 1 2 3 4 5 >
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 43 RESPUESTAS
  • 1079 VISTAS
  • 3 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB