Llamar función desde una consulta anexar a otra tabla

Tengo tengo una duda

Tengo 2 tablas ejemplo tabla 1 y tabla 2

De la tabla 1 anexo ala tabla 2 pero en la tabla 2 tiene un autonumérico que quiero que lo busque en la misma tabla 2 y incremente a 1 del ultimo que tiene la tabla 2

No anexarlo de la tabla 1 los demás campos si

Tabla 1 nombre edad buscar de la tabla 2 y incrematar ala ultimo de ese autonumerio (idtabla2)

Tabla 2 nombret2 edad t2 idtabla2

Espero me explique lo intendo desde una función pero no me queda

Public Function AutoNume(AutoNume As String) As String
AutoNume = Format(CLng(DMax("IDVentaV", "Venta")) + 1, "00")
End Function

el erro que me da es introduzca el valor del parámetro

AutNuem                   al ejecutar la consulta 

2 respuestas

Respuesta
1

Igualmente no entiendo exactamente su pregunta. Lo que le dicen es cierto, para que incrementar en 1 un campo autonumérico si este lo así por si solo, ahora si va a manipular campos con algún incremento debe tratarlos como numéricos el lugar de cadena. Me parece que en el ejemplo de Icue está claro, no obstante, prácticamente daría lo mismo definir el campo idcliente como autonumérico y darle el formato en una consulta algo como Format(idcliente,"00") siempre y cuando solo tenga 99 clientes.

Respuesta
1

La verdad, no lo he entendido. Dices que anexas registros de la tabla 1 a la 2, y que la tabla 2 tiene un autonumérico. Entonces ¿para qué decirle que incremente ese id de la tabla 2 en 1?. El propio autonumérico ya lo hace.

Por otro lado, le dices que te convierta en largo el máximo de idventa, pero luego que le dices que tenga formato 00, o sea, que lo máximo sería 99 como texto.

Cuando declaras un campo como autonumérico pierdes totalmente el control sobre él. Es preferible declararlo como número. Por ejemplo, si tengo la tabla Clientes

Y la tabla Copia

Hago un formulario, o bien basado en la tabla Clientes, o bien independiente, ya que el posterior origen se lo voy a dar yo, con un combinado donde voy a elegir los clientes de un país que luego voy a anexar a la tabla Copia

Elijo España y por un lado

y la tabla Copia

Ahora voy a anexar los de Alemania

El formulario me queda como

y la tabla Copia como

Private Sub Elegir_AfterUpdate()
Me.RecordSource = "select nombrecliente,pais from clientes where pais='" & Me.Elegir & "'"
DoCmd.GoToRecord , , acFirst
Dim i As Integer
For i = 1 To Me.Recordset.RecordCount
DoCmd.RunSQL "insert into copia(idcliente,nombrecliente,pais)values(nz(dlast(""idcliente"",""copia""))+1,nombrecliente,pais)"
DoCmd.GoToRecord , , acNext
Next
End Sub

Si lo que quieres es que te quede como

Declara el campo Id como texto y cambia la línea de código y déjala como

DoCmd. RunSQL "insert into copia(idcliente, nombrecliente, pais)values(format(val(nz(dlast(""idcliente"",""copia"")))+1,""00""), nombrecliente, pais)"

Estoy aplicado tu primea solución y me funciona pero al insert into NoCotiz el origen viene de select NoCotizacion me pide el valor de NoCotiz cuando se supones que le digo que tiene un origen NoCotizacion

Me.RecordSource = "select Cliente,Direccion,Estado,Telefono,Correo,FechaCotizacion,FechaFinCotiza,Empleado,Mecanico,NoCliente,NoCotizacion from Cotizacion where NoCotizacion='" & Me.cNunCotiza & "'"
DoCmd.GoToRecord , , acFirst
Dim i As Integer
For i = 1 To Me.Recordset.RecordCount
DoCmd.RunSQL "insert into Venta(IDVentaV,Cliente,Direccion,Estado,Telefono,Correo,FechaCotizacion,FechaFinCotiza,Empleado,Mecanico,NoCliente,NoCotiz)values(nz(dlast(""IDVentaV"",""Venta""))+1,Cliente,Direccion,Estado,Telefono,Correo,FechaCotizacion,FechaFinCotiza,Empleado,Mecanico,NoCliente,NoCotiz)"
DoCmd.GoToRecord , , acNext
Next

Normalmente, ese error lo da cuando haces referencia a un control que no se llama así. Mira en la propiedades del control Nocotiz, en Otras-Nombre y comprueba que se llama así.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas