|
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 ... 39 40 [41] 42 43
1001
« en: Martes 19 de Agosto de 2003, 10:55 »
Tal vez tu problema sea que el proceso que ejecutas para mostrar las imagenes no da oportunidad a que se desencaden los eventos de los componentes. Prueba añadiendo la instrucción 'DoEvents' en tu código. ¿Que donde la pones? Pues por ejemplo, después del método o función que utilices para mostrar cada una de las imágenes.
A ver si este era tu problema y así se soluciona. Suerte.
1002
« en: Lunes 18 de Agosto de 2003, 12:05 »
Podrías probar copiando el ejecutable fuera del escritorio, por tener algún dato más (seguramente te funcionará ok).
Si no me equivoco tanto en wNT como en 2000 (¿acaso no es la misma plataforma?) el escritorio 'cuelga' de la carpeta 'WINNT'. ¿Puede estar ocurriendo que el propio SO haga que estas carpetas 'especiales' no sean visibles para la función 'Path' del objeto 'App' y que sólo muestre la primera carpeta que sea accesible? Si esto fuera así tendría sentido que el resultado de 'App.Path' sea 'C:WINNT', en caso contrario: no entiendo nada. Desde luego lo que si te puedo decir es que en w95 y 98 'App.Path' muestra la ruta correctamente, esté el ejecutable en el escritorio, mi maletín, esté donde esté...
En fin, lamento no poder ser de más ayuda... a ver si alguien que comprenda windows arroja luz sobre el tema.
Un saludo.
1003
« en: Lunes 18 de Agosto de 2003, 10:36 »
'App.Path' devolverá en modo diseño la ruta en la que se encuentra el archivo del proyecto. Una vez compilado el valor devuelto corresponde con la ruta en la que se encuentra el ejecutable.
Si a ti no te funciona así... Me parece muy extraño. ¿No estarás ejecutando un acceso directo?¿Dónde se encuentra tú programa?
Un saludo.
1004
« en: Lunes 18 de Agosto de 2003, 08:31 »
No hombre, no. ¡Cómo va a ser un reproche a Movilla...!
El comentario va por quién no responde los mensajes que inicia y propone tratos a cambio de ayuda
(" y a cambio te respondere o te dare algunos de mis sistemas de FACTURACION y VENTAS ")
, que a mi entender en un foro como este, donde se contesta desinteresadamente, no tienen cabida.
Que no haya malos entendidos. Saludos.
1005
« en: Miércoles 13 de Agosto de 2003, 08:44 »
Que trato más enrrollado... La ayuda había que facturartela con uno de tus pgms, ya que el valor de las respuestas de cualquiera en este foro es tan valiosa como la tuya.
Lembranzas.
1006
« en: Miércoles 13 de Agosto de 2003, 08:31 »
Me da la sensación que tu problema no está en cómo 'se sube' el fichero, sino más bien en cómo lo lees.
Si abres el fichero en modo binario (OPEN fichero FOR BINARY AS #numero) y mediante el método GET puedes leer uno o más bytes del fichero, almacenando el valor de cada byte en una variable o en un elemento de una matriz.
El valor Lo verás según el tipo de datos de la variable: si la variable es de tipo byte, lo verás como un número en decimal del 0 al 255, si es carácter lo verás como el caracter ascii correspondiente al valor del byte, ...
Podrías usar una función de este tipo para obtener el valor binario de un número decimal como ceros y unos en una cadena (aunque no sé cómo ira el rendimiento). Si el parámetro 'RevByteOrder' es True, indica que el orden de los bits que componen el número están en orden inverso, es decir, primero el bit más significativo :
Public Function Binario(ByVal NumBase 10 as Long,Optional ByVal RevByteOrder As Boolean) As String Dim intExp As Integer Dim str1 As String Dim int1 As Integer
Do While True If 2 ^ intExp > NumBase10 Then If intExp > 0 Then intExp = intExp - 1 End If Exit Do End If intExp = intExp + 1 Loop
If Not RevByteOrder Then
For int1 = intExp To 0 Step -1 If NumBase10 < (2 ^ int1) Then str1 = "0" & str1 Else str1 = "1" & str1 NumBase10 = NumBase10 - (2 ^ int1) End If Next int1
Else
For int1 = intExp To 0 Step -1 If NumBase10 < (2 ^ int1) Then str1 = str1 & "0" Else str1 = str1 & "1" NumBase10 = NumBase10 - (2 ^ int1) End If Next int1
End If
Binario = str1
End Function
Espero que esto te vaya bien... Saludos y suerte.
1007
« en: Jueves 7 de Agosto de 2003, 11:50 »
Una forma podría ser la que a continuación te explico. Antes de nada, avisar que si esto es algo que necesitas muy a menudo, te merece la pena ponerte, en caso contrario ...
La idea es la siguiente:
Si abres un formulario de vb con un editor de texto, te encontrarás con bloques de texto de este estilo:
Begin VB.TextBox Text1 BeginProperty Font Name = "Arial" Size = 8.25 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 330 Left = 240 TabIndex = 3 Top = 3240 Width = 4695 End
Cada bloque identifica objetos del formulario, desde el formulario mismo a otros controles que contenga. Si te fijas, en medio de cada uno de estos bloques, puede haber otro bloque para la propiedad Font del objeto.
Bien. Aquí viene la cuestión. Se trataría entonces de hacer un programita que fuera leyendo cada uno de los archivos *.frm, identificando los bloques del estilo
BeginProperty Font . . . EndProperty
y fueras sustituyendo los valores por los que a ti te interesen.
Como te decía al principio, creo que deberías valorar hacer o no un programa de este estilo según el trabajo que te vaya a ahorrar en un futuro, ya que tal vez para una ocasión puntual, lo que te merece la pena es seguir el consejo de chiaravel. De todas formas si te pones a hacer el programa, utiliza para depurar mientras lo haces un formulario de prueba, no vaya a ser que escaralles alguno que ya tienes hecho.
Un saludo y suerte.
1008
« en: Jueves 7 de Agosto de 2003, 11:41 »
Una forma podría ser la que a continuación te explico. Antes de nada, avisar que si esto es algo que necesitas muy a menudo, te merece la pena ponerte, en caso contrario ...
La idea es la siguiente:
Si abres un formulario de vb con un editor de texto, te encontrarás con bloques de texto de este estilo:
Begin VB.TextBox Text1 BeginProperty Font Name = "Arial" Size = 8.25 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 330 Left = 240 TabIndex = 3 Top = 3240 Width = 4695 End
Cada bloque identifica objetos del formulario, desde el formulario mismo a otros controles que contenga. Si te fijas, en medio de cada uno de estos bloques, puede haber otro bloque para la propiedad Font del objeto.
Bien. Aquí viene la cuestión. Se trataría entonces de hacer un programita que fuera leyendo cada uno de los archivos *.frm, identificando los bloques del estilo
BeginProperty Font . . . EndProperty
y fueras sustituyendo los valores por los que a ti te interesen.
Como te decía al principio, creo que deberías valorar hacer o no un programa de este estilo según el trabajo que te vaya a ahorrar en un futuro, ya que tal vez para una ocasión puntual, lo que te merece la pena es seguir el consejo de chiaravel. De todas formas si te pones a hacer el programa, utiliza para depurar mientras lo haces un formulario de prueba, no vaya a ser que escaralles alguno que ya tienes hecho.
Un saludo y suerte.
1009
« en: Jueves 7 de Agosto de 2003, 09:04 »
Otra forma de utilizar la sentencia SQL, usando controles, es asignándola a la propiedad RecordSource de un control data.
Adodc1.RecordSource = "SELECT SUM(Importe) AS Total FROM Tabla WHERE Fecha BETWEEN #" & Text1.Text & "# AND #" & Text2.Text & "#"
Y Luego:
Adodc1.Refresh DataGrid1.ReBind
Espero que esto te resulte más sencillo. De todas formas te recomiendo que busques información y ejemplos (en este foro mismo) sobre la utilización de objetos para acceso a datos.
Por cierto, en el mensaje anterior hay un error. Donde dice:
set rs1 = cmd1.Execute "SELECT SUM(Importe) AS Total FROM Tabla WHERE Fecha BETWEEN #" & Text1.Text & "# AND #" & Text2.Text & "#"
Debería decir:
cmd1.CommandText = "SELECT SUM(Importe) AS Total FROM Tabla WHERE Fecha BETWEEN #" & Text1.Text & "# AND #" & Text2.Text & "#" Set rs1 = cmd1.Execute
Suerte.
1010
« en: Miércoles 6 de Agosto de 2003, 13:15 »
Sin estar seguro al 100% te diré que por mucho que establezcas propiedades al objeto Printer en vb, al Access le va a dar igual.
Una forma que veo sería seleccionando el informe en la BD y entrando por Archivo, Configurar página, intentar indicar que el informe se imprima en dúplex (aunque ahora mismo tengo la duda de si ésto no se indicará en las propiedades de la impresora, con lo cual afectaría a todos los informes).
Otra forma podría ser llamando desde el evento Open del informe a otro programita que enviara la secuencia de escape, por ejemplo, necesaria para que la impresora imprima en dúplex (consulta el manual de la impresora).
Lo que si creo que es bastante seguro es que con el objeto Printer y Access no vas a conseguir nada, ya que Printer es miembro de VB (VB6.OLB), Access no incluye esta refencia, y a pesar de todo, Access imprime sin objeto Printer.
No se si te habré sido de mucha ayuda...pero en fin, son ideas. No desesperes, tal vez en este mismo foro alguien te de una solución adecuada. Suerte.
1011
« en: Miércoles 6 de Agosto de 2003, 09:23 »
Ampliando el mensaje anterior, también podrías usar la forma siguiente para referirte a la base de datos.
NOMBRE_EQUIPOVIA_DE_ACCESOBASE_DE_DATOS.mdb
o esta otra.
xxx.xxx.xxx.xxxVIA_DE_ACCESOBASE_DE_DATOS.mdb
Donde xxx.xxx.xxx.xxx es la dirección ip del equipo.
1012
« en: Miércoles 6 de Agosto de 2003, 08:31 »
Asigna en el equipo local la vía de acceso donde se encuentra la base de datos remota a una unidad de red (explorador de windows, conectar unidad de red). Puedes referirte al equipo que tiene la BD por su nombre (archivo hosts , lmhosts) o por su IP. Si el equipo remoto no corre con windows, deberías usar un gateway.
Una vez que tienes mapeada una letra con una unidad de red, refiérete a ella como si se tratara de una unidad local.
Espero que esto te sirva.
1013
« en: Miércoles 6 de Agosto de 2003, 08:18 »
Agradezco tus comentarios, pero utilizo normalmente estas apis para en muchos casos evitar el añadir ningún formulario al proyecto para usar un control CommonDialog. Incluso aunque use formularios, evito cargarlos con controles que no son visibles si tengo otra forma de hacer las cosas.
En el caso de estas apis, funcionan perfectamente para lo que busco, exceptuando lo del nombre de archivo por omisión (la vía de acceso por omisión sí me funciona).
Me consta que hay alguna forma de hacerlo, supongo que habrá que utilizar otra api.
En fin, gracias de todas formas.
1015
« en: Martes 5 de Agosto de 2003, 09:46 »
Si enumeras las claves del registro de la clave Mi PCHKEY_LOCAL_MACHINESoftwareODBCODBCINST.INI creo que puedes encontrar lo que buscas.
Suerte.
1016
« en: Martes 5 de Agosto de 2003, 09:00 »
No conozco .Net (y no por falta de ganas), pero según lo poco que tengo oido, necesitarás para ejecutar tus programas en los clientes tener instalado framework.net. Es que realmente los ejecutables se traducen a un lenguaje de bajo nivel interpretado por una tal CLR (common language library, o algo así). Total que en los equipos en que quieras ejecutar tus pgms, necesitan una 'máquina virtual' (tipo java, ¿no?).
En fin, a ver si alguien que sepa de esto nos explica mejor el tema.
Un saludo.
1017
« en: Martes 5 de Agosto de 2003, 08:52 »
Si el listado lo estás generando a través del objeto Printer, no sería muy complicado controlar la impresión. Deberías crear un formulario con una etiqueta en la que vayas mostrando el estado de impresión y con un botón que cancele el proceso.
Si el listado lo genera algún otro componente... dependería de ese componente y estaría más fastidiado (o no, dependería del componente, repito).
Si lo genera otra aplicación mediante automatización OLE, intenta utilizar la presentación preliminar del informe.
De todas formas no sé si habrá alguna api o método para abrir el administrador de impresión, pero claro el listado ya estaría en cola de salida.
No se si te habré aclarado mucho, pero... suerte.
1018
« en: Martes 5 de Agosto de 2003, 08:40 »
Disculpas por el despiste en la respuesta del mensaje...
Lo que dice J.M.Movilla es correctísimo.
Necesitarás definir en tu aplicación los siguientes objetos:
Objeto conexión (ADODB.Connection). Utiliza su método 'Open' con la cadena de conexión adecuada a tu caso.
Objeto comando(ADODB.Command). Establece su propiedad 'ActiveConnection' con el valor del objeto conexión anterior (con SET, ojo, es un objeto) . Establece la propiedad 'CommandType' igual 'adCmdText'.
Objeto recordset (ADODB.Recordset). Este contendrá los registros seleccionados obtenidos de la siguiente forma:
set rs1 = cmd1.Execute "SELECT SUM(Importe) AS Total FROM Tabla WHERE Fecha BETWEEN #" & Text1.Text & "# AND #" & Text2.Text & "#"
Donde rs1 sería el objeto recordset y cmd1 el comando.
Una vez ejecutado, el resultado lo obtendrías así:
Total = Iff(Not IsNull(rs1.Fields(0).Value) , rs1.Fields(0).Value, 0)
Todo esto así a grandes rasgos. Si quieres más detalle o ejemplos, creo que en mensajes anteriores de este foro podrás encontrar lo que buscas.
Si te acostumbras a trabajar con este tipo de objetos, pronto dejarás de usar controles data
Suerte.
1019
« en: Martes 5 de Agosto de 2003, 08:20 »
Tal vez algo de este estilo te puede funcionar:
Private Function Copiar(Byval Origen as string, Byval Destino as string) as Boolean
Dim intO as integer, intD as integer, byt1() as Byte
On Error Goto Error_Copiar
intO = FreeFile Open Origen For Binary as #intO
' En el caso de que el fichero no fuera muy grande.
Redim byt1(1 to Lof(intO)
'Si el fichero es demasiado grande, deberás implementar un buffer dimensionando 'byt1' al tamaño que tu veas y haciendo un bucle hasta que llegues a la longitud del fichero.
intD = FreeFile Open Destino For Binary as #intD
Get #intO,,byt1 Put #intD,,byt1
Copiar = True
Salir_Copiar:
On Error resume next
Close #intO Close #intD
Exit Function
Error_Copiar:
MsgBox Err.Description
Resume Salir_Copiar
End Function
A ver si esto te sirve... Suerte
1020
« en: Lunes 4 de Agosto de 2003, 10:07 »
Deberás usar un par de ejecutables (por lo menos):
C2.EXE para crear archivos *.OBJ (creo). LINK.EXE para generar el ejecutable a partit de los OBJ.
Ten en cuenta que esto que te digo son meras suposiciones mías, por lo que tal vez lo que te digo está equivocado, pero supongo que por aquí van los tiros.
Suerte.
1021
« en: Lunes 4 de Agosto de 2003, 09:35 »
Busca un ejecutable llamado C2.EXE que se debe encontrar en el directorio de programas donde se haya instalado VB.
Creo que este es el compilador. No se que parámetros recibirá, supongo que el nombre del proyecto y el del ejecutable, tendrías que probarlo-investigarlo tú mismo. Si lo averiguas te sería muy sencillo crear un programa o archivo de proceso por lotes para compilar todos esos proyectos que dices.
Espero que te sirva de algo.
1022
« en: Viernes 1 de Agosto de 2003, 08:44 »
Puedes utilizar el modificador /S para que el registro - desregistro se haga de forma silenciosa.
REGSVR32 Archivo.Dll /S
Suerte.
1023
« en: Viernes 1 de Agosto de 2003, 08:41 »
Puedes utilizar el modificador /S para que el registro - desregistro se haga de forma silenciosa.
REGSVR32 Archivo.Dll /S
Suerte.
1024
« en: Viernes 1 de Agosto de 2003, 08:36 »
Puedes ejecutar para un recordset una sentencia SQL de este estilo:
"SELECT SUM(Campo1) FROM Tabla WHERE FECHA1>=" & Text1.Text & " AND FECHA1<=" & Text1.Text
Suerte.
1025
« en: Viernes 1 de Agosto de 2003, 08:30 »
El la anterior respuesta a tu mensaje, me equivoqué en el nombre de archivo de la biblioteca VBA. El nombre correcto no es otro que MSVBVM60.DLL (en caso de que tengas vb 6.0).
Mis disculpas por el gazapo.
Páginas: 1 ... 39 40 [41] 42 43
|
|
|