|  | | 
	
		 
			
		
		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 
						
						« 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 
						
						« 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í: Dim lsFichero As StringDim lsTexto As String    lsTexto = Text3.Text    CommonDialog1.CancelError = False    CommonDialog1.DialogTitle = "guardar archivo como"    CommonDialog1.Filter = "Archivos de texto (*.txt) |*.txt|"    CommonDialog1.InitDir = lsTexto     CommonDialog1.FileName = ""    CommonDialog1.ShowSave        lsFichero = CommonDialog1.FileName    If Trim(lsFichero) <> "" Then        Open lsFichero For Output As #1            Print #1, lsTexto         Close #1        MsgBox "Fichero guardado"    End If 
Saludos,
					 
			
				
				
					53 
						
						« en: Lunes 19 de Diciembre de 2005, 10:52 »
					 
					Dim lnI As LongDim lsTexto As StringDim lnPos As Long    For lnI = 1 To Len(lsCadenaDeTexto)        If lnI + 8 > Len(lsCadenaDeTexto) Then            lnPos = Len(lsCadenaDeTexto) - lnI + 1        Else            lnPos = 8        End If                lsTexto = Mid(lsCadenaDeTexto, lnI, lnPos)        'Hacer lo que sea con esa cadena        lnI = lnI + 7    Next lnI 
Saludos,
					 
			
				
				
					54 
						
						« 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: Dim lnI As LongDim lnTotalFilas As LongDim lnC As LongDim lnTotalColumnas As LongDim lsValor As String     lnTotalColumnas = 87 'Ascii de Columna W    lnTotalFilas = 88     For lnC = 66 To lnTotalColumnas 'Desde la columna A hasta la columna W        For lnI = 1 To lnTotalFilas 'Desde la fila 1 hasta la fila 88            Range(Chr(lnC) & CStr(lnI) & ":" & Chr(lnC) & CStr(lnI)).Select            lsValor = ActiveCell.FormulaR1C1            If Trim(lsValor) <> "" Then                'Llamar a una funcion que te cree el usuario y demás pasandole el valor que has recogigo            End If        Next    Next 
PD: Este ejemplo está para sólo una celda, adaptalo para leer nombre y apellidos. Saludos,
					 
			
				
				
					55 
						
						« en: Miércoles  7 de Diciembre de 2005, 16:18 »
					 
					Pon la propiedad Style del combo a Dropdown List.
 Saludos,
 
			
				
				
					56 
						
						« 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). Public Function mfbCadenaAleatoria(lnLongitud As Long) As StringDim lnNumSimbolos As LongDim laSimbolos    laSimbolos = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", _    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", _    "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", _    "U", "V", "W", "X", "Y", "Z", _    "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", _    "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", _    "u", "v", "w", "x", "y", "z")        lnNumSimbolos = UBound(laSimbolos) + 1    Randomize    Do While Len(mfbCadenaAleatoria) < lnLongitud        mfbCadenaAleatoria = mfbCadenaAleatoria & laSimbolos(Int(lnNumSimbolos * Rnd()))    Loop    End Function 
PD: Podrías poner el código para crear los usuarios? Gracias. Saludos
					 
			
				
				
					57 
						
						« 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 Private Sub Form_KeyPress(KeyAscii As Integer)    If KeyAscii = vbKeyReturn Then        KeyAscii = 0        MsgBox "Aquí la acción que quieras"    End IfEnd Sub 
Si quieres que al dar el intro en una caja en concreto pase algo, lo más rápido es: Private Sub text1_KeyPress(KeyAscii As Integer)    If KeyAscii = vbKeyReturn Then        KeyAscii = 0        MsgBox "Aquí la acción que quieras"    End IfEnd Sub 
Saludos,
					 
			
				
				
					58 
						
						« 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 
						
						« en: Viernes 25 de Noviembre de 2005, 09:17 »
					 
					Otra posibilidad: Private Property Get mpbObligatorios() As Boolean    mpbObligatorios = Trim(txtTexto(0).Text) <> "" And Trim(txtTexto(1).Text) <> "" ' and... y asi cn todas las cajas de texto obligatoriasEnd Property Private Sub txtTexto_Change(Index As Integer) ' En la propiedad Change (o Lostfocus, da igual), de la/s caja/s de texto    cmdAceptar.Enabled = mpbObligatorios 'cmdAceptar sería el boton que grabaEnd Sub 
Saludos,
					 
			
				
				
					60 
						
						« 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 
						
						« 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 
						
						« en: Viernes 21 de Octubre de 2005, 10:47 »
					 
					* goBD sería la conexión a la base de datosPrivate Sub msNombreTablas()Dim loRS As RecordsetDim lnTotal As LongDim lsTipoTabla As String     On Error GoTo Interrupcion     lnTotal = 0    Set loRS = goBD.OpenSchema(adSchemaTables)    If Not loRS.EOF Then        Do While Not loRS.EOF            lsTipoTabla = IIf(Not IsNull(loRS!TABLE_TYPE), loRS!TABLE_TYPE, "")            If UCase(lsTipoTabla) = "TABLE" Then 'Si no es de sistema                MsgBox IIf(Not IsNull(loRS!TABLE_NAME), loRS!TABLE_NAME, "")                lnTotal = lnTotal + 1            End If            loRS.MoveNext        Loop    End If    If loRS.State = 1 Then loRS.Close    Set loRS = Nothing    MsgBox "Total tablas: " & CStr(lnTotal)    Exit SubInterrupcion:    On Error Resume Next    If loRS.State = 1 Then loRS.Close    Set loRS = Nothing    On Error GoTo 0    MsgBox Err.Description, vbCritical, "Error"End Sub 
Saludos,
					 
			
				
				
					63 
						
						« en: Miércoles 19 de Octubre de 2005, 22:10 »
					 
					Private Sub msNombreTablas()Dim loRS As RecordsetDim lnTotal As Long   lnTotal = 0   Set loRS = goBD.OpenSchema(adSchemaTable)   If Not loRS.EOF Then       Do While Not loRS.EOF           MsgBox IIf(Not IsNull(loRS!TABLE_NAME), loRS!TABLE_NAME, "")           lnTotal=lnTotal+1           loRS.MoveNext       Loop   End If   If loRS.State = 1 Then loRS.Close   Set loRS = Nothing   MsgBox "Total tablas: " & CStr(lnTotal)   Exit SubInterrupcion:   On Error Resume Next   If loRS.State = 1 Then loRS.Close   Set loRS = Nothing   On Error GoTo 0   MsgBox Err.Description, vbCritical, "Error"End Sub 
Saludos,
					 
			
				
				
					64 
						
						« en: Miércoles 19 de Octubre de 2005, 09:10 »
					 
					Para meter los datos en el Combo sería (siguiendo con tu código): ComboBox.ClearWhile Not rs.OEF    ComboBox.AddItem IIf(Not IsNull(rs!NombreCampo), rs!NombreCampo, "")    rs.MoveNextWendrs.CloseSet rs = Nothing 
Saludos,
					 
			
				
				
					65 
						
						« en: Miércoles 19 de Octubre de 2005, 09:02 »
					 
					* GoBD sería la conexión a la base de datosPrivate Sub msNombreCampos()Dim loRS As Recordset    Set loRS = goBD.OpenSchema(adSchemaColumns)    loRS.Find "TABLE_NAME='NombreTabla'"    If Not loRS.EOF Then        Do While Not loRS.EOF            If Trim(loRS!TABLE_NAME) = "NombreTabla" Then                MsgBox IIf(Not IsNull(loRS!COLUMN_NAME), loRS!COLUMN_NAME, "")            Else                Exit Do            End If            loRS.MoveNext        Loop    Else        MsgBox "No existe"    End If    If loRS.State = 1 Then loRS.Close    Set loRS = Nothing    Exit SubInterrupcion:    On Error Resume Next    If loRS.State = 1 Then loRS.Close    Set loRS = Nothing    On Error GoTo 0    MsgBox Err.Description, vbCritical, "Error"End Sub 
Saludos,
					 
			
				
				
					66 
						
						« en: Martes 13 de Septiembre de 2005, 21:20 »
					 
			
				
				
					67 
						
						« 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: 'Función que devuelve si ya ha metido una coma en el textPrivate Function mfbYaHayUnaComa() As Boolean    mfbYaHayUnaComa = IIf(InStr(1, Text1.Text, ",") = 0, False, True)End Function 'Evento que controla todo lo que se mete en el textoPrivate Sub Text1_KeyPress(KeyAscii As Integer)    If Chr(KeyAscii) = "." Then KeyAscii = Asc(",")        If KeyAscii <> vbKeyBack Then        If Len(Text1.Text) > 0 Then            If KeyAscii <> Asc(",") Then                If Not IsNumeric(Chr(KeyAscii)) Then                    KeyAscii = 0                    Beep                End If            ElseIf mfbYaHayUnaComa Then                KeyAscii = 0                Beep            End If        Else            If Not IsNumeric(Chr(KeyAscii)) Then                KeyAscii = 0                Beep            End If        End If    End IfEnd Sub 'Cuando pierdo el foco formateo el número introducidoPrivate Sub Text1_LostFocus()    Text1.Text = Format(Text1.Text, "#,###,###,###,###,##0.00")End Sub 
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: Private Sub Form_KeyPress(KeyAscii As Integer)    If KeyAscii = vbKeyReturn Then        KeyAscii = 0        SendKeys "{tab}"    End IfEnd Sub 
Espero que te sirva. PD: He posteado porque veo que el control Masked Edit no te gusta     Saludos,
					 
			
				
				
					68 
						
						« 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 
						
						« en: Domingo 28 de Agosto de 2005, 19:06 »
					 
					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: 'Para cargar el comboPrivate Sub msCargarCombo() Dim lsSQL As StringDim loRS As Recordset     Combo1.Clear    lsSQL = "Select * from Tabla "    Set loRS = goBD.Execute(lsSQL)    While Not loRS.EOF        Combo1.AddItem IIf(Not IsNull(loRS!Descripcion), loRS!Descripcion, "")        Combo1.ItemData(Combo1.NewIndex) = IIf(Not IsNull(loRS!Codigo), loRS!Codigo, 0)        loRS.MoveNext    Wend    loRS.Close    Set loRS = Nothing    End Sub 'Para saber el código del elemento seleccionadoPrivate Sub Combo1_Click()Dim Codigo As Long    If Combo1.ListIndex <> -1 Then        Codigo = Combo1.ItemData(Combo1.ListIndex)        MsgBox "El codigo del campo " & Combo1.Text & " es el " & Codigo    End IfEnd Sub 
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:     Sql = "Select Código_especificación,nombre_prueba From Especificar_calendario_plazos "    Sql = Sql & " Where Código_especificación = " & Cod    rs.Open Sql, cnn1, adOpenStatic    If CLng(rs!Código_especificación) = CLng(Cod) Then        MsgBox " coinciden las codigos", vbInformation        MsgBox Combo1.List(Combo1.ListIndex)        If UCase(Trim(rs!nombre_prueba)) = UCase(Trim(Combo1.Text)) Then            MsgBox " coinciden las pruebas", vbInformation            cnn1.Execute " update Especificar_calendario_plazos set nombre_caso_prueba='" & in_caso_prueba & "' where codigo_especificacion='" & Cod & "'"        Else            MsgBox " No coinciden las pruebas", vbInformation        End If    End If 
Saludos,
					 
			
				
				
					70 
						
						« 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    . Saludos,
					 
			
				
				
					71 
						
						« 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: CodRegistro -> Campo clave de la tablaCodigo_PruebaNombre_Prueba 
Saludos,
					 
			
				
				
					72 
						
						« en: Miércoles 17 de Agosto de 2005, 08:32 »
					 
					Ya te envié eso al correo.
 Saludos,
 
			
				
				
					73 
						
						« 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 
						
						« 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    ) Saludos,
					 
			
				
				
					75 
						
						« 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 
		 | 
 |  |