• Martes 13 de Mayo de 2025, 14:20

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 - Brroz

Páginas: 1 ... 30 31 [32] 33 34 ... 43
776
Visual Basic 6.0 e inferiores / Re: Ayuda por favor
« en: Sábado 15 de Noviembre de 2003, 09:54 »
Hola Cesar.

Si ya has encontrado el registro, actualiza los campos en el formulario con los datos del ¿recordset? Es que como no seas más concreto...

A ver, supongo que la búsqueda y la obtención de datos la haces sobre un recordset, y también supongo que el alcance de ese recordset abarca sólo hasta el formulario de búsqueda (es que si fuera de otra forma, seguro que ya no tenías ningún problema), es decir, en el formulario de búsqueda, una vez que aceptas, buscas directamente en un recordset que tienes definido en el formulario. Para este caso deberías hacer algo del estilo:

FormPrincipal.Text1.Text = Recordset1.Fields(0).Value
FormPrincipal.Text2.Text = Recordset1.Fields(1).Value
.
.
.

Desde luego, yo declararía el recordset en el formulario principal (o en alguna clase) y utilizaría el formulario de búsqueda únicamente para devolver el valor por el que buscar. Esto lo puedes hacer de varias formas. Te adjunto un ejemplo en el que puedes ver dos de esas formas. Sirve también de ejemplo de uso de un evento y de una propiedad.

Espero que esto te sirva, sino, repito intenta ser algo más concreto, pues tuve que responder por suposiciones mías.

Abur.

777
Visual Basic 6.0 e inferiores / Re: Archivos necesarios para DAO
« en: Viernes 14 de Noviembre de 2003, 13:10 »
Hola gabperez.

La siguiente lista muestra los archivos necesarios para DAO 3.6. Échale un vistazo al archivo SETUP.LST que genera el instalador de vb a la sección [Setup1 Files].

Archivo___________________Destino
MSCMCES.DLL    -----------------> WindowsSystem
VB5DB.DLL  ------------------>              "
MSJTES40.DLL    --------------->                 "
MSREPL40.DLL   ---------------->                 "
MSRD3X40.DLL   ---------------->                 "
MSRD2X40.DLL   ---------------->                 "
MSWDAT10.DLL  --------------->                   "
MSWSTR10.DLL  ---------------->                 "
EXPSVR.DLL        ---------------->                 "
VBAJET32.DLL    ---------------->                 "
MSJINT40.DLL     ---------------->                 "
MSJTER40.DLL   ---------------->                 "
MSJET40.DLL      ---------------->                 "
DAO360.DLL        ------------->                 Path de Ms DAO

Es muy posible que alguno(s) de estos archivos no sean necesarios... pero no lo sé.

De todas formas a nivel registro será necesario crear alguna clave. En concreto el 'Path de MsDAO' tendrá que especificarse en alguna parte del registro (no sé donde, pero puedes buscarlo en tu equipo con RegEdit).

También te prevengo de que manipular el registro puede traer funestas consecuencias para el funcionamiento de windows, así que piénsatelo dos veces.

Tal vez tu mejor opción sea usar otro instalador. En este foro se ha recomendado mucho (aunque yo no lo conozco) SetUp Factory.

Suerte.

778
Visual Basic 6.0 e inferiores / Brroz una consulta
« en: Viernes 14 de Noviembre de 2003, 09:21 »
Hola krlos02.

Estudia el código y fíjate en las partes en que se usa objRng con esto se obtiene un rango de celdas que forman una matriz bidimensional (FilaDeRango, ColumnaDeRango). Otra forma que en tu caso podría ser más efectiva es usar la propiedad Cells del objecto WorkSheet (objSh), funciona como un rango pero comprendiendo todas las celdas de la hoja. Por ejemplo:

ObjSh.Cells(10,3)

hace referencia a la celda C10.

Espero que con esto soluciones tu problema.

Abur.

779
Visual Basic 6.0 e inferiores / Brroz Ayuda!!!
« en: Viernes 14 de Noviembre de 2003, 09:13 »
Hola Ce5aR.

Para que el diálogo se abra con una ruta de acceso por defecto, debes asignar previamente la ruta deseada a la propiedad InitDir del cuadro de diálogo. Ya vi que en el ejemplo que me enviaste lo haces... Si la ruta de acceso no fuera válida, el cuadro de diálogo debería abrir de todas formas (y si te da un error, supervísalo). Lo que si observo en tu ejemplo es que el filtro del cuadro, no comprende archivos *.csv, por lo que es lógico que no aparezca ninguno. Yo añadiría algún filtro más: *.csv, *.txt y por supuesto *.*. Usa la propiedad DefaultExt para elegir la extensión de los archivos por defecto.

De todas formas el asunto del control CommonDialog no lo tengo muy fresco, ya que normalmente utilizo apis para seleccionar archivos y vías de acceso.

Otra cosa: en tú ejemplo utilizas dos controles CommonDialog... con uno te llega.

Suerte.

780
Visual Basic 6.0 e inferiores / Re: Ayuda por favor
« en: Jueves 13 de Noviembre de 2003, 17:21 »
Hola César...

A ver hombre, ¿qué es lo que no sabes hacer?

- ¿Que se abra un formulario pulsando un botón?

- ¿Cómo buscar un registro determinado?

- ¿Cómo pasar el valor del textbox al primer formulario?

- ¿Nada de lo anterior?

Dices que no sabes hacerlo, mi pregunta es ¿lo has intentado? y si es afirmativo ¿cómo?

A ver si puedes ser un poco más concreto porque no creo que nadie te vaya a proporcionar una 'solución integral' que la acoples a tu proyecto y funcione.

Chao.

781
Visual Basic 6.0 e inferiores / Re: Brroz una consulta
« en: Jueves 13 de Noviembre de 2003, 17:13 »
Hola Krlos02.

Perdona, pero el ejemplo al que supongo que te refieres guarda y carga datos en un archivo de texto.
El último ejemplo que puse hace lo mismo pero el archivo de texto es delimitado, se podría abrir con excel (*.csv).

De todas formas, para lo que tú quieres hacer, puedes manejar los datos del datagrid de manera similar:
Row Establece la fila
Col Estable la columna
Text Da el valor de la celda

Y como parece que hay mucho interés en conseguir código para insertar datos en una hoja de cálculo, y pocas ganas de buscar, pues me voy a tirar el rollito con un ejemplo sencillo de cómo cargar los datos de un recordset en una hoja de excel.

Private Function SaveRsXls(Byval rs1 as Recordset) As Boolean

On Error Goto Err_SaveRs

Dim objApp As Object
Dim objWb AsObject
Dim objSh As Object
Dim objRng As Object
Dim var1() As Variant, lngNFld as Long
Dim lngNRcd as long

Set objApp = CreateObject(Excel.Application")
Set objWb = objApp.WorkBooks.Add
Set objSh = objWb.ActiveSheet

ReDim var1(1, rs1.Fields.Count)
   
For lngNFld = 0 To rs1.Fields.Count - 1
var1(0, lngNFld) = rs1.Fields(lngNFld).Name
Next lngNFld
   
Set objRng = objSh.Range("A1").Resize(1, rs1.Fields.Count)
objRng.Value = var1
   
rs1.MoveFirst
   
Do Until rs1.EOF
For lngNFld = 0 To rs1.Fields.Count - 1
var1(0, lngNFld) = rs1.Fields(lngNFld).Value
Next lngNFld
lngNRcd = lngNRcd + 1
Set objRng = objSh.Range("A" & lngNRcd + 1).Resize(1, rs1.Fields.Count)
objRng.Value = var1
rs.MoveNext
Loop

objSh.Name = "Nueva hoja"
objWb.SaveCopyAs "NombreDeLibro.XlsobjWb.Saved = True

SaveRsXls = True

Exit_SaveRs:
On Error Resume Next
objApp.Close
objApp.Quit
Set objApp  = Nothing
Set objWb = Nothing
Set objSh = Nothing
Set objRg = Nothing
Exit Function

Err_SaveRs:
MsgBox Err.Description
Resume Exit_SaveRs

End Function


Ahí está, ojo que está escrito al vuelo y lo mismo va algún gazapo... pero es para que sirva de ejemplo y para que lo intentéis comprender, no para copiar tal cual y que funcione. Además de haber otras formas para hacerlo.

Suerte.
Chao.

P.D. Acabo de hacer la prueba buscando en google por VB Excel y aparecen cantidad de sitios desde los que obtener ejemplos... sólo hay que tomarse la molestia y ya está.

782
Visual Basic 6.0 e inferiores / aplicaciones distribuidas
« en: Jueves 13 de Noviembre de 2003, 11:57 »
Hola morolo.

Imagino que lo que necesitas es algo de este estilo:

Primero debes registrar los componentes en el cliente. Para ello debes usar CliReg32.Exe. Este ejecutable normalmente se puede encontrar en  ..Microsoft Visual StudioCommonToolsCliReg.

Una vez registrado el componente remoto, deberías poder utilizarlo sin más (siempre y cuando el trabajo servidor esté activo claro).

783
Visual Basic 6.0 e inferiores / Último para Brroz (necesito ayuda urgente)
« en: Jueves 13 de Noviembre de 2003, 09:40 »
Hola Ce5aR.

Te envío un par de ejemplos de cómo cargar el flexgrid a partir de un archivo de texto delimitado (csv), ya que veo que exportas los datos del flexgrid de esa forma.

Ignoro el botón 'Guardar', ya que utilizando el archivo que exportas como csv ya es suficiente.

Ahí va:

' ********* Ejemplo1 *********
Dim intCanal As Integer
intCanal = FreeFile
Open "C:windowsEscritorioBorrar.csv" For Input As #intCanal
Dim lngRow As Long, lngCol As Long
Dim strRow() As String, str1 As String
ReDim strRow(Flex1.Cols)
Flex1.Clear
Do
Flex1.Row = lngRow
lngRow = lngRow + 1
Line Input #intCanal, str1
strRow() = Split(str1, ",", Flex1.Cols)
For lngCol = 0 To Flex1.Cols - 1
Flex1.Col = lngCol
Flex1.Text = Replace(strRow(lngCol), Chr(34), "")
Next lngCol
Loop While Not EOF(intCanal)
Close #intCanal
' ***************************************

' ********* Ejemplo2 *********
Dim intCanal As Integer
intCanal = FreeFile
Open "C:windowsEscritorioBorrar.csv" For Input As #intCanal
Dim lngRow As Long, lngCol As Long
Dim varRow() As Variant
ReDim varRow(Flex1.Cols)
Flex1.Clear
Do
Flex1.Row = lngRow
lngRow = lngRow + 1
Input #intCanal, varRow(0), varRow(1), varRow(2), varRow(3), varRow(4)
For lngCol = 0 To Flex1.Cols - 1
Flex1.Col = lngCol
Flex1.Text = varRow(lngCol)
Next lngCol
Loop While Not EOF(intCanal)
Close #intCanal
' ***************************************

'El ejemplo2 es algo más rápido que el anterior, pero tiene como inconveniente que hay que conocer el número de columnas del Flex a la hora de escribir el código.

Espero que esto te sirva.

Chao.

784
Visual Basic 6.0 e inferiores / Error al llenar listview
« en: Miércoles 12 de Noviembre de 2003, 18:12 »
Hola Jorge.

¿Has comprobado que el valor para el campo en el registro que da el error no sea nulo?

Mira a ver...
Abur.

785
Visual Basic 6.0 e inferiores / Re: Error al generar una instalación !!!
« en: Miércoles 12 de Noviembre de 2003, 18:06 »
Hola HugoI_007.

Me temo que algún programa se ha metido en un bucle sin fin...

Si el error es durante la instalación, poco te puedo decir, excepto que pruebes con otro instalador.

Si el error se produce al ejecutar el programa recién instalado, como supongo que así será, debes intentar identificar el origen del error (¿empleas algún tipo de control de errores?) para comprobar en ese código cual es el lugar en que se embucla y así poder corregirlo.

Suerte.
Abur.

786
Visual Basic 6.0 e inferiores / Re: se podría poner un panel de un StatusBar1 en blanco
« en: Miércoles 12 de Noviembre de 2003, 16:18 »
Hola Taursoft.

Si no me equivoco, a los paneles de la barra de estado se le puede poner una imagen. Usa una imagen del color que quieras y ya está... La única pega es el texto que pueda tener el panel, ya que no sé como se podrá cambiar (si es que se puede) el color de fondo. Si el texto del panel no cambia o cambia en pocas ocasiones, podrías incluir el texto en la imagen y asunto solucionado.

Abur.

787
Visual Basic 6.0 e inferiores / vectores o arreglos unidimensionales
« en: Miércoles 12 de Noviembre de 2003, 09:49 »
Hola.

Desde 0 ó 1, dependiendo de como se haya definido o de si se ha usado la instrucción Option Base.

Por ejemplo:

- Sin especificar Option Base o con Option Base 0

Dim matriz(5)  --> 5 elementos, 0 es el límite inferior
Dim matriz(1 To 5)  --> 5 elementos, 1 es límite inferior

- Con Option Base 1

Dim matriz(5)  -->  5 elementos, 1 es límite inferior
Dim matriz(0 To 4)  --> 5 elementos, 0 es límite inferior


En todo caso, si la matriz ha sido dimensionada, siempre puedes usar LBound y UBound para conocer los límites inferior y superior respectivamente.

Chao.

788
Visual Basic 6.0 e inferiores / Otro para Brroz
« en: Miércoles 12 de Noviembre de 2003, 09:20 »
Hola Ce5aR.

En un post anterior decías que recibes datos del puerto serie y los guardas en el FlexGrid... no entiendo eso que dices de que crear el código sería tedioso porque tienes muchas filas: en el ejemplo que te adjunté yo suponía un flexgrid de siempre 10 filas. Tú lo que tendrías que hacer es utilizar la propiedad Rows del flexgrid para conocer el número de filas (ten en cuenta que la primera fila es la 0, luego el bucle debería ser de 0 a MsFlexGrid1.Rows - 1).

Lo que dices del excel es posible, pero no veo la necesidad...

Chao.

789
Visual Basic 6.0 e inferiores / Re: Utilizacion de Ucase
« en: Martes 11 de Noviembre de 2003, 18:25 »
Hola Omarrpat.

MaskEdBox1.Text = Ucase(MaskEdBox1.Text)

Evidente, ¿no?

Supongo que lo que te interesa saber es cómo crear una máscara para sólo introducir letras mayúsculas en el control... Bien, pues no sé cómo. Yo lo solucionaría o en el evento validate del control, o en el evento change, o en el evento KeyPress. Por ejemplo:

Private Sub MaskEdBox1_Validate(Cancel as Boolean)
MaskEdBox1.Text = Ucase(MaskEdBox1.Text)
End Sub

Private Sub MaskEdBox1_Change
MaskEdBox1.Text = Ucase(MaskEdBox1.Text)
End Sub

Private Sub MaskEdBox1_KeyPress(KeyAscii As integer)
If KeyAscii < 97 Or KeyAscii > 122 Then Exit Sub
KeyAscii = Asc(Ucase(Chr(KeyAscii)))
End Sub

Chao.

790
Visual Basic 6.0 e inferiores / ¿que control utilizo para hacer una tabla?
« en: Martes 11 de Noviembre de 2003, 16:16 »
Hola Taursoft.

Mira,usa la búsqueda. Accede a ella desde la barra amarillenta que está algo más abajo del banner (iniciar sesión - regístrate - buscar - ayuda).

Si buscas en este mismo foro creo que puedes encontrar algunos ejemplos.

Suerte.

791
Visual Basic 6.0 e inferiores / Enfoque a una aplicacion
« en: Martes 11 de Noviembre de 2003, 16:05 »
Hola SpeedCad.

El siguiente código controla cuando una aplicación NO lanzada desde vb termina. No es exactamente lo que pides, pero tal vez te sirva...

Private Const SYNCHRONIZE = &H100000
Private Const INFINITE = -1&

Private Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessID As Long
    dwThreadID As Long
End Type

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long

Private Sub Sincronizar()
   
    Dim pid As PROCESS_INFORMATION
    Dim lngRc As Long
    lngRc = FindWindow(vbNullString, "Pon aquí el título de la ventana de la aplicación")
    lngRc = GetWindowThreadProcessId(lngRc, pid.hProcess)
    lngRc = OpenProcess(SYNCHRONIZE, False, pid.hProcess)
    If lngRc <> 0 Then
        lngRc = WaitForSingleObject(lngRc, INFINITE)
        MsgBox "Fin del proceso"
    Else
        MsgBox "Fallo sincronizando"
    End If

End Sub

Espero que te sirva.
Chao.

792
Visual Basic 6.0 e inferiores / Re: ¿que control utilizo para hacer una tabla?
« en: Martes 11 de Noviembre de 2003, 10:24 »
Hola taursoft.

Yo escaparía de hacer lo que quieres mediante un control.

Tienes varias formas de hacerlo por código:

- Con DAO utilizarías algo de este estilo

   Dim db1 as Database
   Set db1.OpenDatabase("MiBd.mdb"
   Dim tbl1= New TableDef
   tbl1.Name = "MiTabla"
   tbl1.Fields.Append tbl1.CreateField("CampoChar", 10, 10)  'Carácter 10 de longitud
    tbl1.Fields.Append tbl.CreateField("CampoLong", 4)
    tbl1.Fields.Append tbl.CreateField("CampoShort", 3)
    db1.TableDefs.Append tbl1

- Podrías en cualquier caso usar una sentencia SQL de tipo CREATE TABLE

   CREATE TABLE MiTabla ([CampoChar] VarChar (10), [CampoLong] Long, [CampoShort] int);

En fin...creo que usar SQL podría ser la mejor opción para lo que pretendes.

Suerte.

793
Visual Basic 6.0 e inferiores / Re: error 52 al copiar un archivo
« en: Martes 11 de Noviembre de 2003, 09:54 »
Hola agfed.

El error 52, si no me equivoco, indica un nombre o número (canal) de archivo incorrecto.

Repasa tu código para comprobar que no intentas abrir con Open algún archivo que no existe o que ya está abierto, ni que intentas leer (Get, Input, Line Input) un archivo que no está abierto. También puede ocurrir que estés intentando escribir (Put, Print, Write) en algún archivo que está cerrado.

Cuando utilices alguno de los métodos anteriores (Put, Print, Get, ...) asegúrate de usar una variable para almacenar el canal (el número de archivo). Informa esta variable previamente con la función FreeFile para obtener un número de canal disponible.

A ver...

Suerte.

794
Visual Basic 6.0 e inferiores / PARA Brroz
« en: Martes 11 de Noviembre de 2003, 09:44 »
Hola de nuevo.

Como lo prometido es deuda... ahí va el ejemplo.

Abur.

795
Visual Basic 6.0 e inferiores / Re: PARA Brroz
« en: Lunes 10 de Noviembre de 2003, 18:21 »
Hola Ce5aR.

Ahora mismo no tengo tiempo para hacerlo, pero te prometo que mañana responderé a este mismo post con un ejemplo.

Chao.

796
Visual Basic 6.0 e inferiores / Re: PARA Brroz
« en: Lunes 10 de Noviembre de 2003, 18:21 »
Hola Ce5aR.

Ahora mismo no tengo tiempo para hacerlo, pero te prometo que mañana responderé a este mismo post con un ejemplo.

Chao.

797
Visual Basic 6.0 e inferiores / ¿que hace el control SAFRemoteDesktopClientHost?
« en: Lunes 10 de Noviembre de 2003, 16:25 »
Lo siento, no tengo ni idea.

Puedes probar posteando en el foro de visual basic .net, a ver si alguien te da información, sobre este tema y sobre el original de tu pregunta.

Chao.

798
Visual Basic 6.0 e inferiores / Sumar a un texto ¡Ayuda!
« en: Lunes 10 de Noviembre de 2003, 16:22 »
Hola Elisa.

Creo que deberías utilizar la función Val.

Resultado = Val(Text1.Text) + Val(Text2.Text) + Val(Text3.Text)

Para asegurar que el resultado sea correcto, ten en cuenta que para el vb el signo decimal siempre es el punto, si emplearas como separador decimal la coma, deberías hacer algo del estilo

Resultado = Val(Replace(Text1.Text,",",".")) + Val(Replace(Text2.Text,",",".")) + Val(Replace(Text3.Text,",","."))

Suerte.

799
Hombre... visual basic 6.0 profesional al menos si tiene examinador de objetos y no recuerdo que éste fuera un componente opcional de la instalación. Écha un vistazo en el menú 'Ver'. Pulsando la tecla F2 normalmente también se abre.

Si realmente al final tu vb no tiene examinador de objetos... lo siento por ti, porque es una utilidad que para estos casos viene que ni pintada.

Suerte.

800
Visual Basic 6.0 e inferiores / Re: como trabaja el sheet
« en: Lunes 10 de Noviembre de 2003, 15:55 »
Hola Krlos02.

Viendo este post y otro que tienes anterior sobre este mismo tema, me pregunto si no te estarás liando un poco buscando una solución muy complicada.

Si no he comprendido mal, dices tener un formulario hecho con el vba del excel y que necesitas actualizarlo con datos contenidos en una base de datos mediante otro formulario, hecho con vb, que contiene un control sheet.

Ante esto, yo en mi atrevimiento, te sugeriría alguna de estas opciones:

- Desde vb puedes obtener una instancia de excel y manejar los datos de una hoja de cálculo ('externamente' como tú dices). De esta forma ya no necesitarías para nada esos formularios. Sobre cómo hacer esto hay bastantes ejemplos por ahí circulando... Si buscas en este mismo foro seguro que encuentras unos cuantos. Si te apetece investigar por tu cuenta, empieza añadiendo a tu proyecto una referencia a 'Microsoft Excel x.x Object Library'. Utiliza el examinador de objetos (Pulsa F2) para conocer los miembros de excel.

- Puedes actualizar los datos con vba desde la propia hoja de cálculo con el editor de visual basic (Herramientas > Macro > Editor de visual basic) ¿lo has probado? si no lo has hecho animáte y verás que descubres muchas cosas, entre ellas seguramente la solución a tu problema.

Lo que no me parece muy acertado (es sólo mi opinión, tampoco conozco los detalles de tu caso) es crear un programa en vb para actualizar los datos de un formulario vba-excel desde otro formulario usando un control Sheet.

Suerte.

Páginas: 1 ... 30 31 [32] 33 34 ... 43