manipulacion de BD

23/09/2006 - 01:12 por SantiRv | Informe spam
Dirijo mi inquietud nuevamente a ustedes puesto que en anteriores
ocasiones he recibido su valiosa ayuda.

Partimos que se trabaja en un libro en la cual una de sus hojas
("clientes") es utilizada como base de datos conteniendo los sig campos
-id (codigo)
-nombre
-direccion
-localidad
-caracteristica
-telefono
-email

Lo que pretendo es que mediante un formulario vba yo seleccione desde
un "combobox" (el cual me captura de la mencionada bd el nombre del
cliente) y me muestre en tantos textbox o labels (tantos como campos
existen en la tabla) los datos de ella.
Una vez hecho ello, el enfoque esta en elaborar 2 macros

1) me permita modificar los datos desde el formulario
2) me elimine por completo la fila del cliente que he selecionado


Espero la explicaion les haya sido util, y si quieren me pasan su mail
para amndarles el archivo para que les resulte mas facil aun la
explicaion

gracias

Preguntas similare

Leer las respuestas

#6 SantiRv
27/09/2006 - 18:11 | Informe spam
ivan, te comento que he probado el codigo que me has facilitado pero no
da pie con bola (en Argentina, no funciona jajajaj)
Podrias hecharle una revisadita para chequera que todo funcione ok.
Si quieres te puedo pasar el archivo para que verifiques desde tu
ordenador (sin compromiso por supuesto)
Gracias
Respuesta Responder a este mensaje
#7 Ivan
27/09/2006 - 22:42 | Informe spam
Hola Santi

a mi me funciona perfectamente, al menos el codigo del ultimo mensaje.

Mi excel es en español y mi configuracion de separadores es la coma.

Si este no es el problema, si quieres, prueba desde el principio e
inserta todos los controles nuevos en un nuevo form (sin cambiar su
nombre). Tambien se daba por hecho que se debia seleccionar una entrada
"existente" en el combo, y que los titulos estan en la fila 1 y los
datos empiezan en la 2..

De todas formas prueba con estos cambios:

Option Explicit
Dim Fila As Long

Private Sub ComboBox1_Change()
Dim Col As Byte, Ltr As String
With ComboBox1
If .ListIndex = -1 Then Exit Sub
Fila = .ListIndex + 2
End With
For Col = 1 To 7
Ltr = Chr(64 + Col)
Me.Controls("TextBox" & Col) = Worksheets("Hoja1") _
.Range(Ltr & Fila).Value
Next
End Sub

Private Sub CommandButton1_Click()
Dim Col As Byte, Ltr As String
With ComboBox1
If .MatchFound = False or .ListIndex = -1 Then
MsgBox ("La entrada no coincide o esta vacia")
' AQUI tu decides lo que haces (borrar el combo, pej, o)
Exit Sub
End If
End With
For Col = 1 To 7
Ltr = Chr(64 + Col)
Worksheets("Hoja1").Range(Ltr & Fila) _
.Value = Me.Controls("TextBox" & Col)
Next
With ComboBox1
.Clear
.List = Worksheets("Hoja1").Range("a2:b" & _
Worksheets("Hoja1").Range("a65536") _
.End(xlUp).Row).Value
.ListIndex = Fila - 2
End With
End Sub

Private Sub CommandButton2_Click()
Dim nTxt As Byte
With ComboBox1
If .MatchFound = False or .ListIndex = -1 Then
MsgBox ("La entrada no coincide o esta vacia")
' AQUI tu decides lo que haces (borrar el combo, pej, o)
Exit Sub
End If
End With
With Worksheets("Hoja1")
.Range("a" & Fila).EntireRow.Delete
ComboBox1.Clear
ComboBox1.List = .Range("a2:b" & _
.[a65536].End(xlUp).Row).Value
End With
For nTxt = 1 To 7
Me.Controls("TextBox" & nTxt).Text = ""
Next
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
With Worksheets("Hoja1")
If .Range("a2") <> "" Then _
ComboBox1.List = .Range("a2:b" & _
.[a65536].End(xlUp).Row).Value
End With
CommandButton1.Caption = "Actualizar"
CommandButton2.Caption = "Eliminar"
CommandButton3.Caption = "Cancelar"
End Sub

Estoy suponiendo que lo que quieres que se vea en el combo es solo el
campo nombre, y que para realizar cualquier accion primero has de
seleccionar algo en el combo. (no introducir nuevos registros)

De todas formas hay otras cuantas cosas que podrias hacer (deshabilitar
botones, bloquear el campo clave para que no lo puedan cambiar-o
ponerlo en un label-, ) y que supongo tienes en cuenta. Esto solo
responde a tu consulta tal cual esta realizada, y espero te sirva de
base para conseguir tus objetivos.

Tambien te aviso que no soy ningun experto y que seguramente existen
formas mucho mejores de hacer lo que buscas. Pero funciona.

prueba y me dices donde da el problema si sigue habiendolo

un saludo
Ivan
Respuesta Responder a este mensaje
#8 Ivan
27/09/2006 - 23:11 | Informe spam
disculpa, Santi, si no me repito no seria yo

cambia en initialice->

-> ComboBox1.List = .Range("a2:b" & _
.[a65536].End(xlUp).Row).Value

por->

-> ComboBox1.List = .Range("b2:b" & _
.[a65536].End(xlUp).Row).Value

y si en la lista tienes valores numericos y quieres que te los siga
considerando como tales tras modificar un registro, cambia en el codigo
del boton 1 ->

-> Worksheets("Hoja1").Range(Ltr & Fila) _
.Value = Me.Controls("TextBox" & Col)

por ->

With Worksheets("Hoja1").Range(Ltr & Fila)
.Value = Me.Controls("TextBox" & Col)
If IsNumeric(.Value) Then .Value = Val(.Value)
End With

ya si que me esperoa tu respuesta

un saludo
ivan

PD: Y ojo con los posibles saltos de linea
Respuesta Responder a este mensaje
#9 SantiRv
28/09/2006 - 05:54 | Informe spam
Ivan, te comento que este codigo anda espectacular y me es de mucha
utilidad asi que te agradesco tu ayuda.

Lo unico que faltaria, y es a modo de facilitar el trabaja para el
usuario, es que el combobox se llene con datos de la columna b (la de
nombres) y no con la columna a( la de codigos) pues resulta a veces
complejo acordarse los codigos para eliminar

un abrazo grande desde Rio Cuarto, Cordoba, ARgnetina

Santiago

p/d: nuevamente agradezco tu ayuda
Respuesta Responder a este mensaje
#10 SantiRv
28/09/2006 - 05:57 | Informe spam
ya he solucionado el problema leyendo tus mensajes

Gracias
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida