Access - FUNCION INSERT INTO

 
Vista:
Imágen de perfil de Maikel

FUNCION INSERT INTO

Publicado por Maikel (9 intervenciones) el 02/11/2016 01:57:21
Buenas noches,

Llevo mas de dos horas con esto y no acabo de encontrar la solución. Tengo un código que me duplica los datos de un formulario con registros asociados de un subformulario, pero quiero que solo se duplique los registros que cumplan una determinada condición. Este es el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub cmdDuplicar_Click()
 
Dim strSQL As String, _
    lngSiguiente As Long
 
' calculo el número de pedido que le toca
lngSiguiente = DMax("idPedido", "Pedidos") + 1
 
' construyo la sentencia SQL para insertar el nuevo registro con todos los datos iguales que el actual y el nuevo id
strSQL = "INSERT INTO Pedidos ( IDPEDIDO, CODCLI, CODCEN, IDPROVEEDOR, [FECHA PEDIDO], [FECHA SERVICIO], [PEDIDO FACTURABLE], OBSERVACIONES)"
strSQL = strSQL & " SELECT " & lngSiguiente & " , CODCLI, CODCEN, IDPROVEEDOR, #" & Format(Date, "mm/dd/yy") & "#, [FECHA SERVICIO], [PEDIDO FACTURABLE], OBSERVACIONES"
strSQL = strSQL & " FROM Pedidos"
strSQL = strSQL & " WHERE IDPEDIDO = " & Me.IDPEDIDO
 
' ejecuto la inserción del pedido
CurrentDb.Execute strSQL, dbFailOnError
 
strSQL = "INSERT INTO [DETALLES DE PEDIDOS] ( IDPEDIDO, IDPRODUCTO, CODIGO, PRODUCTO, PRECIO, UNDS, PLANTILLA)"
strSQL = strSQL & " SELECT " & lngSiguiente & " , IDPRODUCTO, CODIGO, PRODUCTO, PRECIO, UNDS, PLANTILLA"
strSQL = strSQL & " FROM [Detalles de pedidos]"
strSQL = strSQL & " WHERE IDPEDIDO= " & Me.IDPEDIDO
 
' ejecuto la inserción de los detalles del pedido
CurrentDb.Execute strSQL, dbFailOnError
 
Me.Requery
DoCmd.GoToRecord , , acLast
MsgBox "EL PEDIDO HA SIDO DUPLICADO CON EXITO"
 
End Sub

la instrucción que quiero insertar es que solo se dupliquen los datos cuando PLANTILLA = VERDADERO, pero por mas que lo intento no me funciona, ni con la función AND después del WHERE ni con IF...

No se si me explicado bien, espero que alguien me pueda echar un cable.

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

FUNCION INSERT INTO

Publicado por jose (830 intervenciones) el 03/11/2016 09:27:39
si IDPEDIDO es numerico, prueba


strSQL = strSQL & " SELECT " & str$( lngSiguiente() & " , CODCLI, CODCEN, IDPROVEEDOR, #" & Format(Date, "mm/dd/yy") & "#, [FECHA SERVICIO], [PEDIDO FACTURABLE], OBSERVACIONES"

strSQL = strSQL & " FROM Pedidos"

strSQL = strSQL & " WHERE IDPEDIDO = " & str$( Me.IDPEDIDO)

sino prueba de esta forma que asi si funciona

REM CON ADO------------------------------------------
'Dim rs As Recordset
'Dim CON As Connection

Rem BUSCA
Set rs = CreateObject("ADODB.RecordSet")
Set CON = Application.CurrentProject.Connection
C10 = ""


C10 = C10 & " INSERT INTO MOVIMIENTOS ("
C10 = C10 & " FECHA,"
C10 = C10 & " NUMEASIENTO,"
C10 = C10 & " CUENTA,"
C10 = C10 & " DOCUMENTO,"
C10 = C10 & " CONCEPTO,"
C10 = C10 & " DEBE,"
C10 = C10 & " HABER,"
C10 = C10 & " TITULAR,"
C10 = C10 & " TIPOASIENTO,"
C10 = C10 & " ANNO )"

C10 = C10 & "SELECT"
C10 = C10 & " #" & Format(LFECHA, "mm/dd/yyyy") & "# AS Expr1,"
C10 = C10 & " " & Str$(NUMASI) & " AS Expr2,"
C10 = C10 & " '" & LCUENTA & "'AS Expr3,"
C10 = C10 & " '" & Nz(LDOCUMENTO, " ") & "' AS Expr4,"
C10 = C10 & " '" & Nz(LCONCEPTO, " ") & "' AS Expr5,"
C10 = C10 & " " & Str$(Nz(LDEBE, 0)) & " AS Expr6,"
C10 = C10 & " " & Str$(Nz(LHABER, 0)) & " AS Expr7,"
C10 = C10 & " " & Str$(Forms![FPRINCIPAL]![TIT]) & " AS Expr8,"
C10 = C10 & " '" & LTIPOASIENTO & "' AS Expr9,"
C10 = C10 & " '" & Forms![FPRINCIPAL]![an] & "' AS Expr10;"
C10 = C10 & " WHERE IDPEDIDO = " & str$( Me.IDPEDIDO)"


consulta = c10

rs.Open consulta, CON, adOpenDynamic, adLockOptimistic
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Maikel

FUNCION INSERT INTO

Publicado por Maikel (9 intervenciones) el 08/11/2016 01:40:46
Muchas gracias por la respuesta. Me ha sido de gran ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Roberto
Val: 27
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

FUNCION INSERT INTO

Publicado por Roberto (26 intervenciones) el 29/01/2017 23:06:30
Hola Jose

Estaba viendo tu respuesta, pero no la entiendo.

Verás, yo tengo una sentencia INSER INTO demasiada extensa, pero me cambia de línea y me da error, para que funciona la tengo que cortar.
He visto que tu lo has puesto en múltiples líneas, y no se si se podría adaptar a mis pretensiones, pero como te decía, no la entiendo.

Te pongo mi sentencia.

DoCmd.RunSQL "INSERT INTO TB_Actividades_Socio(AS_Socio_Nombre, AS_Socio_Apellidos, AS_Socio_DNI, AS_Alumno_1_Nombre, AS_Alumno_1_Apellidos, AS_Alumno_1_Curso, AS_Alumno_2_Nombre, AS_Alumno_2_Apellidos, AS_Alumno_2_Curso, AS_Alumno_3_Nombre, AS_Alumno_3_Apellidos, AS_Alumno_3_Curso, AS_Alumno_4_Nombre, AS_Alumno_4_Apellidos, AS_Alumno_4_Curso, Actividad_1_Alumno_1, Actividad_2_Alumno_1, Actividad_3_Alumno_1) values (CB_Socio.Value, Apellidos_S.Value, DNI_S.Value, CB_Alumno_1.Value, Apellidos_A_1.Value, Curso_A_1.Value, CB_Alumno_2.Value, Apellidos_A_2.Value, Curso_A_2.Value, CB_Alumno_3.Value, Apellidos_A_3.Value, Curso_A_3.Value, CB_Alumno_4.Value, Apellidos_A_4.Value, Curso_A_4.Value, CB_Actividad_1_1.Value, CB_Actividad_1_2.Value, CB_Actividad_1_3.Value)"

Podrías decirme como hacerla sin que me de error por la extensión ?

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar