• Miércoles 14 de Mayo de 2025, 02:52

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 ... 22 23 [24] 25 26 ... 43
576
Visual Basic 6.0 e inferiores / Re: Abrir Puerta
« en: Sábado 14 de Febrero de 2004, 12:14 »
Código: Text
  1.  
  2. Private Declare Function mciSendString Lib "winmm.dll" Alias _
  3. "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
  4. lpstrReturnString As String, ByVal uReturnLength As Long, _
  5. ByVal hwndCallback As Long) As Long
  6.  
  7. Private Sub Abrir()
  8.     Dim str1 As String * 127
  9.     mciSendString "set CDAudio door open", str1, 127, 0
  10. End Sub
  11.  
  12. Public Sub Cerrar()
  13.     Dim str1 As String * 127
  14.     mciSendString "set CDAudio door closed", str1, 127, 0
  15. End Sub
  16.  
  17.  

577
Visual Basic 6.0 e inferiores / Re: Saben Hacerlo?
« en: Viernes 13 de Febrero de 2004, 09:19 »
Hola AYCUL.

Podría haber varios procesos accediendo a la vez a la disquetera... lo único que se me ocurre así de primeras es controlar el espacio libre en la unidad  varias veces en un determinado intervalo de tiempo, si el espacio libre cambia... alguién está escribiendo o borrando, claro que si algún proceso está leyendo, de esta forma no te enterarías.

Suerte.

578
Visual Basic 6.0 e inferiores / Re: Procesos
« en: Viernes 13 de Febrero de 2004, 09:01 »
Hola DaVId925.

App.TaskVisible = False

Suerte.

579
Visual Basic 6.0 e inferiores / Re: Diseño De Informes Crystal Report
« en: Jueves 12 de Febrero de 2004, 18:27 »
Hola pacegar.

Actualmente, le estoy dando los últimos retoques a un diseñador de informes AFP para as400... He creado varios ocx que formarían lo que es el diseñador y las propiedades de los controles. La verdad que es una aplicación que come muchísimos recursos, por lo que estoy viendo la forma de intentar aligerarla...

Por otro lado, tal vez usando DataReport puedas conseguir lo que te propones... No soy gran conocedor de DataReport pues nunca lo uso en mis proyectos, pero si no me equivoco, el informe tiene un método que permite que se muestre al usuario como un diseñador (en tiempo de ejecución, claro). Investiga algo de esto, que a lo mejor por ahí se simplifican mucho las cosas.

Suerte.

580
Visual Basic 6.0 e inferiores / Re: Como Insertar Titulos En Msflexgrid
« en: Jueves 12 de Febrero de 2004, 18:17 »
Podrías usar un flexgrid jerárquico, pero sería algo así como matar moscas a misilazos... Cuando imprimes o exportas a excel el contenido del grid, al ser algo que haces mediante código, también puedes controlar la impresión del título, esté en un label o esté donde esté... ¿no?

Chau.

581
Visual Basic 6.0 e inferiores / Re: Como Insertar Titulos En Msflexgrid
« en: Jueves 12 de Febrero de 2004, 17:25 »
Hola.

¿Y no puedes utilizar un Label...?

Chao.

582
Visual Basic 6.0 e inferiores / Re: Qué Bibliotecas...
« en: Jueves 12 de Febrero de 2004, 17:24 »
¿Esto te ocurre con todos los proyectos?

583
Visual Basic 6.0 e inferiores / Re: Qué Bibliotecas...
« en: Jueves 12 de Febrero de 2004, 09:17 »
Hola puedequesiempre.

Las funciones que te fallan son miembros de VBA ... Prueba reinstalando office y luego vb.

Suerte.

584
Visual Basic 6.0 e inferiores / Re: Manejo De Archivos
« en: Jueves 12 de Febrero de 2004, 09:03 »
Hola Fernando_P.

Hay una función que te puede ir que ni pintada, es Split.

Almacena los datos de cada registro en una variable string, y luego usa split para obtener cada campo (dices que están separados por tabulaciones)  como un elemento de una matriz de tipo variant, algo así:

Código: Text
  1.  
  2. Dim  intCanal As Boolean
  3. intCanal = FreeFile
  4. Open "C:\Ruta\Archivo.txt" For Input As #intCanal
  5. dim var1 AS variant, str1 As String
  6. Dim intAnho As integer, intDia as integer
  7. Do until EOF(intCanal)
  8.    Line Input #intCanal, str1
  9.    intDia = intDia + 1
  10.    var1 = Split(str1, Chr(9))
  11.    For intAnho = 0 To UBound(var1)
  12.         MsgBox "Día: " & intDia & vbcrlf _
  13.         & "Año: " & intAnho + 1 & vbcrlf _
  14.         & "Valor: " & var1(intAnho)
  15.    Next intAnho
  16. Loop
  17. Close #intCanal
  18.  
  19.  

Suerte.

585
Visual Basic 6.0 e inferiores / Re: Imagenes Tif
« en: Miércoles 11 de Febrero de 2004, 17:57 »
¡Añade el componente ocx (Control de edición de imagen Kodak o Wang) correspondiente y listo!, ya puedes visualizar la imagen en el form.

El archivo se llama IMGEDIT.OCX y debe estar en el directorio del sistema.

Agur.

586
Visual Basic 6.0 e inferiores / Re: Imagenes Tif
« en: Miércoles 11 de Febrero de 2004, 11:17 »
Kaixo!

Si utilizas cualquier Windows excepto Xp, puedes utilizar el control Image Edit de Wang/Kodad/Eastman, que viene con el so, es decir, el Imaging.

Si tienes xp, puedes probar utilizando un control Preview, aunque encontrarás dificultades para realizar varias acciones...

También hay variados controles por ahí para hacer esto, pero suelen ser de pago.

Fíjate en estos temas que hablan algo de esto, especialmente en uno que alguien ofrece la solución para Xp de free:

http://foros.solocodigo.com/index.php?show...4919&hl=imaging

http://foros.solocodigo.com/index.php?showtopic=4129

Agur.

587
Visual Basic 6.0 e inferiores / Re: Validacion Cero
« en: Miércoles 11 de Febrero de 2004, 10:47 »
Hola irma3030.

Yo escaparía de utilizar TextBox ligados a datos...
De todas formas puedes validar el valor de los campos del registro actual del recordset antes de que se actualice y hacer una pequeña triquiñuela:
Código: Text
  1.  
  2. Private Sub Adodc1_WillChangeRecord( _
  3. ByVal adReason As ADODB.EventReasonEnum, _
  4. ByVal cRecords As Long, _
  5. adStatus As ADODB.EventStatusEnum, _
  6. ByVal pRecordset As ADODB.Recordset)
  7.     Dim int1 as integer
  8.     For int1 = 0 To pRecordset.Fields.Count - 1
  9.           If  IsNull(pRecordset.Fields(int1).Value Then
  10.               If pRecordset.Fields(int1).Type = adChar Then
  11.                     pRecordset.Fields(int1).Value = ""
  12.               Else
  13.                     pRecordset.Fields(int1).Value = 0
  14.               End If
  15.           End If
  16.     Next int1
  17. End Sub
  18.  
  19.  


Otra posibilidad es que modifiques el diseño de las tablas para que admitan campos nulos y no sean requeridos (Requerido = No, Permitir longitud 0 = Sí")

Espero que te sirva.
Chao.

588
Visual Basic 6.0 e inferiores / Re: --------------ayuda Con Base De Datos ------------
« en: Miércoles 11 de Febrero de 2004, 10:44 »
Hola bezael.

Supongamos que  Adodc1 es el control data con los padres, Adodc2 el control data con los hijos.
[/Code]
Private Sub Adodc1_MoveComplete( _
ByVal adReason As ADODB.EventReasonEnum, _
ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset)
    On Error Resume Next
    Adodc2.RecordSource = "SELECT CodigoHijo,NombreHijo " _
    & "FROM HIJOS WHERE CodigoPadre=" _
    & pRecordset.Fields("CodigoPadre").Value
    Adodc2.Refresh
    DataGrid2.Refresh
End Sub
[/Code]

Suerte.

589
Visual Basic 6.0 e inferiores / Re: Ayuda con este error para Imprimir
« en: Miércoles 11 de Febrero de 2004, 10:04 »
Hola mexican.

El código no tiene por que dar ningún error tal y como lo tienes.
A ver si el problema va a estar con el driver de impresora que utilizas...

Suerte.

590
Visual Basic 6.0 e inferiores / Re: Conexiones Con Adodc
« en: Miércoles 11 de Febrero de 2004, 09:52 »
Hola Miguel917.

Me alegra encontrar a alguien que trabaje con bbdd DB/2 en un iSeries...

Lo mejor que puedes hacer es escapar del control data e implementar la conexión y demás mediante código.

He aquí un pequeño ejemplo usando ADO:
Código: Text
  1.  
  2. Dim cnx1 As ADODB.Connection
  3. Set cnx1 = New ADODB.Connection
  4. cnx1.Open "provider=IBMDA400;data source=NOMBRE_SISTEMA; , , -1"
  5.  
  6. Dim cmd1 As ADODB.Command
  7. Set cmd1 = New ADODB.Command
  8. Set cmd1.ActiveConnection = Cnx1
  9. cmd1.Properties(16).Value = 7    'Updatability
  10.  
  11. 'Asignando el recordset a una tabla.
  12. cmd1.CommandType = adCmdTable
  13. cmd1.CommandText = _
  14. "/QSYS.LIB/MILIBRERIA.LIB/MIOBJ.FILE (*FIRST, *NONE)"
  15. cmd1.Parameters.Append cmd1.CreateParameter("P1", adChar, adParamInput, 1)
  16.  
  17. Dim rs1 As ADODB.Recordset
  18. Dim var1 As Variant, var2 As Variant
  19. Set rs1 = cmd1.Execute(var1, var2, adCmdTable)
  20. MsgBox rs1.RecordCount
  21.  
  22. 'Asignando el recordset a un cursor SQL.
  23. Dim rs2 As ADODB.Recordset
  24. cmd1.CommandType = adCmdText
  25. cmd1.CommandText = "SELECT * FROM MILIBRERIA.MIOBJ"
  26. Set rs2 = cmd1.Execute()
  27. MsgBox rs2.RecordCount
  28.  
  29. Set rs1 = Nothing
  30. Set rs2 = Nothing
  31. Set cmd1 = Nothing
  32. cnx1.Close
  33. Set cnx1 = Nothing
  34.  
  35.  

Al usar el método Close del command, se finaliza el trabajo del QUSER.

Por otro lado, te cuento que yo no utilizo OleDb para conectarme con el 400, uso una biblioteca de tipos que se suministra con Client Access que se llama Client Access Object Library (cwbautsv.tlb) a partir de la cual tengo creadas ciertas clases para gestionar la conexión con el as400 y con DB/2...
El rendimiento de estas clases tal como las realicé es muy bueno para consultas a la base de datos, para entendernos digamos que desde el AS al PC. Para conseguir el mismo rendimiento en sentido contrario, tendría que usar una cola de datos y el correspondiente PGM en el 400 que procesara los datos de la cola. Para evitar tener que contar con la existencia de ese programa y que todo lo necesario este en el cliente, si tengo que transferir al 400 gran cantidad de datos, uso OleDb con comandos tipo tabla. Si los cambios en la bd son pocos, lo evito y con SQL me apaño perfectamente.

Si tienes tiempo te recomiendo que examines los objetos de esta librería de tipos y seguro que encuentras muchas cosas que te interesan.

Por cierto, como curiosidad y si me lo permites, una pregunta: ¿usais interactivo en vuestra/s máquina/s?

Suerte.

591
Visual Basic 6.0 e inferiores / Re: Combinar Correspondencia Con Word
« en: Martes 10 de Febrero de 2004, 16:45 »
Hola gaita02.

Lo mejor que puedes hacer para empezar es añadir una referencia a Microsoft Word Object Library, a partir de ahí y usando el examinador de objetos, ve investigando...

Para comenzar fíjate en este pequeño y básico ejemplo:

Código: Text
  1.  
  2.     .
  3.     .
  4.     .
  5.     Dim objApp As New Word.Application
  6.     Dim doc1 As Word.Document
  7.     Set doc1 = objApp.Documents.Add
  8.     objApp.Selection.TypeText "Esto es un texto de prueba"
  9.     doc1.SaveAs "C:\Ruta\MiDocumento.doc"
  10.     doc1.Close
  11.     Set doc1 = Nothing
  12.     objApp.Quit
  13.     Set objApp = Nothing
  14.     .
  15.     .
  16.     .
  17.  
  18.  

De gran ayuda será el editor de VBA de word: graba macros con las acciones que quieras realizar y luego comprueba en el editor el código que realiza las acciones de la macro.

Suerte.

592
Visual Basic 6.0 e inferiores / Re: Imagenes En Visual Basic
« en: Martes 10 de Febrero de 2004, 16:24 »
Hola gaita02.

Lo que quieres hacer es muy sencillo mediante DAO, con ADO la cosa puede complicarse más... Por si te interesa e independientemente de otras posibles soluciones, aquí va lo más sencillo:

1- Utiliza un control data (ojo data, no ado data control). Establece las propiedades DatabaseName y RecordSource.

2- Añade un control contenedor OLE. Selecciona el control data para la propiedad DataSource y el campo con la foto para la propiedad DataField.

Espero que esto te sirva.

Abur.

593
Visual Basic 6.0 e inferiores / Re: Aplicaciones Con Multiples Archivos
« en: Martes 10 de Febrero de 2004, 09:47 »
Hola Chanito.

Esta es la cruz de la programación con componentes y VB...

En las propiedades del proyecto fíjate que hay un apartado que habla de Compatibilidad de la versión

Citar
Compatibilidad de la versión
Le permite establecer el nivel de compatibilidad de las versiones.

Sin compatibilidad: no se fuerza la compatibilidad.

Compatibilidad del proyecto: si selecciona esta opción, se activará el cuadro Ubicación, que le permite buscar el archivo con el que será compatible este proyecto. Si no la selecciona, el cuadro Ubicación no estará disponible.
En el caso de todos los tipos de proyecto ActiveX, la opción Compatibilidad del proyecto está seleccionada de forma predeterminada.

Compatibilidad binaria: es muy útil para mantener la compatibilidad entre los proyectos que se han compilado con este componente.

Ubicación de archivo: muestra el nombre y la ubicación del archivo con el que será compatible el proyecto. Puede escribir un nombre y una ubicación o utilizar el botón Examinar para mostrar el cuadro de diálogo Componente compatible ActiveX, donde puede buscar el archivo.

Por supuesto esta compatibilidad tiene un límite... si cambias el nombre de propiedades o métodos, por ejemplo, está claro que no hay compatibilidad que valga.

Una opción que suelo utilizar frecuentemente es no utilizar referencias a librerías ActiveX. En lugar de esto, utilizo variables de objeto que inicializo mediante CreateObject. Esto funciona perfectamente (a no ser que cambie el nombre de las clases ,del proyecto si califico la clase, o algún miembro de la clase). La desventaja es que no puedes declarar las variables 'WithEvents', con lo que falla un tema importante. Otro detalle es que en tiempo de diseño no dispones de la lista de los miembros del objeto. Este inconveniente no es tal, ya que puedes diseñar todo el proyecto con una referencia y las variables de objetos declaradas como del tipo correspondiente, y antes de compilar, eliminas las referencias, declaras los objetos como object, y listo.
Eso sí, si tienes previsto migrar tus aplicaciones a .NET, esta técnica te va a complicar la migración...

Suelo,como complemento o alternativa a lo anterior, utilizar un pequeño programa que se llama al iniciar la aplicación y al terminarla,  que registra y desregistra los componentes que necesito a partir de un archivo con una lista de componentes y comprueba la disponibilidad de otras referencias que le especifique.

Suerte.

594
Visual Basic 6.0 e inferiores / Re: Contraseña A Código Fuente
« en: Martes 10 de Febrero de 2004, 09:35 »
Kaixo.

Creo que lo mejor que puedes hacer es encriptar los fuentes.
Recuerdo haber visto no sé donde un ejemplo muy sencillo aportado por Harvey Triana... si encuentro el link luego lo posteo, de todas formas seguro que navegando por ahí se puede encontrar más de un ejemplo.

Agur.

595
Visual Basic 6.0 e inferiores / Re: Longitud Cero
« en: Martes 10 de Febrero de 2004, 09:30 »
Hola irma3030.

Supervisa el evento Validate para el textbox.

Ej:
Código: Text
  1.  
  2. Private Sub Text1_Validate(Cancel As Boolean)
  3.     If Text1.Text = "" Then
  4.         MsgBox "El control no puede estar en blanco"
  5.         Cancel = True
  6.     End If
  7. End Sub
  8.  
  9.  

Ten en cuenta que el evento validate se desencadena para un control cuando pierde el enfoque y el foco va a parar a un control con la propiedad CauseValidation=True. El uso de esta propiedad permite por ejemplo el uso de un botón para cancelar sin que se produzca una validación al pulsarlo.

Espero que esto te sirva.
Abur.

596
Visual Basic 6.0 e inferiores / Re: Dejar Un Textbox Igual Qe El Reloj Del Sistema
« en: Martes 10 de Febrero de 2004, 09:24 »
Hola Bopo.

Lo mejor que puedes hacer es incluir un control MaskedEdit.
Establece la propiedad Mask = "##:##:##" y la propiedad Format = "hh:mm:ss".

Para asignarle la hora actual: MaskEdBox1.SelText = Format(Time, "hhmmss")

Chao.

597
Visual Basic 6.0 e inferiores / Re: Averiguar El Puerto Com Del Modem Activo
« en: Lunes 9 de Febrero de 2004, 18:01 »
Hola Piter.

Dejando a un lado las funciones api,  creo que con esto podrías encontrar una solución más sencilla:

Añade a tu proyecto un componente Microsoft Comm Control.

Esta función devolvería el número de puerto com más alto:
Código: Text
  1.  
  2. Private Function MaxComPort() As Integer
  3.  
  4.     On Error GoTo Err_Chk
  5.     Dim int1 As Integer
  6.     For int1 = 1 To 16
  7.         MSComm1.CommPort = int1
  8.         MSComm1.PortOpen = True
  9.         MSComm1.PortOpen = False
  10.     Next int1
  11.  
  12. Exit_Chk:    
  13.     MaxComPort = int1
  14.     Exit Function
  15.    
  16. Err_Chk:
  17.     If Err.Number = 8002 Then
  18.         int1 = int1 - 1
  19.         Resume Exit_Cont
  20.     Else
  21.         MsgBox Err.Description
  22.     End If
  23.  
  24. End Function
  25.  
  26.  

Otro método controlaría el estado del puerto:
Código: Text
  1.  
  2. Private Sub ChkPortSts()
  3.  
  4.     On Error GoTo Err_Chk
  5.     Dim int1 As Integer
  6.     For int1 = 1 To MaxComPort()
  7.         MSComm1.CommPort = int1
  8.         MsComm1.PortOpen = True
  9.         Select Case MsComn1.CommEvent
  10.               Case 1
  11.                .
  12.                .
  13.                .
  14.               Case 2
  15.                .
  16.                .
  17.                .
  18.               Case 3
  19.                .
  20.                .
  21.                .
  22.         End Select        
  23.         MsComm1.PortOpen = False
  24.     Next int1
  25.  
  26.     Exit Sub
  27.    
  28. Err_Chk:
  29.         MsgBox Err.Description
  30.  
  31. End Sub
  32.  
  33.  

Los valores que tendrías que controlar para la propiedad CommEvent serían:
Los errores de comunicación incluyen los siguientes valores:
Constante                  Valor           Descripción
comEventBreak        1001          Se ha recibido una señal de interrupción.
comEventFrame       1004           Error de trama. El hardware ha detectado un error de trama.
comEventOverrun     1006          Pérdida de información en puerto. El hardware no ha terminado de leer un carácter antes de llegar el siguiente y lo ha perdido.
comEventRxOver      1008           Desbordamiento del búfer de recepción. No hay espacio para más datos en el búfer de recepción.
comEventRxParity    1009          Error de paridad. El hardware ha detectado un error de paridad.
comEventTxFull         1010         Búfer de transmisión lleno. El búfer de transmisión estaba lleno cuando se ha intentado agregar un carácter a la cola de transmisión.
comEventDCB          1011           Error inesperado al recuperar el Bloque de control de dispositivos (DCB) para el puerto.

Los eventos de comunicación incluyen los valores siguientes:

Constante             Valor          Descripción
comEvSend            1               Hay menos caracteres en el búfer de transmisión de los que indica el número SThreshold.
comEvReceive       2                Número de caracteres RThreshold recibido. Este evento se genera continuamente hasta que se usa la propiedad Input para quitar datos del búfer de recepción.
comEvCTS             3                Cambio en la línea Preparado para enviar.
comEvDSR             4                Cambio en la línea Equipo de datos preparado. Este evento sólo se desencadena cuando la línea DSR cambia de 1 a 0.
comEvCD               5                Cambio en la línea Detección de portadora.
comEvRing             6                Detectada llamada. Algunos UART (transmisores-receptores asíncronos universales) no aceptan este evento.
comEvEOF            7                Carácter de fin de archivo (carácter ASCII 26) recibido.


Poco más te puedo decir porque no he realizado ningún tipo de prueba con estas historias (entre otras cosas porque no tengo un  modem a mano con que probar, ni tengo ganas ni tiempo de buscarlo).

A ver si tu investigando en esta línea consigues lo que quieres...

Suerte.

598
Visual Basic 6.0 e inferiores / Re: Necesito Ayuda!!
« en: Lunes 9 de Febrero de 2004, 15:51 »
¿¡Y cómo será que alguien te manda hacer cosas de las que no tienes ni idea...!?

Yo creo que lo mejor que puedes hacer es decirle a la persona que te mandó hacer esas cosas que las haga él o que se lo mande a alguien que sepa.

Otra opción es que pidas presupuesto...

Y por último una recomendación: lee esto http://foros.solocodigo.com/index.php?showtopic=5710

Ale.

599
Visual Basic 6.0 e inferiores / Re: Simon Juego!!
« en: Lunes 9 de Febrero de 2004, 10:02 »
Hola dj_flu.

Usa dos variables string: una para almacenar la secuencia 'aleatoria' y otra para almacenar las pulsaciones sobre los botones. Almacena las secuencias de esta forma, por ejemplo : "RRVM" (rojo, rojo, verde, amarillo) , "AMVRVVR" (azul, amarillo, verde, rojo, verde, verde, rojo) ... Compara las dos variables, si no son iguales...

Suerte.

600
Visual Basic 6.0 e inferiores / Re: Combos Con Columnas
« en: Lunes 9 de Febrero de 2004, 09:55 »
Hola MestreZero.

Fíjate en este ejemplo:

Código: Text
  1.  
  2.     ComboBox1.Clear
  3.     ComboBox1.ColumnCount = 4
  4.     ComboBox1.ColumnWidths = "75 pt;75 pt;75 pt;75 pt"
  5.     Dim int1 As Integer
  6.     Dim int2 As Integer
  7.     For int1 = 0 To 10
  8.         ComboBox1.AddItem _
  9.         "Fila " & int1 + 1 & " , Col 1"
  10.         For int2 = 1 To 3
  11.             ComboBox1.List(int1, int2) = _
  12.             "Fila " & int1 + 1 & " , Col " & int2 + 1
  13.         Next int2
  14.     Next int1
  15.  
  16.  

Abur.

Páginas: 1 ... 22 23 [24] 25 26 ... 43