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
 

Leer las respuestas

#1 Ivan
23/09/2006 - 02:55 | Informe spam
Hola Santi

Yo hago algo parecido a esto:

suponiendo que:

a.- los titulos de campo/columna son exactamente los que expones, y
estan situados como los expones

b.- a los nombres de los textbox (si quieres editarlos creo que no te
valen los Labels) les antepones (pej:) txt al nombre del campo
correspondiente(yo lo hago asi para aclararme en el codigo), es decir,
al campo 'Nombre' le corresponde el textbox 'txtNombre', a 'Direccion'
el 'txtDireccion', etc

c.- el combobox (llamemosle cmbClientes) contiene todos los registros
de la hoja, no solo los unicos

d.- la hoja con la lista se llama pej: "Lista Clientes"

Al principio del modulo del formulario declaras :->

Dim Fila as Long

1.-Para llenar los TextBox->

Private Sub cmbClientes_Change()
Dim Col as Byte
For Col = 1 to 7
With cmbClientes
If .ListIndex < 0 Then Exit Sub
Fila = .ListIndex + 2
With WorkSheets("Lista Clientes")
Me.Controls("txt" & .Range("a1")(1,Col).Value).Text = _
.Range("a" & Fila)(1,Col).Value
End With
End With
Next
End Sub

2.-Para eliminar el registro. En un comandButton (pej: cmdEliminar):->

Private Sub cmdEliminar_Click()
Worksheets("Lista Clientes") _
.Range("a" & Fila).EntireRow.Delete
Exit Sub

3.-Para actualizar los cambios realizados en el registro veo (al menos)
dos opciones:

a.-segun escribes:->

Private Sub txtNombre_Change()
Worksheets("Lista Clientes").Range("b" & Fila) = txtNombre
End Sub

''Nota: lo tendrias que poner en cada textbox y cambiando los datos de
campo

b.- desde un comandButton (pej: cmdActualizar)

Private Sub cmdActualizar_Click()
Dim Celda as Range
With Worksheets("Lista Clientes")
For Each Celda in .Range("a1:g1")
With Celda
.Offset(Fila - 1,0).Value = _
Me.Controls("txt" & .Value)
End With
Next
End With
End Sub



Ten mucho ojo, porque no lo he escrito en el editor de VBA
y puede haber errores de escritura, aparte de que creo que funcionara,
pero no estpy seguro. Prueba con copias.

Espero que te sirva. Me cuentas

Un saludo y hasta pronto
Ivan


SantiRv ha escrito:

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 similares