• Viernes 29 de Marzo de 2024, 15:56

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

Páginas: 1 2 [3] 4 5 ... 9
51
Visual Basic 6.0 e inferiores / Re: Poner Mi Sistema En Red
« en: Viernes 10 de Febrero de 2006, 13:23 »
Muy buenas, yo hago aplicaciones en red y para ello, también hago un sistema de bloqueos. Por si te vale te lo explico:

Tengo una tabla Bloqueos donde guardo:
- Key del registro que está bloqueado
- Código de usuario

Cuando el usuario entra en la aplicación, hago un DELETE de la tabla filtrando por el código de usuario por si el usuario tenía algun registro bloqueado (por ejemplo estaba editando un articulo y se va la luz).

Después, imaginemos que tenemos una tabla que tiene 3 campos, de los cuales id1 e id2 son clave primaria. Entonces mi key sería: clsNombreTabla#CamposClave

clsNombreTabla#id1#id2

Cuando un usuario intenta editar un artículo, miro si está bloqueado ese registro y si no lo está lo bloqueo, en el caso contrario se lo muestro en sólo lectura. Al terminar de editar un artículo desbloqueo el registro.

Espero haberte ayudado.

52
Visual Basic 6.0 e inferiores / Re: Guardar Archivos
« en: Miércoles 21 de Diciembre de 2005, 11:40 »
Te falta la instrucción para guardar el fichero, el commondialog lo único que hace es devolverte la ruta. Quedaría algo así:

Código: Text
  1. Dim lsFichero As String
  2. Dim lsTexto As String
  3.     lsTexto = Text3.Text
  4.     CommonDialog1.CancelError = False
  5.     CommonDialog1.DialogTitle = "guardar archivo como"
  6.     CommonDialog1.Filter = "Archivos de texto (*.txt) |*.txt|"
  7.     CommonDialog1.InitDir = lsTexto
  8.     CommonDialog1.FileName = ""
  9.     CommonDialog1.ShowSave
  10.     
  11.     lsFichero = CommonDialog1.FileName
  12.     If Trim(lsFichero) <> "" Then
  13.         Open lsFichero For Output As #1
  14.             Print #1, lsTexto
  15.         Close #1
  16.         MsgBox "Fichero guardado"
  17.     End If
  18.  

Saludos,

53
Visual Basic 6.0 e inferiores / Re: Como Separar Bloques De Texto
« en: Lunes 19 de Diciembre de 2005, 10:52 »
Código: Text
  1. Dim lnI As Long
  2. Dim lsTexto As String
  3. Dim lnPos As Long
  4.     For lnI = 1 To Len(lsCadenaDeTexto)
  5.         If lnI + 8 > Len(lsCadenaDeTexto) Then
  6.             lnPos = Len(lsCadenaDeTexto) - lnI + 1
  7.         Else
  8.             lnPos = 8
  9.         End If
  10.        
  11.         lsTexto = Mid(lsCadenaDeTexto, lnI, lnPos)
  12.         'Hacer lo que sea con esa cadena
  13.         lnI = lnI + 7
  14.     Next lnI
  15.  

Saludos,

54
VBA / Re: Nombres De Usuario Para Los Usuarios De Cada Celda
« en: Martes 13 de Diciembre de 2005, 11:29 »
Supongo que tendrás un tope de columnas y filas, sólo tienes que recorrerlas y crear el usuario. Por ejemplo:

Código: Text
  1. Dim lnI As Long
  2. Dim lnTotalFilas As Long
  3. Dim lnC As Long
  4. Dim lnTotalColumnas As Long
  5. Dim lsValor As String
  6.  
  7.     lnTotalColumnas = 87 'Ascii de Columna W
  8.     lnTotalFilas = 88
  9.  
  10.     For lnC = 66 To lnTotalColumnas 'Desde la columna A hasta la columna W
  11.         For lnI = 1 To lnTotalFilas 'Desde la fila 1 hasta la fila 88
  12.             Range(Chr(lnC) & CStr(lnI) & ":" & Chr(lnC) & CStr(lnI)).Select
  13.             lsValor = ActiveCell.FormulaR1C1
  14.             If Trim(lsValor) <> "" Then
  15.                 'Llamar a una funcion que te cree el usuario y demás pasandole el valor que has recogigo
  16.             End If
  17.         Next
  18.     Next
  19.  

PD: Este ejemplo está para sólo una celda, adaptalo para leer nombre y apellidos.

Saludos,

55
Visual Basic 6.0 e inferiores / Re: Ayuda Con Combobox!!!!!!!
« en: Miércoles 7 de Diciembre de 2005, 16:18 »
Pon la propiedad Style del combo a Dropdown List.

Saludos,

56
VBA / Re: Vba-->crea Usuarios Y Passwrod En Active Directory
« en: Miércoles 7 de Diciembre de 2005, 11:40 »
Función que le pasas una longitud y te devuelve un string (en este caso le pasarías longitud 8).

Código: Text
  1. Public Function mfbCadenaAleatoria(lnLongitud As Long) As String
  2. Dim lnNumSimbolos As Long
  3. Dim laSimbolos
  4.     laSimbolos = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", _
  5.     "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", _
  6.     "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", _
  7.     "U", "V", "W", "X", "Y", "Z", _
  8.     "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", _
  9.     "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", _
  10.     "u", "v", "w", "x", "y", "z")
  11.     
  12.     lnNumSimbolos = UBound(laSimbolos) + 1
  13.     Randomize
  14.     Do While Len(mfbCadenaAleatoria) < lnLongitud
  15.         mfbCadenaAleatoria = mfbCadenaAleatoria & laSimbolos(Int(lnNumSimbolos * Rnd()))
  16.     Loop
  17.     
  18. End Function
  19.  

PD: Podrías poner el código para crear los usuarios? Gracias.

Saludos

57
Visual Basic para principiantes / Re: Boton Repulsado
« en: Lunes 5 de Diciembre de 2005, 16:34 »
Si quieres que al dar el intro en cualquier caja de texto pase algo, lo más rápido es esto:

- La propiedad KeyPreview del formulario ponla a TRUE.
- El evento
Código: Text
  1. Private Sub Form_KeyPress(KeyAscii As Integer)
  2.     If KeyAscii = vbKeyReturn Then
  3.         KeyAscii = 0
  4.         MsgBox "Aquí la acción que quieras"
  5.     End If
  6. End Sub
  7.  

Si quieres que al dar el intro en una caja en concreto pase algo, lo más rápido es:
Código: Text
  1. Private Sub text1_KeyPress(KeyAscii As Integer)
  2.     If KeyAscii = vbKeyReturn Then
  3.         KeyAscii = 0
  4.         MsgBox "Aquí la acción que quieras"
  5.     End If
  6. End Sub
  7.  

Saludos,

58
Visual Basic 6.0 e inferiores / Re: Hacer Que Un Dll No Se Pueda Crear Instancia
« en: Viernes 25 de Noviembre de 2005, 12:03 »
Se me olvió comentar que si alguien necesita hacer esto que postee que le mando un documento con todo lo que hay que hacer.

Saludos,

59
Visual Basic 6.0 e inferiores / Re: Obligar Que Un Textbox Tenga Datos
« en: Viernes 25 de Noviembre de 2005, 09:17 »
Otra posibilidad:

Código: Text
  1. Private Property Get mpbObligatorios() As Boolean
  2.     mpbObligatorios = Trim(txtTexto(0).Text) <> "" And Trim(txtTexto(1).Text) <> "" ' and... y asi cn todas las cajas de texto obligatorias
  3. End Property
  4.  
  5. Private Sub txtTexto_Change(Index As Integer) ' En la propiedad Change (o Lostfocus, da igual), de la/s caja/s de texto
  6.     cmdAceptar.Enabled = mpbObligatorios 'cmdAceptar sería el boton que graba
  7. End Sub
  8.  


Saludos,

60
Visual Basic 6.0 e inferiores / Re: Hacer Que Un Dll No Se Pueda Crear Instancia
« en: Viernes 25 de Noviembre de 2005, 09:03 »
Buenas Widark, gracias por contestar. Al final creé una librería estilo DLL de windows modificando el linkeador de VB y así consigo que si se referencia la DLL en el proyecto no se vean los métodos y da error al ejecutar el proyecto.

En definitiva, hacer una DLL no ActiveX.

Gracias de todas formas  ;)

61
Visual Basic 6.0 e inferiores / Hacer Que Un Dll No Se Pueda Crear Instancia
« en: Jueves 24 de Noviembre de 2005, 12:04 »
Buenos días, quiero hacer que una dll sólo pueda ser referenciada en mi proyecto. Es decir, hay algunas dll que si les haces referencia en otros proyectos que no sean el suyo dan error al crear el objeto. Yo quiero hacer algo asi, pero no sé cómo se hace.

¿Alquien tiene alguna idea?

Gracias.

62
VBA / Re: Nombres De Campos De Una Bds
« en: Viernes 21 de Octubre de 2005, 10:47 »
Código: Text
  1. Private Sub msNombreTablas()
  2. Dim loRS As Recordset
  3. Dim lnTotal As Long
  4. Dim lsTipoTabla As String
  5.  
  6.     On Error GoTo Interrupcion
  7.  
  8.     lnTotal = 0
  9.     Set loRS = goBD.OpenSchema(adSchemaTables)
  10.     If Not loRS.EOF Then
  11.         Do While Not loRS.EOF
  12.             lsTipoTabla = IIf(Not IsNull(loRS!TABLE_TYPE), loRS!TABLE_TYPE, "")
  13.             If UCase(lsTipoTabla) = "TABLE" Then 'Si no es de sistema
  14.                 MsgBox IIf(Not IsNull(loRS!TABLE_NAME), loRS!TABLE_NAME, "")
  15.                 lnTotal = lnTotal + 1
  16.             End If
  17.             loRS.MoveNext
  18.         Loop
  19.     End If
  20.     If loRS.State = 1 Then loRS.Close
  21.     Set loRS = Nothing
  22.     MsgBox "Total tablas: " & CStr(lnTotal)
  23.     Exit Sub
  24. Interrupcion:
  25.     On Error Resume Next
  26.     If loRS.State = 1 Then loRS.Close
  27.     Set loRS = Nothing
  28.     On Error GoTo 0
  29.     MsgBox Err.Description, vbCritical, "Error"
  30. End Sub
  31.  

* goBD sería la conexión a la base de datos

Saludos,

63
VBA / Re: Nombres De Campos De Una Bds
« en: Miércoles 19 de Octubre de 2005, 22:10 »
Código: Text
  1. Private Sub msNombreTablas()
  2. Dim loRS As Recordset
  3. Dim lnTotal As Long
  4.    lnTotal = 0
  5.    Set loRS = goBD.OpenSchema(adSchemaTable)
  6.    If Not loRS.EOF Then
  7.        Do While Not loRS.EOF
  8.            MsgBox IIf(Not IsNull(loRS!TABLE_NAME), loRS!TABLE_NAME, "")
  9.            lnTotal=lnTotal+1
  10.            loRS.MoveNext
  11.        Loop
  12.    End If
  13.    If loRS.State = 1 Then loRS.Close
  14.    Set loRS = Nothing
  15.    MsgBox "Total tablas: " & CStr(lnTotal)
  16.    Exit Sub
  17. Interrupcion:
  18.    On Error Resume Next
  19.    If loRS.State = 1 Then loRS.Close
  20.    Set loRS = Nothing
  21.    On Error GoTo 0
  22.    MsgBox Err.Description, vbCritical, "Error"
  23. End Sub
  24.  

Saludos,

64
VBA / Re: Combobox Y Access
« en: Miércoles 19 de Octubre de 2005, 09:10 »
Para meter los datos en el Combo sería (siguiendo con tu código):

Código: Text
  1. ComboBox.Clear
  2. While Not rs.OEF
  3.     ComboBox.AddItem IIf(Not IsNull(rs!NombreCampo), rs!NombreCampo, "")
  4.     rs.MoveNext
  5. Wend
  6. rs.Close
  7. Set rs = Nothing
  8.  

Saludos,

65
VBA / Re: Nombres De Campos De Una Bds
« en: Miércoles 19 de Octubre de 2005, 09:02 »
Código: Text
  1. Private Sub msNombreCampos()
  2. Dim loRS As Recordset
  3.     Set loRS = goBD.OpenSchema(adSchemaColumns)
  4.     loRS.Find "TABLE_NAME='NombreTabla'"
  5.     If Not loRS.EOF Then
  6.         Do While Not loRS.EOF
  7.             If Trim(loRS!TABLE_NAME) = "NombreTabla" Then
  8.                 MsgBox IIf(Not IsNull(loRS!COLUMN_NAME), loRS!COLUMN_NAME, "")
  9.             Else
  10.                 Exit Do
  11.             End If
  12.             loRS.MoveNext
  13.         Loop
  14.     Else
  15.         MsgBox "No existe"
  16.     End If
  17.     If loRS.State = 1 Then loRS.Close
  18.     Set loRS = Nothing
  19.     Exit Sub
  20. Interrupcion:
  21.     On Error Resume Next
  22.     If loRS.State = 1 Then loRS.Close
  23.     Set loRS = Nothing
  24.     On Error GoTo 0
  25.     MsgBox Err.Description, vbCritical, "Error"
  26. End Sub
  27.  

* GoBD sería la conexión a la base de datos

Saludos,

66
VBA / Re: Urgente: Poner Aplicación A 0!!
« en: Martes 13 de Septiembre de 2005, 21:20 »
Código: Text
  1. Set RecordSet = Nothing
  2.  

Saludos,

67
VBA / Re: Txt En Euros!
« en: Viernes 9 de Septiembre de 2005, 09:28 »
Hola sndr82, podrías limitar la introducción de ciertos caracteres desde el evento KeyPress del txt y después formatear ese número en el LostFocus.

Ejemplo:

Código: Text
  1. 'Función que devuelve si ya ha metido una coma en el text
  2. Private Function mfbYaHayUnaComa() As Boolean
  3.     mfbYaHayUnaComa = IIf(InStr(1, Text1.Text, ",") = 0, False, True)
  4. End Function
  5.  
  6. 'Evento que controla todo lo que se mete en el texto
  7. Private Sub Text1_KeyPress(KeyAscii As Integer)
  8.     If Chr(KeyAscii) = "." Then KeyAscii = Asc(",")
  9.     
  10.     If KeyAscii <> vbKeyBack Then
  11.         If Len(Text1.Text) > 0 Then
  12.             If KeyAscii <> Asc(",") Then
  13.                 If Not IsNumeric(Chr(KeyAscii)) Then
  14.                     KeyAscii = 0
  15.                     Beep
  16.                 End If
  17.             ElseIf mfbYaHayUnaComa Then
  18.                 KeyAscii = 0
  19.                 Beep
  20.             End If
  21.         Else
  22.             If Not IsNumeric(Chr(KeyAscii)) Then
  23.                 KeyAscii = 0
  24.                 Beep
  25.             End If
  26.         End If
  27.     End If
  28. End Sub
  29.  
  30. 'Cuando pierdo el foco formateo el número introducido
  31. Private Sub Text1_LostFocus()
  32.     Text1.Text = Format(Text1.Text, "#,###,###,###,###,##0.00")
  33. End Sub
  34.  

Y ya si quieres que al pulsar el INTRO se pierda el foco del control, o bien lo controlas en el objeto txt o bien en las propiedades del formulario le pones la propiedad KeyPreview a TRUE y pones esto:

Código: Text
  1. Private Sub Form_KeyPress(KeyAscii As Integer)
  2.     If KeyAscii = vbKeyReturn Then
  3.         KeyAscii = 0
  4.         SendKeys "{tab}"
  5.     End If
  6. End Sub
  7.  

Espero que te sirva.

PD: He posteado porque veo que el control Masked Edit no te gusta  :P

Saludos,

68
Visual Basic 6.0 e inferiores / Re: Parte De Codigo Fuente Volverlo Dll
« en: Viernes 9 de Septiembre de 2005, 09:00 »
Buenas, si es posible, luego le agregas la referencia a esa dll a tu proyecto y ya está.

Para crear una dll, creas un proyecto tipo "dll ActiveX" y ya tienes tu dll.

Yo utilizo dll principalmente para acceso a datos, y lo que hago es crear un grupo de proyectos en vb, es decir, en el grupo tengo el proyecto "dll ActiveX" y el proyecto EXE normal con referencias a la dll y listo.

Saludos,

69
Buenas Magraciel, me he leido 3 veces tu mensaje y no sé si lo entendí bien.

Lo que yo he entendido:

Tienes una tabla con 3 campos y tienes un formulario para ingresar registros en ella. Tienes un combo donde eliges un campo descriptivo pero que en la INSERT debe ir el código de éste (el campo descriptivo seleccionado)

Deducción a lo que yo he entendido:
En vez de cargar el combo con el campo descripción y después  buscar su código en BD, carga el combo guardándote el campo código junto con la descripción (en este caso el campo que se va a mostrar, sin que vea el usuario el campo código claro está)

Ejemplo:

Código: Text
  1. 'Para cargar el combo
  2. Private Sub msCargarCombo()
  3.  
  4. Dim lsSQL As String
  5. Dim loRS As Recordset
  6.  
  7.     Combo1.Clear
  8.     lsSQL = "Select * from Tabla "
  9.     Set loRS = goBD.Execute(lsSQL)
  10.     While Not loRS.EOF
  11.         Combo1.AddItem IIf(Not IsNull(loRS!Descripcion), loRS!Descripcion, "")
  12.         Combo1.ItemData(Combo1.NewIndex) = IIf(Not IsNull(loRS!Codigo), loRS!Codigo, 0)
  13.         loRS.MoveNext
  14.     Wend
  15.     loRS.Close
  16.     Set loRS = Nothing
  17.     
  18. End Sub
  19.  
  20. 'Para saber el código del elemento seleccionado
  21. Private Sub Combo1_Click()
  22. Dim Codigo As Long
  23.     If Combo1.ListIndex <> -1 Then
  24.         Codigo = Combo1.ItemData(Combo1.ListIndex)
  25.         MsgBox "El codigo del campo " & Combo1.Text & " es el " & Codigo
  26.     End If
  27. End Sub
  28.  

Espero no haberme equivocado y que esto de sirva de algo.

PD: Este código sólo sirve si el campo clave y/o código del elemento a cargar es de tipo numérico.

O bien se solucionaría utilizando tu código pero formateando los strings para evitar la comparación de minúsculas y mayúsculas:
Código: Text
  1.     Sql = "Select Código_especificación,nombre_prueba From Especificar_calendario_plazos "
  2.     Sql = Sql & " Where Código_especificación = " & Cod
  3.     rs.Open Sql, cnn1, adOpenStatic
  4.     If CLng(rs!Código_especificación) = CLng(Cod) Then
  5.         MsgBox " coinciden las codigos", vbInformation
  6.         MsgBox Combo1.List(Combo1.ListIndex)
  7.         If UCase(Trim(rs!nombre_prueba)) = UCase(Trim(Combo1.Text)) Then
  8.             MsgBox " coinciden las pruebas", vbInformation
  9.             cnn1.Execute " update Especificar_calendario_plazos set nombre_caso_prueba='" & in_caso_prueba & "' where codigo_especificacion='" & Cod & "'"
  10.         Else
  11.             MsgBox " No coinciden las pruebas", vbInformation
  12.         End If
  13.     End If
  14.  

Saludos,

70
La taberna del BIT / Re: Fotos de Usuarios del Foro
« en: Sábado 20 de Agosto de 2005, 12:33 »
Hola Kev, disculpa pero no me he pasado por aquí desde hace mucho.
Mi MSN es : erikapg_18@hotmail.com

Y el significado de mi avatar... te lo diré por el MSN si tanta intriga te da  :P.

Saludos,

71
Visual Basic 6.0 e inferiores / Re: Insertar Informacionen Tabla Sin Reescribir L
« en: Viernes 19 de Agosto de 2005, 08:40 »
El problema está en que tienes como campo clave el codigo_prueba (el código de usuario) y al intentar hacer INSERT con el mismo codigo_prueba pues se actualiza (ya que ese es el código que identifica ese registro).

Para evitarlo yo pondría los siguientes campos:
Código: Text
  1. CodRegistro -> Campo clave de la tabla
  2. Codigo_Prueba
  3. Nombre_Prueba
  4.  

Saludos,

72
Visual Basic 6.0 e inferiores / Re: Ejecucion De Sqlscript
« en: Miércoles 17 de Agosto de 2005, 08:32 »
Ya te envié eso al correo.

Saludos,

73
Visual Basic 6.0 e inferiores / Re: Ejecucion De Sqlscript
« en: Martes 16 de Agosto de 2005, 10:21 »
Hola jodido5, en vez de ejecutar un script... ¿por qué no haces un backup de la BD vacía y en tu instalador, la restauras por código? Yo lo hago así y no tengo ningún problema.

Si necesitas el código para restaurar una base de datos por VB te lo doy sin problemas. Espero que este consejo te sirva de algo.

Saludos,

74
Visual Basic 6.0 e inferiores / Re: Dominio O Grupo De Trabajo
« en: Martes 16 de Agosto de 2005, 10:16 »
Si, no he conseguido sacar el nombre del grupo de trabajo, y como no encuentro documentación en Internet para sacarlo me conformo con que si existe un dominio que me ponga el nombre del dominio ya que casi todos los usuarios que utilizarán la aplicación pertenecerán a un dominio.

Si encuentro algo para que me saque el grupo de trabajo te lo haré saber (y viceversa  :lol:)

Saludos,

75
VBA / Re: Combobox "editable"
« en: Miércoles 10 de Agosto de 2005, 14:58 »
Pon la propiedad Style del combo a Dropdown List y él ya se encarga de cuando metas una letra ir al primero que encuentre que empieze por ella, además con esa propiedad el combo no es "editable" por el usuario.

Saludos,

Páginas: 1 2 [3] 4 5 ... 9