Ya... perdona Paco... por hacer las cosas al vuelo olvidé un detalle
importante...
Debes borras lo digitado para poder hacer el requery del control.... sino
sigue "no estando en la lista"...
Private Sub Contacto1_NotInList(NewData As String, Response As Integer)
Response = 0
Dim X As Integer, newcode As Integer
Dim DB As Database
Dim RS As Recordset
Set DB = CurrentDb
X = MsgBox("Quiere agregar este contacto?", vbYesNo, "Atención...")
If X = 6 Then
Set RS = DB.OpenRecordset("Contactos", dbOpenDynaset)
RS.AddNew
RS(0) = Me.Codigo
RS(1) = NewData
RS.Update
DB.Close
'Deshacer la escritura para que no de error al hacer requery
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
Me.contacto1.Requery
Me.contacto1 = NewData
End If
Sashka
MS MVP Access
"Pako" <***@yahoo.es> escribi� en el mensaje news:180d01c3fbe2$31f44aa0$***@phx.gbl...
Hola!
He puesto este codigo:
Private Sub Contacto1_NotInList(NewData As String,
Response As Integer)
Response = 0
Dim X As Integer, newcode As Integer
Dim DB As Database
Dim RS As Recordset
Set DB = CurrentDb
X = MsgBox("Quiere agregar este contacto?",
vbYesNo, "Atención...")
If X = 6 Then
Set RS = DB.OpenRecordset("Contactos", dbOpenDynaset)
RS.AddNew
RS(0) = Me.Codigo
RS(1) = NewData
RS.Update
End If
End Sub
Pues bien cuando meto un dato en el cuadro combinado me
sale el mensaje diciendome si quiero agregar le digo que si
y me vuelve a salir, si quiero salir del cuadro combinado
me vuelve a salir el mensaje y no consigo salir.
SI me lo guarda en la tabla.
Perdona pero que puede estar mal
Pako
-----Mensaje original-----
Es que no tienes que "meterlo" en el cuador combinado
sino en la tabla.....
si tu dices que el código es el código del cliente y
además tienes un
control en el formulario con ese dato (el que
corresponda)... el código de
Set RS = DB.OpenRecordset("Contactos", dbOpenDynaset)
RS.AddNew
RS(0) = me.codCliente
RS(1) = NewData
RS.Update
'''' [Contacto1] = RS(0).... esta línea no la entiendo...
que guardabas allí
si el nuevo registro no tenía valor en RS(0)????????
Sashka
MS MVP Access
Hola!
Haber si lo solucionamos de otra manera.
Yo tengo un formulario con un campo [Codigo](del cliente)
En este formulario tengo un Cuadro combinado <Contacto1>
Origen de la fila=SELECT Contactos.Codigo,
Contactos.Contacto1 FROM Contactos where Codigo = " &
Me.Codigo;
Es decir la tabla Contactos tiene dos campos [Codigo] y
[Contacto1]
Cuando abro el formulario y el codigo del cliente por
ejemplo es 20, al desplegar el cuadro combinado seria algo
Codigo Contacto1
20 Ramirez
20 Perez
20 Sanchez
para poder elegir uno,como se ve el campo Codigo no es
clave porque debe repetirse.
Ahora bien como meto un nuevo contacto.
De una de vuestras paginas no se si de buho ,chea o
McPegasus,he sacado el siguiente codigo de una base de
datos que hace lo que yo quiero,lo que pasa es que el
campo Codigo es autonumerico que no es mi caso.
Private Sub Contacto1_NotInList(NewData As String,
Response As Integer)
Response = 0
Dim X As Integer, newcode As Long
X = MsgBox("Quiere agregar este contacto?", vbYesNo)
If X <> 6 Then Exit Sub
Dim DB As Database
Dim RS As Recordset
Set DB = CurrentDb
Set RS = DB.OpenRecordset("Contactos", dbOpenDynaset)
RS.AddNew
RS(1) = NewData
[Contacto1] = RS(0)
RS.Update
RS.Close
DB.Close
Contacto1.Requery
End Sub
Cuando lo ejecuto me indica error 3314, el campo
Contactos.Codigo no puede contener un campo NULL porque la
propiedad requerida es true, escriba un valor en este
campo.
O sea como meto en la columna(0)del cuadro combinado el
valor del campo Codigo, en este caso 20 para que no me de
el error.
Haber si me he explicado o como siempre.
Saludos
Pako
-----Mensaje original-----
Hola.
El metodo Additem, que yo sepa no sirve para añadir datos
a una tabla origen
del cuadro combinado o de lista ya que éste debe tener su
RowSourceType a
'lista de valores".
La propiedad TipoDeOrigenDeLaFila (RowSourceType) del
control especificado
debe establecerse en "Lista de valores". (Aqui es donde
te comento que
limita para añadir un resgistro directamente)
Este método sólo es válido para los controles de cuadro
de lista o cuadro
combinado de los formularios.
Los números de los elementos de lista comienzan a partir
de cero. Si el
valor del argumento Índice no corresponde a un número de
elemento existente,
se produce un error.
Para listas con varias columnas, utilice punto y coma
para delimitar las
cadenas de cada columna (por ejemplo, "1010;rojo;ancho"
para una lista de
tres columnas). Si el argumento Elemento contiene menos
cadenas que columnas
haya en el control, los elementos se agregarán a partir
de la columna
situada más a la izquierda. Si el argumento Elemento
contiene más cadenas
que columnas haya en el control, se omitirán las cadenas
que sobran.
--
Saludos desde Valladolid
Francisco Javier García Aguado
---
http://www.mvp-access.com
http://groups.msn.com/Access2000VisualBasic/
Hola!
He estado buscando informacion para añadir datos a un
cuadro combinado y con lo que veo no me aclaro.
Con el metodo Additem como se haria
Cuadro combinado nombre <Contactos>
Tabla <Contactos>
Campos [Codigo] y [Contacto]
En el cuadro combinado el campo codigo se repite, NO es
clave
Saludos
Pako
.
.