• Miércoles 2 de Julio de 2025, 08:40

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - J.M.Movilla

Páginas: 1 ... 11 12 [13] 14 15 ... 17
301
Visual Basic 6.0 e inferiores / Re: Buscar Texto en Campo de Base de Datos
« en: Lunes 7 de Abril de 2003, 20:12 »
Para filtrar los registros que cumplan con una condición usa en el OpenRecordset o en el RecordSource una SQL del siguiente tipo:
"SELECT * FROM TablaName WHERE CampoConcepto LIKE '*" & PalabraFiltro & "*' ORDER BY CampoIndice"

Si quisieras presentar sólo los artículos que EMPEZASEN con esa palabra, no pondrías el asterisco por delante de la PalabraFiltro...

Saludos y suerte

302
No me gustaba que las fechas tuvieran que salir en formato americano para cumplir las exigencias del ordenamiento...

Dándole vueltas se me ocurrió la solución: ¡Que el ListBox no lo ordene... dáselas ya ordenadas...!

Espero que también a tí te guste más esta segunda versión

Saludos

303
Como te dice José D, ya no puede encontrarse ese fichero...
Si no tienes una cuenta con Lycos, ábrela. Es gratis. Y me haces el favor enviarme el ocx a  [email:21bkozeh]name@domain.com[/email:21bkozeh]

Gracias

304
Estaba deseando probar tu MSC, pero no he conseguido ejecutarlo. Me da error porque no encuentra XPOCX.ocx, y no sé cómo registrarlo. He ejecutado previamente Proyecto1, porque veo que es necesario su .XpBs, pero ni por ésas...

Echame una mano, que ahora te necesito yo a tí.

Saludos nuevamente

305
Yo creo que las instrucciones te las di más claras que un huevo sin yema... Pero por ser vos quien sois, que te desvives por los demás, bien mereces que se te conceda un caprichito...

Espero dejarte satisfecho, y con un fuerte abrazo

Aviso a navegantes... Este fichero ha sido sustituido por otra versión mejorada, dos notas más abajo en este mismo mensaje !!!

307
Hola Gerard:

Al tiempo de felicitarte por tu MessengerSoloCodigo, que te ha quitado, seguro, horas de sueño y de diversión, paso a exponerte cómo resolvería yo tu cuestión:

Genera DOS ListBox iguales y SUPERPUESTOS, uno con los datos ordenados alfabéticamente y el otro por fechas.

Inicalizas con
CmdAlf_Click

Y los CommandButton llevarán

Private Sub CmdAlf()
List1.Visible = True
List2.Visible = False
End Sub

Private Sub CmdFec()
List1.Visible = False
List2.Visible = True
End Sub

Luego podrás mejorarlo haciendo que el puntero se sitúe en cada listBox donde te interese (por ejemplo con una variable que vaya cambiando Nombre + Fecha a Fecha + Nombre, según el caso, y hacer que List1.Text (o List2.Text) = EstaVariable), y que de esta forma te muestre los mismos datos cuando alternes el tipo de orden.

Saludos

308
Visual Basic 6.0 e inferiores / Configurar impresora o similares
« en: Sábado 5 de Abril de 2003, 23:40 »
Este proyecto contiene unas utilidades de configuración que te gustarán, a juzgar por lo que tú buscas.

Saludos

309
Visual Basic 6.0 e inferiores / Realizar copia de seguridad
« en: Sábado 5 de Abril de 2003, 19:20 »
Sonnya, maja...

Si te hubieras dado una vuelta por el foro, habrías encontrado la solución; porque no hace mucho envié un fichero referente a esto mismo.

En cualquier caso, para evitar que te pierdas en la búsqueda, te lo adjunto de nuevo, por aquello de tus besos...

Te devuelvo uno muy cariñoso

310
Visual Basic 6.0 e inferiores / Re: Problema comillas dobles
« en: Sábado 5 de Abril de 2003, 00:56 »
Es que aquí en España se dice (a lo mejor también por ahí usáis esta jerga...)
"Nunca te acostarás sin saber una cosa más..."

Un saludo

311
Visual Basic 6.0 e inferiores / Para J.M.Movilla.
« en: Sábado 5 de Abril de 2003, 00:52 »
A ver si te lo soluciono con este código

Saludos y suerte

312
Visual Basic 6.0 e inferiores / Re: Lectura y Escritura rapida en un fichero
« en: Sábado 5 de Abril de 2003, 00:00 »
Vamos a ver si este programita que acabo de hacer específicamente para tí te produce tanta satisfacción como la que me ha dado a mí al conseguirlo...

Insisto en algo que aclaro en el fichero: tienes que cuidar de definir adecuadamente el "separador" que en tu fichero se utilice.

Saludos y suerte

313
Visual Basic 6.0 e inferiores / Re: Problema comillas dobles
« en: Viernes 4 de Abril de 2003, 20:07 »
También puedes poner directamente

texto = """Ayuda"""

(con tres dobles comillas en cada grupo: una para que delimite la String, y dos juntas para que se traduzcan por comillas dentro de la String)

Saludos

314
Visual Basic 6.0 e inferiores / Re: word con visual basic
« en: Viernes 4 de Abril de 2003, 11:14 »
Vamos a ver si consigo darte una solución a tu problema (si me deja Internet, porque ayer en dos ocasiones tuve esta respuesta escrita y me quedé con dos palmos de narices ante el letrero de "Página no responde"...)

' ---------------------------------------------

En tu documento de Word pones

....  el nombre es :  @TBOX01@ para efectos....

Esto te va a permitir luego sustituir esa "macro" @TBOX01@ por el contenido de un textbox o de un campo de tu base de datos...

Igualmente podrás poner otras "macros" (@TBOX02@, @TBOX03@, etc.) y hacer automáticamente las "macrosustituciones" correspondientes.

LUEGO GRABAS ESE DOCUMENTO EN FORMATO .RTF   A partir de ahora tu documento se llamará "Documento.rtf", que lo va a tratar Word de forma más ágil que un .doc

' ---------------------------------------------


En tu aplicación insertas este código, para ejecutarlo por ejemplo cuando pulses un CommandButton que se llame CmdImprimirWord


Dim w As New Word.Application
Dim cFich As String, wFich As String


Private Sub CmdImprimirWord()
   
    cFich = "NOMBRE DE TU PLANTILLA DE WORD.rtf"
    wFich = "Temporal.rtf"

    ' Copiamos tu plantilla en otro Fichero para el Informe y no machacar la plantilla
    FileCopy cFich, wFich

    CambiaMacros

    if Dir( cFich) <> "" then
        ' No hubo error al hacer las "macrosustituciones"
        w.Documents.Open (wFich)
        w.Caption = "MS-Word - Creando informe"
        w.Visible = True
        w.WindowState = wdWindowStateMaximize
        Set w = Nothing
        ' Borro el fichero temporal de informe
        Kill(wFich)
    End If
End Sub


Private Function CambiaMacros()
    Dim nHandle%
    Dim strBuffer As String
    Dim n As Long
    Dim strText As String
    Dim strPrem As String
    Dim strPost As String
    Dim cMacro As String
    Dim cStrB As String
    Dim cTit As String
    Dim lFallo As Boolean
     
    strText = ""
    nHandle% = FreeFile
    Open wFich For Input As #nHandle%
    Do While Not EOF(nHandle%)
        Line Input #nHandle%, strBuffer
        strText = strText & strBuffer & vbCrLf
    Loop
    Close #nHandle%
   
    cStrB = "@"
    n = InStr(1, strText, cStrB)

    do while n <> 0
        If Mid(strText, n + 7, 1) = cStrB Then
            cTit = ""
            cMacro = UCase(Mid(strText, n, 8))
           
            If cMacro = "@TBOX01@" Then           ' Para sustituir por el primer textbox
                cTit = text1.text
                ' Aunque también podrías sustituirlo por un campo de una tabla: cTit = Db.Tab!NombreCliente...
            ElseIf cMacro = "@TBOX02@" Then       ' Para sustituir por el segundo textbox
                cTit = text2.text
'
'  Cuantos casos precises incustar en la plantilla
'

            Else
                ' Por si se ha incluido una "macro" mal redactada
                MsgBox("Revise la Plantilla :" & Chr(10) & _
                    "Ha introducido como ""macro"" la palabra " & cMacro & Chr(10) & _
                    "y no ha diseñado la SQL de conversión para tal ""macro"".", vbCritical)
                lFallo = True
                Exit Do
            End If
        Else
            n = InStr(n + 1, strText, cStrB)
        End If

        strPost = Mid(strText, n + 8)
        strPrem = Left(strText, n - 1)
        If cTit <> "" Then
            strText = strPrem & cTit & strPost
            ' Busca si la plantilla tiene más "macros"
            n = InStr(n + 9, strText, cStrB)
        Else
            strText = strPrem & strPost
            n = InStr(n + 1, strText, cStrB)
        End If

        If Len(strPost) < 8 Then Exit Do
       
    Loop
   
    If lFallo Then
        ' Hubo error en una "macro"
        Kill(wFich)
        wFich = ""
        exit Function
    End If
   
    nHandle% = FreeFile
    Open wFich For Output As #nHandle%
    Print #nHandle%, strText
    Close #nHandle%
    CmdSust.Visible = False
   
End Function

' --------------------------------------

Espero te vaya bonito...

Saludos y suerte

315
Visual Basic 6.0 e inferiores / Re: Lectura y Escritura rapida en un fichero
« en: Viernes 4 de Abril de 2003, 01:56 »
Esta cuestión es la misma que presentaste en el mensaje que acabo de resolverte en ORDENAR FICHERO.
Evita duplicar los mensajes cuando se trata del mismo tema, porque así no puede hacerse el seguimiento adecuado; en el mismo mensaje puedes añadir cuantas addendas explicativas precises.
De todas formas, me ha gustado que nos recuerdes estos métodos que yo practicaba allá por el año 73-74... y que ya ha llovido... Pero eso se hacía con el Basic de MS-DOS...
If x > z (then)
y = x
x = z
z = y
endif
¡¡¡qué tiempos aquellos...!!!

A ver si con el método que te indico en tu primigenio mensaje consigues la clasificación en 3-4 segundos en lugar de 3-4 horas como te llevaría el método de burbuja.

Saludos y suerte

316
Visual Basic 6.0 e inferiores / Data Report y Temporales
« en: Viernes 4 de Abril de 2003, 01:42 »
Cada vez que generes un datareport termina con su datareport.close y con set datareport = nothing, porque en otro caso te quedan los temporales en disco duro y en memoria...

Saludos y suerte

317
Visual Basic 6.0 e inferiores / Re: ORDENAR FICHERO
« en: Viernes 4 de Abril de 2003, 01:30 »
Aun cuando hablas de tener que ordenar 3000 registros en un fichero.txt, supongo que quieras decir que tienes que ordenar un fichero.txt que contiene 3000 registros.

Sigue estos pasos:
Ejecuta Access, con opción de Asistentes...
Elije Base de Datos.
Pincha en Insertar tabla.
Luego en Importar tabla.
Selecciona tu fichero.txt y sigue las instrucciones de Access.
Cuando tengas el fichero entras a cambiar sus propiedades y le dices que el campo generado está indexado Con duplicados.
Pincha en la cabecera de la columna e imprímelo...

Saludos y suerte

318
Visual Basic 6.0 e inferiores / Re: ayuda metodo clone de adodc...
« en: Jueves 3 de Abril de 2003, 19:17 »
No creas que con clone te vas a haces un recordset "Dolly" en otro formulario... (Acepta el mal chiste...)

Para manejar un ADO que ya tienes definido en Form1, desde cualquier otro formulario puedes aceder a él exactamente igual que si estuvieras en Form1, pero iniciando la línea con el formulario donde fue creado; es decir, pones

Form1.ADODB.....  con tal de que no lo hayas cerrado todavía, claro está.

También puedes crear un nuevo recordset, "clonado" mediante

Dim ADODB_Rec2 As Recordset
Set ADODB_Rec2  = Form1.ADODB.Recordset

y luego tratarlo como
Variable = ADODB_Rec2.Fields(1)

Saludos y suerte

319
Visual Basic 6.0 e inferiores / pregunta estupida
« en: Jueves 3 de Abril de 2003, 19:10 »
Bueno, para que pueda manejarse el botón de maximizar tienes que haber definido en el formulario la propiedad BorderStyle como Sizable; cualquier otro tipo de borde te anula los botones. Pero incluso con el estilo Sizable, puedes inhabilitar el botón mediante la propiedad MaxButton = False.

Y no pienses que tu pregunta es ridícula: todos hemos hecho cosas así muchas veces, incluso cuando creemos que ya hemos alcanzado un nivel superior...

Saludos y suerte

320
Visual Basic 6.0 e inferiores / aplicacion en red
« en: Jueves 3 de Abril de 2003, 18:38 »
Mira, Becker24:

El problema que tienes es que Visual a la variable de entorno App.Path la nombra como "C:Directorio de trabajo..."

Cuando tú llamas a la aplicación desde un equipo de cliente en red, va a buscar la base de datos en el disco C:, y claro está, no lo encuentra.

SOLUCION:
Crea un fichero (por ejemplo "Setup.mdb") con un campo de Texto de 50 caracteres, al que llamas "Ruta".  Este fichero lo copias en el servidor y en todos los clientes, en un directorio que se llame igual que el directorio del servidor en el que tengas el programa.

En el Servidor ese campo contendrá "C:Directorio de trabajo" (es decir, App.Path) y en el resto de equipos, el nombre del servidor y la ruta del programa (por ejemplo, "ServidorDirectorio de trabajo", o "F:Directorio de trabajo", según tengas definido el nombre del servidor).

Al iniciar el programa lees el fichero "C:Directorio del programaSetup.mdb" y defines una variable a la que llamas por ejemplo cMiPath = contenido del campo Ruta del Setup...  Ahora, donde ponías App.Path pon cMiPath, y santas pascuas...

Si generas un formulario al que sólo acceda el Administrador, en el cual pueda definir esa variable en cada uno de los clientes, miel sobre hojuelas.

Saludos y suerte

321
Visual Basic 6.0 e inferiores / Re: ComboBox estilo XP
« en: Miércoles 2 de Abril de 2003, 20:15 »
Amigo Gerard:

Me gusta la orientación que estás dando al foro, y propongo se te conceda un homenaje virtual, como "Rey del formato Xp" o algo parecido.

Gracias por tus colaboraciones

322
Visual Basic 6.0 e inferiores / MANEJO DE ACCESOS A BD, PARA USUARIOS EN DAO
« en: Miércoles 2 de Abril de 2003, 19:54 »
Supongo que hay mil maneras de solucionar esa cuestión; yo te digo cómo lo hago yo, garantizándote que va bien:

Cada usuario tiene un número y una clave de acceso; pues bien, con esa clave yo encripto una cifra, que se corresponde con el nivel de permiso que se le confiere. (Al desencriptar la clave desencriptamos también esa cifra, que la asignamos a una variable pública de nombre "NivelPermiso", pongamos por caso)

Cuando confecciones un formulario puedes poner, por ejemplo, el siguiente código:

if NivelPermiso < 3 then
CmdAñadir.Enable = False
CmdBorrar.Enable = False
etc.....
End If

o bien
if NivelPermiso = 1 then
txtSueldo.Locked = True
txtNIF.Locked = True
End If
si prefieres bloquear algunos campos para ciertos usuarios...

Esto te dará muchas posibilidades de "jugar" con cuantas combinaciones desees.

Incluso puedes bloquear el acceso a tal o cual formulario o subprograma:

If NivelPermiso < 6 Then
msgbox("Usted no tiene permiso para realizar esta opción")
Else
frmXXX.Show vbModal
End If

Si eres más ambicioso, desarrolla una tabla en la que indiques esas combinaciones para cada input del programa y cada tipo de Nivel... Pero ten la precaución de encriptar esa tabla, para que no te la pueda alterar un usuario listo...

Saludos y suerte

323
Visual Basic 6.0 e inferiores / Re: FileListBox
« en: Miércoles 2 de Abril de 2003, 19:26 »
Me ocurre lo mismo con una red Lantasti, de Artisoft.  Pero eso no me crea mayor problema que el estético: el sistema reconoce bien los ficheros con nombre corto (de MS-DOS), salvo que trabajes con un sistema que repudie al DOS... (Win-2000, por ejemplo)

Con esta Function puedes convertir un nombre largo a nombre corto por si te fuera indispensable trabajar con los dos ficheros con nombre corto; lo que no sé es si hay otra para convertir el nombre corto en largo...

'--------------------
    Public Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

    Dim sBuf As String * 260
    Dim i As Long
    Dim cPathDat as String

    cPathDat = "Nombre largo del fichero, con ruta incluida"
    i = GetShortPathName(cPathDat, sBuf, Len(sBuf))
    cPathDat = Left$(sBuf, i)  ' Te ha devuelto el nombre corto

' ---------------------------

Saludos.

324
Prueba a poner:

..... in #" & desde & "# to #" & hasta & "#"

Si las fechas las tomas de un textBox, posiblemente precises poner esta otra definición:

..... in " & DateValue(""" & desde & """) & " to " & DateValue(""" & hasta & """)

Saludos y suerte

325
Visual Basic 6.0 e inferiores / VB6-Office 97 o 2000
« en: Lunes 31 de Marzo de 2003, 19:03 »
Hola Sonnya:

No te molestes en cambiar de versión de Access; el problema con los decimales no depende de eso sino del propio Visual...

En todos los textBox que traten números incluye este código (por supuesto, donde pongo txtNumber, tú pones el nombre del textBox correspondiente)

Private Sub txtNumber_Change()
    Static strSaved As String
    If txtNumber.Text <> "" And txtNumber.Text <> "-" And txtNumber.Text <> "." And txtNumber.Text <> "-." Then
        If Not IsNumeric(txtNumber.Text) Then
            txtNumber.Text = strSaved
            SendKeys "{END}"
            Beep
        End If
    End If
    strSaved = txtNumber.Text
End Sub

Espero que con esto tengas solucionado el problema de los decimales, que a todos nos ha tenido locos durante una temporada...

Un abrazo y suerte

NOTA:  Es de justicia indicar que este código lo bajé de http://www.planet-source-code.com/vb/default.asp?lngWId=1

Páginas: 1 ... 11 12 [13] 14 15 ... 17