• Lunes 23 de Diciembre de 2024, 15:25

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 ... 14 15 [16] 17 18 ... 43
376
Hola adelarodri.

Prueba usando el método Requery del objeto Recordset del supuesto control data que estás usando:

Código: Text
  1.  
  2. Adodc1.Recordset.Requery
  3.  
  4.  

Chao.

377
Visual Basic 6.0 e inferiores / Re: Para Adoexpertos
« en: Lunes 10 de Mayo de 2004, 17:17 »
Hola.

Una sentencia SQL utiliza los índices que la tabla tenga creados segun los campos por los que realice una selección y/o agrupación, y/o unión. Es decir, por ejemplo si en una cláusula where comparas por un campo que tiene un índice creado y por otro que no lo tiene, para el segundo se construye en el momento una vía de acceso, con la consiguiente demora en la consulta. Si el número de registros en la tabla es pequeño esta demora no será significativa, pero en otro caso... Otro caso (y tal vez en el que más se puede notar la diferencia) en el que tener creado adecuadamente índices es importante es cuando la sentencia SQL cuenta con tablas unidas mediante JOIN, LEFT JOIN, INNER JOIN, etc, ... Si los campos de unión están indexados mejor que mejor.

Abur.

378
Visual Basic 6.0 e inferiores / Re: Formularios Mdi
« en: Jueves 29 de Abril de 2004, 10:04 »
Hola.

Infórmate acerca de la propiedad NegotiateToolbars del form MDI.
Ten también en cuenta que no tienes por que hacer que el resto de los formularios sean todos MDIChild, también puedes usar forms NO MDIChild abiertos como modales.

379
Visual Basic 6.0 e inferiores / Re: Formularios Mdi
« en: Jueves 29 de Abril de 2004, 10:00 »
Hola chryobcn.

¿De verdad piensas que usar windowstate es una chapuza?... pues no sé que será más chapucero: usar ese método inhabilitando el MaxButton, o tener una aplicación MDI todo el rato maximizada...

Abur.

380
Visual Basic 6.0 e inferiores / Re: Que Me Aconsejais?
« en: Jueves 29 de Abril de 2004, 09:44 »
Hola ebolo.

Yo para estas cosas suelo utilizar un FlexGrid. Para mi usar un listview como un grid para visualizar datos de una tabla tiene un claro inconveniente: desperdicias la potencia que tiene el control (ten en cuenta que sólo utilizas la vista 'report'), potencia que provoca que sea un control más pesado que un flexgrid. Ahora, para gustos hay colores.

Por otro lado, y completando un poco el tema: los combobox tienen una propiedad llamada ItemData que permiten asociar un valor (tipo long) a cada  item del combo, lo cual puede dar muchísimo juego...

Suerte.

381
Visual Basic 6.0 e inferiores / Re: Acces Y Visual Basic
« en: Jueves 29 de Abril de 2004, 09:37 »
Hola jpardo84.

Código: Text
  1.  
  2. Private Sub Command1_Click()
  3.     Dim str1 As String, int1 As Integer
  4.     str1 = CurrentDb.Name
  5.     'Con vba de access no dispones de InStrRev , una pena...
  6.     For int1 = Len(str1) To 1 Step -1
  7.         If Mid(str1, int1, 1) = "\" Then Exit For
  8.     Next int1
  9.     str1 = Left(str1, int1)
  10.     MsgBox str1
  11. End Sub
  12.  
  13.  

Abur.

382
Visual Basic 6.0 e inferiores / Re: Acces Y Visual Basic
« en: Jueves 29 de Abril de 2004, 09:32 »
Este se me escapó y no lo puedo eliminar...

383
Visual Basic 6.0 e inferiores / Re: Web De Visual Basic Y Manuales
« en: Miércoles 28 de Abril de 2004, 09:19 »
Gracias por el aporte blade72.

384
Visual Basic 6.0 e inferiores / Re: Reporteador
« en: Miércoles 28 de Abril de 2004, 09:18 »
Hola JuanC.

No es un tema tan sencillo como para que alguien te pase el código...

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

Suerte.

385
Visual Basic 6.0 e inferiores / Re: Acces Y Visual Basic
« en: Miércoles 28 de Abril de 2004, 09:13 »
Hola jpardo84.

La forma que conozco para obtener el path de la base de datos es a través del objecto CurrentDb. La propiedad Name proporciona el nombre con la ruta completa de la base de datos, por lo que como imagino por lo que dices que lo que necesitas es el nombre y ubicación de la bd, no necesitas hacer nada más. Si sólo necesitaras recuperar la ruta, necesitarías hacer una muy sencilla función para recuperarla.

Suerte.

386
Visual Basic 6.0 e inferiores / Re: Manejo De Terminales En Una Red.
« en: Miércoles 28 de Abril de 2004, 09:07 »
Hola Leon.

Para cerrar windows puedes usar un código así:

Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
  5.  
  6. Public Sub CerrarWindows()
  7.     End
  8.     ExitWindowsEx 1, 0
  9. End Sub
  10.  
  11.  

Como bloquear el equipo adecuadamente es otro tema y si no me equivoco puede depender en parte de la versión SO que utilizas... En este mismo foro creo que hay varias discusiones acerca de este tema.

Suerte.

387
Visual Basic 6.0 e inferiores / Re: Direccion De Red Para B.d.
« en: Martes 27 de Abril de 2004, 14:44 »
Hola paisano.

Puedes seguir varios caminos:

- Tener una unidad asignada al recurso de red. La ruta de la bd seria similar a si estuviera en local, por ejemplo Set mb = OpenDatabase("u:/CarpetaCompartida/bd.mdb"). Puedes realizar la conexión con la unidad manualmente, manualmente indicando que se restaure la conexión al iniciar (sólo lo tendrías que hacer una vez), o mediante el comando Net Use.

- Referirse al equipo que tiene la bd por su ip o por su posible nombre de dominio:

por su ip: \\999.999.999.999\CarpetaCompartida\db.mdb

o si tienes una entrada para la ip en el archivo hosts (o lmHosts, asegún), asociandola a un nombre para el equipo: \\NombreEquipo\CarpetaCompartida\db,mdb

Abur.

388
Visual Basic 6.0 e inferiores / Re: Crear Una Tabla En Access
« en: Martes 27 de Abril de 2004, 12:20 »
Hola SoWhat.

En vez de usar objetos 'Table' debes usar objetos 'TableDef'.

Échale un vistazo: http://foros.solocodigo.com/index.php?show...t=0&#entry15017

Suerte.

389
Novedades en SoloCodigo / Re: Cambio De Servidor Y Nuevas Secciones
« en: Martes 27 de Abril de 2004, 10:50 »
Me sumo a las felicitaciones. Enhorabuena por el chollo...

390
Sobre los Foros de SoloCodigo / Re: Cual Es El Mejor
« en: Martes 27 de Abril de 2004, 10:44 »
Hola.

Mi voto va para Nicokiki y Bob.

Ya que salió el tema, para satisfacer curiosidades, mi avatar corresponde a un detalle de una 'estatua-menhir' fechada como de la edad del bronce? conocida como La Cabeza de San Pedro (esa costumbre que tenían de cristianizar todo... es muy triste que muchas poblaciones pierdan su topónimo original en favor de su santo patrón, por el que son sistemáticamente nombradas...). El monumento se encuentra situado en Rebón (Moraña, Pontevedra), en una fuerte pendiente sobre el 'regato' Xundeiro, completamente olvidado en medio de un eucaliptal...

Abur.

391
Visual Basic 6.0 e inferiores / Re: Sourcesafe
« en: Martes 27 de Abril de 2004, 10:09 »
Hola giomar.

SourceSafe permite llevar control sobre cambios y control de versiones en el código fuente. Debe ser especialmente útil en entornos de trabajo cooperativos en los que varias personas mantienen las aplicaciones.
Personalmente nunca lo he utilizado, pues yo me lo guiso y yo me lo como...

Suerte.

392
Hola pippin.

No sé si se podrán seleccionar las páginas a imprimir de un informe access desde código, pero tal vez soluciones el tema aplicando el filtro adecuado a los datos del informe. En este mismo foro hay ejemplos de cómo utilizar un informe access desde vb.

Suerte.

393
Visual Basic 6.0 e inferiores / Re: Medidas Especiales Para Un Reporte
« en: Martes 27 de Abril de 2004, 10:00 »
Hola KHARTER.

En este foro, ve a la parte inferior de la página y donde dice 'Buscar en este foro', introduce la palabra Printer. Verás la de resultados que obtienes...

Suerte.

394
Visual Basic 6.0 e inferiores / Re: Eliminar Procesos
« en: Martes 27 de Abril de 2004, 09:56 »
Hola elburrow.

No sé si te he comprendido muy bien... Hablas de terminar un proceso sin tener que lanzarlo, pero luego en el código que adjuntas, el proceso es lanzado mediante shell.

Fíjate a ver si algo de esto a ver si te sirve. El código ejecuta un proceso y después de 1 minuto, si no ha finalido se fuerza la finalización:
Código: Text
  1.  
  2. Private Const STILL_ACTIVE = &H103
  3. Private Const PROCESS_QUERY_INFORMATION = &H400
  4. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
  5. Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
  6. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  7. Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
  8.  
  9. Private sub Prueba
  10.     Dim lng1 As Long, lngRc As Long
  11.     lng1 = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell("C:\Ruta\Ejecutable.exe", vbNormalFocus))
  12.     Sleep 60000
  13.     GetExitCodeProcess lng1, lngRc
  14.     If lngRc = STILL_ACTIVE Then TerminateProcess lng1, lngRc
  15. End Sub
  16.  
  17.  

Suerte.

395
Visual Basic 6.0 e inferiores / Re: Picturebox
« en: Martes 27 de Abril de 2004, 09:48 »
Hola cucaracha.

Para hacerlo sencillo supongo una región a 'borrar' rectangular y uso un picture box como origen para copiar, Imagina algo así:

Un PictureBox llamado Picture1 con su correspondiente imagen. Otro PictureBox llamado Picture2 sin picture cargado y con el color de fondo que desees que aparezca en el lugar 'recortado'.

Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
  5.  
  6. Public Sub Borrar()
  7.     Dim lngRc
  8.     lngRc = BitBlt(Picture1.hdc, 10, 10, 100, 100, Picture2.hdc, 1, 1, &HCC0020)
  9.     Picture1.Refresh
  10. End Sub
  11.  
  12.  

Suerte.

396
Visual Basic 6.0 e inferiores / Re: Manejo De Terminales En Una Red.
« en: Martes 27 de Abril de 2004, 09:24 »
Hola León.

En principio para controlar distintos equipos en la red desde uno dado, ejecutaría algún programita en cada uno que mediante sockets, por ejemplo (también se podría probar con un exe ActiveX),  se comunicase con
otra aplicación que correría en el equipo que contrala al resto, indicando cuando cada programa de los otros equipos debe hacer que el pc se reinicie o bloquee.

Suerte.

397
Visual Basic 6.0 e inferiores / Re: Acces Y Visual Basic
« en: Martes 27 de Abril de 2004, 09:19 »
Hola.

Ojo cuando uséis 'App.Path'... Mucha gente añade un slash (\) antes del nombre de archivo. Esto funciona bien hasta que App.Path = C:\ , por ejemplo. Me explico:

Si la aplicación se encuentra en la raíz de C: , App.Path devuelve C:\.

Si la aplicación se encuentra por ejemplo en C:\Ruta\ , App.Path devuelve C:\Ruta.

Lo que yo suelo hacer es lo siguiente:
Código: Text
  1.  
  2. Dim str1 As String
  3. str1 = App.Path
  4. If Right(str1,1) <> "\" Then str1 = str1 & "\"
  5. str1 = str1 & "NombreDeArchivo.ext"
  6.  
  7.  

Citar
¿puede Acces97 autoaveriguar cuál es la ruta donde se encuentre actualmente una base de datos abierta?
Acces97 no tiene nada que ver aquí. Además, no puede detectar 'una base de datos abierta'  porque en este caso supongo que NO está abierta.

En cuanto a lo del error que te da, no tiene nada que ver con el tema que estamos tratando... está bien claro, en algún sitio tienes una variable sin declarar: ejecuta la aplicación desde el IDE y comprueba cuál es la palabra que te aparece resaltada.

Suerte.

398
Visual Basic 6.0 e inferiores / Re: Capturar Pantalla
« en: Martes 27 de Abril de 2004, 09:09 »
Hola.

Podéis probar con esto, simula una pulsación de la tecla imprimir pantalla:

Código: Text
  1.  
  2. Private Const VK_SNAPSHOT = &H2C
  3. Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
  4.  
  5. Public Sub PrtScn()
  6.         keybd_event VK_SNAPSHOT, 1, 0&, 0&
  7.         DoEvents
  8.         SavePicture Clipboard.GetData, "C:\Ruta\Archivo.bmp"
  9. End Sub
  10.  
  11.  

Suerte.

399
Hola COSERVITEL.

Es una forma más de complicar un poco las cosas, pero no podrías evitar el uso ilegal del soft. Me explico:

1- Nada impediría distribuir copias ilegales del ejecutable junto con el archivo .SIS. Desde luego que en la misma empresa la aplicación se podría instalar en tantos puesto como se deseara sin mayor problema.

2- Dependiendo de como se calcule la clave según la fecha actual y los datos de entrada del archivo de texto (encriptados o no), podría ocurrir que alguien utilizase un programa para debuguear tu aplicación, agregando puntos de interrupción a las llamadas a las funciones de MSVMVB60.DLL, lograse indentificar el algoritmo de comprobación de esas claves. A continuación sólo tendría que crear un programita que crease un archivo .SIS a gusto y llamar a tu aplicación.

Yo desde luego que no sabría hacerlo, pero no dudes que mucha gente si sería capaz...
De todas formas, para implementar una solución de este estilo, lo principal es crear el algoritmo que a partir de la fecha actual y una serie de valores, aplicando ciertas operaciones, obtenga un valor con el que comparar y así decidir si la copia es legal o no. Algo así (por supuesto que supersimplificado, sólo para que te hagas una idea).

Para probar añádelo a un Form con un CommandButton
Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Sub Command1_Click()
  5.    
  6.     Dim str1 As String, str2 As String
  7.     str1 = InputBox("Introducir fecha instalación", , Now)
  8.     str2 = CamuflarFecha(str1)
  9.    
  10.     MsgBox "Fecha de instalación: " & vbCrLf _
  11.     & str1 & String(2, vbCrLf) & "Camuflada: " & vbCrLf & str2 _
  12.     & String(2, vbCrLf) & "Esta cadena la leerías desde archivo de texto"
  13.        
  14.     MsgBox "Dias que han pasado: " & DateDiff("d", DescubrirFecha(str2), Now)
  15.  
  16. End Sub
  17.  
  18. Private Function CamuflarFecha(ByVal Fecha As Date) As String
  19.  
  20.     Dim bytDia As Byte
  21.     Dim bytMes As Byte
  22.     Dim bytAnho1 As Byte
  23.     Dim bytAnho2 As Byte
  24.    
  25.     bytDia = CByte(Day(Fecha))
  26.     bytMes = CByte(Month(Fecha))
  27.     bytAnho1 = CByte(Left(Year(Fecha), 2))
  28.     bytAnho2 = CByte(Right(Year(Fecha), 2))
  29.    
  30.     Randomize Timer
  31.    
  32.     Dim int1 As Integer, str1 As String
  33.     For int1 = 1 To bytDia + 31
  34.         str1 = str1 & Chr(Rnd * 255)
  35.     Next int1
  36.    
  37.     CamuflarFecha = Chr(bytDia + 61) & str1 & Chr(bytAnho1 + 10)
  38.    
  39.     str1 = ""
  40.     For int1 = 1 To bytDia + 11
  41.         str1 = str1 & Chr(Rnd * 255)
  42.     Next int1
  43.    
  44.     CamuflarFecha = CamuflarFecha & str1 & Chr(bytMes + 13)
  45.    
  46.     str1 = ""
  47.     For int1 = 1 To bytMes + 5
  48.         str1 = str1 & Chr(Rnd * 255)
  49.     Next int1
  50.    
  51.     CamuflarFecha = CamuflarFecha & str1 & Chr(bytAnho2)
  52.    
  53.     For int1 = 1 To bytMes + 3
  54.         CamuflarFecha = CamuflarFecha & Chr(Rnd * 255)
  55.     Next int1
  56.    
  57. End Function
  58.  
  59. Private Function DescubrirFecha(ByVal Clave As String) As Date
  60.    
  61.     Dim bytDia As Byte
  62.     Dim bytMes As Byte
  63.     Dim bytAnho1 As Byte
  64.     Dim bytAnho2 As Byte
  65.            
  66.     bytDia = Asc(Left(Clave, 1)) - 61
  67.     Clave = Mid(Clave, bytDia + 33)
  68.     bytAnho1 = Asc(Left(Clave, 1)) - 10
  69.     Clave = Mid(Clave, bytDia + 13)
  70.     bytMes = Asc(Left(Clave, 1)) - 13
  71.     Clave = Mid(Clave, bytMes + 7)
  72.     bytAnho2 = Asc(Left(Clave, 1))
  73.  
  74.     DescubrirFecha = String(2 - Len(CStr(bytDia)), "0") & bytDia _
  75.     & "/" & String(2 - Len(CStr(bytMes)), "0") & bytMes _
  76.     & "/" & String(2 - Len(CStr(bytAnho1)), "0") & bytAnho1 _
  77.     & String(2 - Len(CStr(bytAnho2)), "0") & bytAnho2
  78.    
  79. End Function
  80.  
  81.  

Suerte.

400
Visual Basic 6.0 e inferiores / Re: Usercontrol
« en: Jueves 22 de Abril de 2004, 17:52 »
Hola Giomar.

La propiedad predeterminada de un objeto es aquella que se invoca por defecto cuando se omite un miembre de ese objeto. Para explicarme mejor: la propiedad predeterminada de un TextBox es Text, de hecho, cuando haces 'miVariable = Text1' es lo mismo que si haces 'miVariable = Text1.Text'.  Otro ejemplo: la propiedad 'Value' de un recordset.

Abur.

Páginas: 1 ... 14 15 [16] 17 18 ... 43