|
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
« en: Sábado 14 de Febrero de 2004, 12:14 »
Private Declare Function mciSendString Lib "winmm.dll" Alias _ "mciSendStringA" (ByVal lpstrCommand As String, ByVal _ lpstrReturnString As String, ByVal uReturnLength As Long, _ ByVal hwndCallback As Long) As Long Private Sub Abrir() Dim str1 As String * 127 mciSendString "set CDAudio door open", str1, 127, 0 End Sub Public Sub Cerrar() Dim str1 As String * 127 mciSendString "set CDAudio door closed", str1, 127, 0 End Sub
577
« 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
« en: Viernes 13 de Febrero de 2004, 09:01 »
Hola DaVId925.
App.TaskVisible = False
Suerte.
579
« 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
« 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
« en: Jueves 12 de Febrero de 2004, 17:25 »
Hola.
¿Y no puedes utilizar un Label...?
Chao.
582
« en: Jueves 12 de Febrero de 2004, 17:24 »
¿Esto te ocurre con todos los proyectos?
583
« 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
« 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í: Dim intCanal As Boolean intCanal = FreeFile Open "C:\Ruta\Archivo.txt" For Input As #intCanal dim var1 AS variant, str1 As String Dim intAnho As integer, intDia as integer Do until EOF(intCanal) Line Input #intCanal, str1 intDia = intDia + 1 var1 = Split(str1, Chr(9)) For intAnho = 0 To UBound(var1) MsgBox "Día: " & intDia & vbcrlf _ & "Año: " & intAnho + 1 & vbcrlf _ & "Valor: " & var1(intAnho) Next intAnho Loop Close #intCanal
Suerte.
585
« 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
« 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=imaginghttp://foros.solocodigo.com/index.php?showtopic=4129Agur.
587
« 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: Private Sub Adodc1_WillChangeRecord( _ ByVal adReason As ADODB.EventReasonEnum, _ ByVal cRecords As Long, _ adStatus As ADODB.EventStatusEnum, _ ByVal pRecordset As ADODB.Recordset) Dim int1 as integer For int1 = 0 To pRecordset.Fields.Count - 1 If IsNull(pRecordset.Fields(int1).Value Then If pRecordset.Fields(int1).Type = adChar Then pRecordset.Fields(int1).Value = "" Else pRecordset.Fields(int1).Value = 0 End If End If Next int1 End Sub
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
« 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
« 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
« 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: Dim cnx1 As ADODB.Connection Set cnx1 = New ADODB.Connection cnx1.Open "provider=IBMDA400;data source=NOMBRE_SISTEMA; , , -1" Dim cmd1 As ADODB.Command Set cmd1 = New ADODB.Command Set cmd1.ActiveConnection = Cnx1 cmd1.Properties(16).Value = 7 'Updatability 'Asignando el recordset a una tabla. cmd1.CommandType = adCmdTable cmd1.CommandText = _ "/QSYS.LIB/MILIBRERIA.LIB/MIOBJ.FILE (*FIRST, *NONE)" cmd1.Parameters.Append cmd1.CreateParameter("P1", adChar, adParamInput, 1) Dim rs1 As ADODB.Recordset Dim var1 As Variant, var2 As Variant Set rs1 = cmd1.Execute(var1, var2, adCmdTable) MsgBox rs1.RecordCount 'Asignando el recordset a un cursor SQL. Dim rs2 As ADODB.Recordset cmd1.CommandType = adCmdText cmd1.CommandText = "SELECT * FROM MILIBRERIA.MIOBJ" Set rs2 = cmd1.Execute() MsgBox rs2.RecordCount Set rs1 = Nothing Set rs2 = Nothing Set cmd1 = Nothing cnx1.Close Set cnx1 = Nothing
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
« 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: . . . Dim objApp As New Word.Application Dim doc1 As Word.Document Set doc1 = objApp.Documents.Add objApp.Selection.TypeText "Esto es un texto de prueba" doc1.SaveAs "C:\Ruta\MiDocumento.doc" doc1.Close Set doc1 = Nothing objApp.Quit Set objApp = Nothing . . .
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
« 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
« 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ónCompatibilidad 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
« 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
« en: Martes 10 de Febrero de 2004, 09:30 »
Hola irma3030. Supervisa el evento Validate para el textbox. Ej: Private Sub Text1_Validate(Cancel As Boolean) If Text1.Text = "" Then MsgBox "El control no puede estar en blanco" Cancel = True End If End Sub
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
« 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
« 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: Private Function MaxComPort() As Integer On Error GoTo Err_Chk Dim int1 As Integer For int1 = 1 To 16 MSComm1.CommPort = int1 MSComm1.PortOpen = True MSComm1.PortOpen = False Next int1 Exit_Chk: MaxComPort = int1 Exit Function Err_Chk: If Err.Number = 8002 Then int1 = int1 - 1 Resume Exit_Cont Else MsgBox Err.Description End If End Function
Otro método controlaría el estado del puerto: Private Sub ChkPortSts() On Error GoTo Err_Chk Dim int1 As Integer For int1 = 1 To MaxComPort() MSComm1.CommPort = int1 MsComm1.PortOpen = True Select Case MsComn1.CommEvent Case 1 . . . Case 2 . . . Case 3 . . . End Select MsComm1.PortOpen = False Next int1 Exit Sub Err_Chk: MsgBox Err.Description End Sub
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
« 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=5710Ale.
599
« 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
« en: Lunes 9 de Febrero de 2004, 09:55 »
Hola MestreZero. Fíjate en este ejemplo: ComboBox1.Clear ComboBox1.ColumnCount = 4 ComboBox1.ColumnWidths = "75 pt;75 pt;75 pt;75 pt" Dim int1 As Integer Dim int2 As Integer For int1 = 0 To 10 ComboBox1.AddItem _ "Fila " & int1 + 1 & " , Col 1" For int2 = 1 To 3 ComboBox1.List(int1, int2) = _ "Fila " & int1 + 1 & " , Col " & int2 + 1 Next int2 Next int1
Abur.
Páginas: 1 ... 22 23 [24] 25 26 ... 43
|
|
|