border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

Cuenta Bancaria en EEUU
  #1 (permalink)  
Antiguo 24-09-2006, 15:27:58
Gran Participación en el Foro
 
Registrado: ene 2004
Posts: 192
jhanluigui Valoración +2
Contactar con jhanluigui a través de MSN Contactar con jhanluigui a través de Yahoo
Predeterminado Comparar Campos

Hola Necesito Compara campos:
El problema es el Siguiente tengo que mostrar una lista de los campos modificados no importa si es un acento
o talvez un error ortografico, lo que me tiene que salir es una lista de los registros cambiados

Esto lo puedo hacer desde la aplicacion o en la base de datos

Lo que estaba haciendo es guardar en dos Textbox el campo uno que se puede ver y otro invisible,
luego cuando el usuario guardaba el registro hacia la comparacion de los textbox para ver si fue
modificado
pero la verdad creo que esta mal mi comparacion
pues la hago letra a letra y tarda mucho
uso funciones Mid y Len

quisiera saber si hay una forma de comparar los campos que sea rapida y eficiente



Gracias
Responder Con Cita
  #2 (permalink)  
Antiguo 24-09-2006, 17:36:44
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.431
J.M.Movilla Valoración +2
Predeterminado

Probablemente no entienda yo lo que estás proponiendo, porque me parece increíble que no hayas probado con el método más simple de las comparaciones:

Código:
If TextBox1 <> TextBox2 Then MsgBox "Se hizo cambio"
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
  #3 (permalink)  
Antiguo 25-09-2006, 22:30:44
Gran Participación en el Foro
 
Registrado: ene 2004
Posts: 192
jhanluigui Valoración +2
Contactar con jhanluigui a través de MSN Contactar con jhanluigui a través de Yahoo
Predeterminado Gracias

La verdad eso es lo que hago pero me parece que es muy simple
o talvez no tan rapido
Y la pregunta es si eso que estoy haciendo o que pusiste en el foro esta bien
para hacer una comparacion
o es que hay algun otro metodo mas eficiente



gracias nueva mente
Responder Con Cita
  #4 (permalink)  
Antiguo 25-09-2006, 22:56:55
Avatar de juancarlosavalos
Gran Participación en el Foro
 
Registrado: jul 2005
Ubicación: Libertad / Merlo prov Buenos Aires
Posts: 206
juancarlosavalos Valoración +2
Predeterminado Re: Gracias

Si tan solo deseas saber si ha cambiado o no una cadena, no hay método más directo y que consuma menos recursos que la comparación (que es lo que te indica el Sr Movilla). Podría ser más rápido si al texto original lo guardas en una variable y no en un textbox invisible.
Responder Con Cita
  #5 (permalink)  
Antiguo 26-09-2006, 06:04:36
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.271
acalanto ha deshabilitado la reputación
Predeterminado

Apoyando las indicaciones y consejos de Movilla y Juan Carlos, te diré que ncluso no sería necesario ni el control invisible ni variables para almacenar el contenido original, pero si una mínima comparación para analizar si algo ha cambiado o no.

Los controles TextBox tienen un evento CHANGE que se dispara cuando el usuario hace la más mínima modificación y una propiedad TAG que casi nunca se utiliza y en la que se puede almacenar información. En este evento puedes poner el código necesario para controlar los campos que han sufrido alguna modificación. Lo mejor es que implementes un array de textbox para facilitar las tareas de verificación.

Fíjate en estas dos variantes de lo que estoy exponiendo:


VARIANTE A

Option Explicit



Código:
Private Sub Form_Load()
    On Local Error Resume Next
    cargadatos
End Sub
Private Sub Form_Unload(Cancel As Integer)
    On Local Error Resume Next
    actualizadatos
End Sub
Private Sub Text1_Change(Index As Integer)
    On Local Error Resume Next
    Me.Text1(Index).Tag = "1"
    Me.Text1(Index).FontBold = True
End Sub
Private Sub Text1_GotFocus(Index As Integer)
    On Local Error Resume Next
    Me.Text1(Index).SelStart = 0
    Me.Text1(Index).SelLength = Len(Me.Text1(Index).Text)
End Sub
Private Sub Text1_LostFocus(Index As Integer)
    On Local Error Resume Next
    Me.Text1(Index).SelStart = 0
    Me.Text1(Index).SelLength = 0
End Sub
Private Sub cmdActualiza_Click()
    On Local Error Resume Next
    'Pulsado botón de actualizar
    actualizadatos
    cargadatos
End Sub
Private Sub cargadatos()
    On Local Error Resume Next
    Dim i As Integer
    For i = 0 To 3
        Me.Text1(i).Text = "Texto_" + CStr(i)
        Me.Text1(i).Tag = "0"
        Me.Text1(i).FontBold = False
        Me.Text1(i).TabIndex = i
        Me.Text1(i).TabStop = True
    Next i
    Me.Text1(0).SetFocus
    Me.Refresh
End Sub
Private Sub actualizadatos()
    On Local Error Resume Next
    Dim i As Integer
    For i = 0 To 3
        If Me.Text1(i).Tag = "1" Then
            'Aquí el código que trata los modificados
            MsgBox "El campo " + CStr(i) + ", ha sido modificado."
        End If
    Next i
End Sub


VARIANTE B (SOLO PROCEDIMIENTOS DIFERENTES AL ANTERIOR)

Código:
Private Sub Text1_Change(Index As Integer)
    On Local Error Resume Next
    Me.Text1(Index).FontBold = True
End Sub
Private Sub Text1_LostFocus(Index As Integer)
    On Local Error Resume Next
    'No se permite campo vacio. Restauramos el original
    If Me.Text1(Index).Text = "" Then
        Me.Text1(Index).Text = Me.Text1(Index).Tag
        Me.Text1(Index).FontBold = False
    ElseIf Me.Text1(Index).Text = Me.Text1(Index).Tag Then
        Me.Text1(Index).FontBold = False
    End If
    Me.Text1(Index).SelStart = 0
    Me.Text1(Index).SelLength = 0
End Sub
Private Sub cargadatos()
    On Local Error Resume Next
    Dim i As Integer
    For i = 0 To 3
        Me.Text1(i).Text = "Texto_" + CStr(i)
        Me.Text1(i).Tag = Me.Text1(i).Text
        Me.Text1(i).FontBold = False
        Me.Text1(i).TabIndex = i
        Me.Text1(i).TabStop = True
    Next i
    Me.Text1(0).SetFocus
    Me.Refresh
End Sub
Private Sub actualizadatos()
    On Local Error Resume Next
    Dim i As Integer
    For i = 0 To 3
        If Me.Text1(i).Tag <> Me.Text1(i).Text Then
            'Aquí el código que trata los modificados
            MsgBox "El campo " + CStr(i) + ", ha sido modificado."
        End If
    Next i
End Sub

Observa que la variante A controla los campos que han sufrido alguna modificación verificando si la propiedad TAGA tiene un '0' (No varía) o un '1', ha sido modificado. Esto sucede siempre que el usuario pulse cualquier tecla o símbolo representativo; La desventaja es que quedará como modificado aunque el usuario restaure el valor origen (Por ejemplo borra una 'A' y acto seguido la vuelve a poner en la isma posición.

La segunda, quizás, es más elegante y sólo tratará como modificados aquellos controles en los que el texto sea diferente al original. Observa la ventaja de que también es capaz de restaurar el contenido original ante un error de pulsación del usuario.

Lógicamente, esta estructura de código se puede ampliar y mejorar para cubrir todas las necesidades de cada aplicación.

Espero que te resulte útil
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #6 (permalink)  
Antiguo 29-09-2006, 04:20:56
Gran Participación en el Foro
 
Registrado: ene 2004
Posts: 192
jhanluigui Valoración +2
Contactar con jhanluigui a través de MSN Contactar con jhanluigui a través de Yahoo
Predeterminado Gracias

Gracias la verdad me ayudaron bastante
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
comparar fotos luiscarloscn Visual Basic 6.00 5 28-09-2007 10:44:22
Comparar fechas lindochico Visual Basic 6.00 2 12-03-2005 16:56:39
comparar fechas alfonsoestampida Visual Basic 6.00 3 17-02-2005 12:03:17
comparar dos vectores guidormar VBA (Excel, Word, Outlook, Access) 2 17-09-2004 01:00:00
Comparar fechas imported_chiaravel Visual Basic 6.00 14 30-11-2003 00:00:00


La franja horaria es GMT. Ahora son las 02:54:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right