Pasar de un formulario presupuesto a formulario orden de trabajo

Quería pedirles si me pueden ayudar con un código para pasar los datos del formulario presupuesto a el formulario orden de trabajo. Ahora no me funciona y no se lo que puede ser. Estuve realizando unas depuraciones a algunos códigos de vba y parece que borre algo que no me di cuenta y este código dejo de funcionar. La linea en negrilla es la que arroja error. En la imagen no se aprecia todo el código así que lo copiare y lo pegare. De antemano gracias

Private Sub Comando107_Click()
Dim miSQL As String
Dim numPpto As Integer
numPpto = Val(DLast("OT", "ORDENES_DE_TRABAJO")) + 1
If Me.ACEPTADO = True Then
MsgBox "EL PRESUPUESTO YA ESTA ACEPTADO", vbInformation, "ATENCION"
Exit Sub
End If
Beep
If MsgBox("ESTAS A PUNTO DE CREAR UNA ORDEN DE TRABAJO ¿DESEAS CONTINUAR?", vbYesNo + vbQuestion, "ATENCION") = vbNo Then Exit Sub
miSQL = "INSERT INTO ORDENES_DE_TRABAJO(OT,FECHA,MES,CODIGO_CLIENTE,CLIENTE,OBSERVACIONES) SELECT " & numPpto & " AS OrTr,FECHA,MES,CODIGO_CLIENTE,CLIENTE,OBSERVACIONES FROM PRESUPUESTOS WHERE PPTO=" & Me.PPTO & ""
CurrentDb.Execute miSQL, dbFailOnError
miSQL = "INSERT INTO ORDENES_DE_TRABAJO_DETALLE(OT,CODIGO_ARTICULO_OT,[TIPO DE ARTICULO],DESCRIPCION,STOCK,STOCK_FINAL,COSTO,PRECIO,[TOTAL COSTO],[PRECIO NETO],DESCUENTO,SUB_TOTAL,IVA,TOTAL) SELECT " & numPpto & " AS OrTr,CODIGO_ARTICULO_PPTO,[TIPO DE ARTICULO],DESCRIPCION,STOCK,STOCK_FINAL,COSTO,PRECIO,[TOTAL COSTO],[PRECIO NETO],DESCUENTO,SUB_TOTAL,IVA,TOTAL FROM PRESUPUESTOS_DETALLE WHERE PPTO=" & Me.PPTO & ""
CurrentDb.Execute miSQL, dbFailOnError
Me.ACEPTADO = True
DoCmd.OpenForm "INGRESO ORDENES DE TRABAJO", , , "OT=" & numPpto & ""
End Sub

2 respuestas

Respuesta
1

Eso te sucede porque en el primer registro que "pasas" no tiene valor anterior. Es nulo. Antes de, por ejemplo, 0001 no hay nada.

Para esto tienes la función Nz, que transforma los nulos en ceros o el valor que quieras.

NumPpto=nz(val(.......))+1

De todas formas, si el numppto es de tipo texto( lo digo por lo de val), para que te coja la forma, por ejemplo, de 001,002 tendrías que usar la función Format, más o menos como

NumPPto=format(nz(val(....))+1,"000")

De todas formas, sería mejor si pusieras un ejemplo de NumPPto

Es de tipo numero, así que solo puse lo que me indicas NumPpto=nz(val(.......))+1 y funciono. muchas gracias

Si es de tipo numérico, entonces no necesitas lo de Val. Esta función se usa cuando se trata campo tipo texto, por ejemplo

Val(003)=3

Respuesta
1

Pruebe con:

numPpto=Val(Nz(DLast("OT","Ordenes de trabajo"))+1)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas