Discussion:
AddItem
(demasiado antiguo para responder)
Pako
2004-02-25 12:05:59 UTC
Permalink
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
Datos:
Cuadro combinado nombre <Contactos>
Tabla <Contactos>
Campos [Codigo] y [Contacto]
En el cuadro combinado el campo codigo se repite, NO es
clave
Saludos
Pako
Búho
2004-02-25 14:32:42 UTC
Permalink
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".
Copio lo que pone la ayuda de Access:
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
***@mvp-access.com
---
http://www.mvp-access.com
http://groups.msn.com/Access2000VisualBasic/

"Pako" <***@yahoo.es> escribi� en el mensaje news:123901c3fb97$bb3fcd20$***@phx.gbl...
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
Datos:
Cuadro combinado nombre <Contactos>
Tabla <Contactos>
Campos [Codigo] y [Contacto]
En el cuadro combinado el campo codigo se repite, NO es
clave
Saludos
Pako
Pako
2004-02-25 17:12:15 UTC
Permalink
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
asi:
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
.
Sashka
2004-02-25 18:38:06 UTC
Permalink
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
inserción sería algo asi:

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


"Pako" <***@yahoo.es> escribi� en el mensaje news:169401c3fbc2$84103df0$***@phx.gbl...
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
asi:
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
.
Pako
2004-02-25 20:59:01 UTC
Permalink
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
.
.
Búho
2004-02-25 23:56:41 UTC
Permalink
A ver si te funciona así:


Private Sub CombiContactos_NotInList(NewData As String, _
Response As Integer)

Dim Sql As String , ctl As Control
Set ctl = Me.Controls("CombiContactos")
If MsgBox("Contacto " & NewData & " no existe. ¿Desea crearle?", _
vbQuestion & vbYesNo) = vbYes Then
Response = acDataErrAdded
Sql = "INSERT INTO Contactos (Codigo, Contacto) " _
& "VALUES (" & Me.Codigo & ", '" & NewData & "');"
CurrentDb.Execute Sql
ctl.RowSource = ctl.RowSource
Else
Response = acDataErrContinue
ctl.Undo
End If
End Sub

He llamado al cuadro combinado CombiContactos, he asumido que el campo
Codigo es Numerico y que Contacto es tipo String.
Suerte!
--
Saludos desde Valladolid
Francisco Javier García Aguado
***@mvp-access.com
---
http://www.mvp-access.com
http://groups.msn.com/Access2000VisualBasic/
"Pako" <***@yahoo.es> escribi� en el mensaje news:180d01c3fbe2$31f44aa0$***@phx.gbl...
Sashka
2004-02-26 00:25:42 UTC
Permalink
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
.
.
Pako
2004-02-26 08:11:23 UTC
Permalink
Hola!
Gracias por vuestra ayuda, he puesto el codigo de Sashka y
funciona y como dicen mejor no menearlo por si acaso.
Ahora me surge un problema, si por cualquier razon una
persona de contacto deja de pertenecer a la empresa ¿Como
lo elimino del Combinado?
Reitero mi agradecimiento, si no fuera por
vosotros,estariamos perdidos.
Saludos
Pako
-----Mensaje original-----
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
Hola!
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
.
.
.
Búho
2004-02-26 08:27:51 UTC
Permalink
Hola Pako.
Del combo se retira el registro que sea, el solito, si borras dicho registro
de la tabla(S), ya que el combo está alimentado de dicha tabla.
Para ello bastará que tengas un formulario de Bajas de dicha tabla. Mejor si
es de mantenemiento: ALtas, bajas etc
--
Saludos desde Valladolid
Francisco Javier García Aguado
***@mvp-access.com
---
http://www.mvp-access.com
http://groups.msn.com/Access2000VisualBasic/
Pako
2004-02-27 09:46:02 UTC
Permalink
Hola!
Sobre lo de eliminar un registro del cuadro combinado he
puesto lo siguiente:
Private Sub EliminarContacto_Click()
On Error GoTo Err_EliminarContacto_click
Dim sqlstring As String
Dim EliminarContacto_e
Dim Respuesta As Integer
Dim Contacto As String
DoCmd.SetWarnings False
EliminarContacto_e = Forms![Clientes]!Contacto
sqlstring = "delete*from Contactos where Contacto1 = " &
EliminarContacto_e
Respuesta = MsgBox("Quiere eliminar este contacto",
vbYesNo, "Atención....")
If Respuesta = 6 Then
DoCmd.RunSQL sqlstring
End If
DoCmd.SetWarnings True
'Actualizar registro en el cuadro combinado
Refresh
Exit_EliminarContacto_click:
Exit Sub
Err_EliminarContacto_click:
MsgBox Err.Description
Resume Exit_EliminarContacto_click
End Sub
Hay algun error porque no funciona
El cuadro combinado se llama Contacto
No puedo borrar mediante el campo codigo porque este no es
unico, tengo que comparar el contenido que hay en el
cuadro combinado i compararlo en la tabla contactos con el
campo Contacto1
Me podeis corregir
Gracias
Pako
-----Mensaje original-----
Hola Pako.
Del combo se retira el registro que sea, el solito, si
borras dicho registro
de la tabla(S), ya que el combo está alimentado de dicha
tabla.
Para ello bastará que tengas un formulario de Bajas de
dicha tabla. Mejor si
es de mantenemiento: ALtas, bajas etc
--
Saludos desde Valladolid
Francisco Javier García Aguado
---
http://www.mvp-access.com
http://groups.msn.com/Access2000VisualBasic/
.
Pako
2004-02-28 18:20:19 UTC
Permalink
Hola!
Buen con este codigo consigo eliminar el registro del
cuadro combinado poniendo un boton al lado del cuadro
combinado.
Lo pongo por si le sirve a alguien y por no dejar la
pregunta abierta
Private Sub EliminarContacto_Click()
On Error GoTo Err_EliminarContacto_click
Dim sqlstring As String
Dim Respuesta As Integer
DoCmd.SetWarnings False
sqlstring = "delete*from Contactos where Contacto1 = '" &
Contacto.Column(1) & "'"
Respuesta = MsgBox("Quiere eliminar este contacto",
vbYesNo, "Atención....")
If Respuesta = 6 Then
DoCmd.RunSQL sqlstring
'Actualizar registro en el cuadro combinado
Me.Contacto.Requery
Me.Contacto = ""
End If
DoCmd.SetWarnings True

Exit_EliminarContacto_click:
Exit Sub

Err_EliminarContacto_click:
MsgBox Err.Description
Resume Exit_EliminarContacto_click
End Sub

Gracias a todos por vuestra ayuda.
Pako
-----Mensaje original-----
Hola!
Sobre lo de eliminar un registro del cuadro combinado he
Private Sub EliminarContacto_Click()
On Error GoTo Err_EliminarContacto_click
Dim sqlstring As String
Dim EliminarContacto_e
Dim Respuesta As Integer
Dim Contacto As String
DoCmd.SetWarnings False
EliminarContacto_e = Forms![Clientes]!Contacto
sqlstring = "delete*from Contactos where Contacto1 = " &
EliminarContacto_e
Respuesta = MsgBox("Quiere eliminar este contacto",
vbYesNo, "Atención....")
If Respuesta = 6 Then
DoCmd.RunSQL sqlstring
End If
DoCmd.SetWarnings True
'Actualizar registro en el cuadro combinado
Refresh
Exit Sub
MsgBox Err.Description
Resume Exit_EliminarContacto_click
End Sub
Hay algun error porque no funciona
El cuadro combinado se llama Contacto
No puedo borrar mediante el campo codigo porque este no
es
unico, tengo que comparar el contenido que hay en el
cuadro combinado i compararlo en la tabla contactos con
el
campo Contacto1
Me podeis corregir
Gracias
Pako
-----Mensaje original-----
Hola Pako.
Del combo se retira el registro que sea, el solito, si
borras dicho registro
de la tabla(S), ya que el combo está alimentado de dicha
tabla.
Para ello bastará que tengas un formulario de Bajas de
dicha tabla. Mejor si
es de mantenemiento: ALtas, bajas etc
--
Saludos desde Valladolid
Francisco Javier García Aguado
---
http://www.mvp-access.com
http://groups.msn.com/Access2000VisualBasic/
.
.
Loading...