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

#11 Ivan
28/09/2006 - 16:28 | Informe spam
Hola Santi, efectivamente hay un despiste (uno mas)

aunque supongo que es lo que habras hecho, te comento por si acaso ->

cambia todos los 'llenados' del ComboBox1 (en CommandButton1,
CommandButton2 y en Userform_Initialice) ->

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


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




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

ten en cuenta que "b" es la columna donde se supone estan los nombres,
para llenar el combo con otros campos solo tendrias que cambiarla por
la letra de la columna correspondiente

un saludo
Ivan
Respuesta Responder a este mensaje
#12 Ivan
28/09/2006 - 16:29 | Informe spam
Hola Santi, efectivamente hay un despiste (uno mas)

aunque supongo que es lo que habras hecho, te comento por si acaso ->

cambia todos los 'llenados' del ComboBox1 (en CommandButton1,
CommandButton2 y en

Userform_Initialice) ->

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


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

..

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

un saludo
Ivan
Respuesta Responder a este mensaje
#13 Francisco
28/09/2006 - 17:06 | Informe spam
Hola Ivan:

Yo copie el primer código y me funcionó a la primera estupendamente, y, como
dice Santi, el resultado es espectacular, y con las respuestas posteriores
he aprendico algo más, GRACIAS Ivan por tus enseñanzas.

Pregunto ¿ Se puede añadir un CommandButton más para añadir una nueva fila
(un nuevo registro) y que el Id de cliente sea el del último +1?
Tengo una pequeña idea de como hacerlo pero no me gusta mucho, sería mejor
continuar tu código.

Muchas GRACIAS Ivan

Paco

"Ivan" escribió en el mensaje
news:
Hola Santi, efectivamente hay un despiste (uno mas)

aunque supongo que es lo que habras hecho, te comento por si acaso ->

cambia todos los 'llenados' del ComboBox1 (en CommandButton1,
CommandButton2 y en

Userform_Initialice) ->

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


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

..

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

un saludo
Ivan

Respuesta Responder a este mensaje
#14 Ivan
28/09/2006 - 18:57 | Informe spam
Hola Santi, efectivamente hay un despiste (uno mas)

aunque supongo que es lo que habras hecho, te comento por si acaso ->

cambia todos los 'llenados' del ComboBox1 (en CommandButton1,
CommandButton2 y en Userform_Initialice) ->

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


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

..

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

un saludo
Ivan
Respuesta Responder a este mensaje
#15 Ivan
29/09/2006 - 00:46 | Informe spam
Hola Paco

gracias por tus palabras, pero en esto soy un simple aprendiz que
intento (me temo que con demasiada precipitacion, y poca fortuna en
ocasiones) echar una mano en el foro con lo poco que se, lo cual lo he
aprendido aqui gracias a sus verdaderos maestros y a sus consultantes.

En cuanto al nuevo registro quizas puedas hacer esto ( aunque te
recomiendo que tambien indagues con lo que se te halla ocurrido) ->

añades un 4º commandbutton que tomara el caption "Nuevo", en el
solamente borras los textbox y adjudica un nuevo Id para el nuevo
registro. Inhbilita el combo y el propio boton4 para evitar
interferencias, y una vez rellenos los datos se actualiza con
'Actualizar'.

sustituye los codigos del boton1 y del initialice y añade el del
boton4 (y añade el boton al formulario, je,je..)

Private Sub CommandButton1_Click()
Dim Col As Byte, Ltr As String
With ComboBox1
If .MatchFound = False Or .ListIndex = -1 Then
If CommandButton4.Enabled = True Then
MsgBox ("La entrada no coincide o esta vacia")
' AQUI tu decides lo que haces
Exit Sub
Else
MsgBox ("El nuevo registro se ha actualizado correctamente")
End If
End If
End With
For Col = 1 To 7
Ltr = Chr(64 + Col)
With Worksheets("Hoja1").Range(Ltr & Fila)
.Value = Me.Controls("TextBox" & Col)
If IsNumeric(.Value) Then .Value = _
Val(.Value)
End With
Next
With ComboBox1
.Clear
.List = Worksheets("Hoja1").Range("b2:b" & _
Worksheets("Hoja1").Range("a65536") _
.End(xlUp).Row).Value
.ListIndex = Fila - 2
End With
ComboBox1.Enabled = True
CommandButton4.Enabled = True
End Sub

Private Sub CommandButton4_Click()
Dim nTxt As Byte, NuevoIt As Long, Celda As Range
For nTxt = 1 To 7
Me.Controls("TextBox" & nTxt).Text = ""
Next
With Worksheets("Hoja1")
If .Range("a2") = "" Then
TextBox1 = 1: Fila = 2
Else
.Range("a1:g" & .[a65536].End(xlUp).Row).Sort _
key1:=.[a2], order1:=xlAscending, Header:=xlYes
TextBox1 = .[a65536].End(xlUp).Value + 1
Fila = .[a65536].End(xlUp).Row + 1
End If
End With
ComboBox1.Enabled = False
CommandButton4.Enabled = False
TextBox2.setfocus
End Sub

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

Si quieres que halla campos obligatorios podrias poner en el
commandbutton1 -> en el "Else" de 'If CommandButton4=True' y antes del
msgbox ->algo parecido a esto-->

for ntxt=1 to 7
If Me.Controls("TextBox" & Col).text="" then
msgbox("El campo es obligatotio")
Me.Controls("TextBox" & Col).setfocus
exit sub
end if
next

esto haria obligatorios los 7, pero si quieres que sean menos, puedes
poner los obligados al principio y hacer el bucle solo hasta el nº de
obligados. Tambien lo puedes hacer textbox a textbox

seguro que surge alguna pega, pero a mi parece funcionarme. Adaptalo a
tus necesidades.
Un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida