Hola gente, buen día, hace tiempo que trabajo en algunos sistemas con SQL.
Me paso algo muy raro, en un sistema en la función cobranza, se ingreso una cobranza de varios documentos y actualizó solo algunas tablas y una no hizo nada, lo extraño es que la que no actualizó está intercalada con la actualización de las demás tablas y no dio error alguno.
UPDATE licita SET saldo = saldo - 17400.00, ult_pago = 18/03/2020 where licita = 30155
INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO],[descu], [observa], saldo, saldoafa, interescalculado ) VALUES ( 34, 30155, '18/03/2020', 3390, 17400.00, '18/03/2020', '18/03/2020', 1, 'N', 0.00,' ',0,0, 0.00 )
UPDATE licita SET saldo = saldo - 17400.00, ult_pago = 18/03/2020 where licita = 30156
INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO],[descu], [observa], saldo, saldoafa, interescalculado ) VALUES ( 34, 30156, '18/03/2020', 3390, 17400.00, '18/03/2020', '18/03/2020', 1, 'N', 0.00,' ',0,0, 0.00 )
UPDATE licita SET saldo = saldo - 17400.00, ult_pago = 18/03/2020 where licita = 31029
INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO],[descu], [observa], saldo, saldoafa, interescalculado ) VALUES ( 34, 31029, '18/03/2020', 3390, 17400.00, '18/03/2020', '18/03/2020', 1, 'N', 0.00,' ',0,0, 0.00 )
UPDATE licita SET saldo = saldo - 17400.00, ult_pago = 18/03/2020 where licita = 31030
INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO],[descu], [observa], saldo, saldoafa, interescalculado ) VALUES ( 34, 31030, '18/03/2020', 3390, 17400.00, '18/03/2020', '18/03/2020', 1, 'N', 0.00,' ',0,0, 0.00 )
UPDATE licita SET saldo = saldo - 156600.00, ult_pago = 18/03/2020 where licita = 31258
INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO],[descu], [observa], saldo, saldoafa, interescalculado ) VALUES ( 34, 31258, '18/03/2020', 3390, 156600.00, '18/03/2020', '18/03/2020', 1, 'N', -16700.00,' ',0,0, -16700.00 )
UPDATE licita SET saldo = saldo - 156600.00, ult_pago = 18/03/2020 where licita = 31259
INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO],[descu], [observa], saldo, saldoafa, interescalculado ) VALUES ( 34, 31259, '18/03/2020', 3390, 156600.00, '18/03/2020', '18/03/2020', 1, 'N', -16700.00,' ',0,0, -16700.00 )
INSERT INTO Mov_ven ([Fecha],[Puesto],[Numero],[Descri],[Factura],pagos,[Forpago],[Vendedor]) VALUES ('18/03/2020',2, 3390,'Iturrioz Fermin ', 349400.00,0,1,'')
UPDATE Numdoc SET recibo = 3390, nroorden = 7 where numero = 2
La tabla que no actualizó es Pagos.
Lo hago con try catch, mando el string con todas las sentencias para atajar errores y no actualice nada.
Además lo volví a generar sin tocar nada y actualizó perfecto.
Obvio que esta función se usa a diario y nunca tuvimos este error.
Saludos
Jorge.
Ayuda con SQL
Re: Ayuda con SQL
Jorge buenas tardes,
Puedes postear algo de código en donde haces la inserción de los registros?
Y por otro lado están definidos así _ "[Factura]" incluyendo los corchetes planos ?
Puedes postear algo de código en donde haces la inserción de los registros?
Y por otro lado están definidos así _ "[Factura]" incluyendo los corchetes planos ?
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Ayuda con SQL
Just like we use ` to quote field names in MySql ( eg `fieldname` ), we use [ ] in DBF, Access, MSSQL. ( eg: [fieldname] ).leandro wrote:Jorge buenas tardes,
Puedes postear algo de código en donde haces la inserción de los registros?
Y por otro lado están definidos así _ "[Factura]" incluyendo los corchetes planos ?
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
-
- Posts: 35
- Joined: Tue Oct 11, 2016 1:02 pm
Re: Ayuda con SQL
Esta es la rutina donde genero los registros:
function generoreci()
xtotal = xefectivo + xtotche + ximpretiva + ximpretgan + ximpretrg + ximpretibr + acuenta
if xtotal = 0
msginfo( "Monto abonado en cero" )
retu .f.
endif
wtxt = "errorecib.txt"
ferase( wtxt )
cHande = FCREATE ( wtxt )
cSQLNum := "SELECT * FROM numdoc where numero = " + str( xemprevige )
oRS1num := CargaRecordSet( cSQLnum, CadenaCon )
IF oRS1num = nil
Msginfo( "problemas, no puedo leer numdoc" )
retu .t.
endif
if acuenta = 0
xrecibo := oRS1num:Fields( "recibo" ):value + 1
endif
val_fam( xfamilia )
if limpreci
imprireci()
* retu .f.
endif
xnombre = xpadre
sele au_reci
go top
i = 1
* ? xdescu
copias = 1
if ximpinteres < 0
x1impabon := xtotal + imp_nc + ( ximpinteres * - 1 ) + acuenta
else
x1impabon := xtotal + imp_nc + acuenta - ximpinteres
endif
xsaldo = 0
SQLMVen = ""
if xfactura = 0
else
do while i <= len( tfactura )
if tfactura[ i, 1 ] = "*"
jk = val( tfactura[ i, 3 ] )
if tfactura[ i, 2 ] $ "N NCM "
wrecset = oRS1RecLic
wrec = "licita"
wfac = "licita"
else
wrecset = oRS1Recvta
wrec = "ventas"
wfac = "factura"
endif
wtipo = "N"
xpuesto = val( tfactura[ i, 8 ] )
if tfactura[ i, 2 ] = "AC"
xsaldo = val( tfactura[ i, 10 ] )
*x1impabon = x1impabon - val( tfactura[ i, 10 ] )
wtipo = "X"
ws = 0
*SQLMVen = SQLMVen + "UPDATE pagos SET saldoafa = 0, cancelado = 0, importe = " + str( val( tfactura[ i, 10 ] ), 10, 2 ) + " where id = " + str(tregistro[ x ]) + chr( 13 ) + chr( 10 )
SQLMVen = SQLMVen + "UPDATE pagos SET saldoafa = saldoafa + " + str(val( tfactura[ i, 10 ] ),10,2) + ", cancelado = 9999999 where id = " + str(tregistro[ i ]) + chr( 13 ) + chr( 10 )
else
wrecset:AbsolutePosition = tregistro[ i ]
//wrecset:find("factura"=jk ) //oRs:Find( "file_num = '"+cFIND+"'" )
if tfactura[ i, 2 ] $ "CCNC"
xsaldo := wrecset:Fields( "saldo" ):value
SQLMVen = SQLMVen + "UPDATE " + wrec + " SET saldo = 0, ult_pago = '" + dtoc( xfecha ) + "' where " + wfac + " = " + str( jk ) + chr( 13 ) + chr( 10 )
else
if val( tfactura[ i, 10 ] ) < x1impabon
xsaldo = val( tfactura[ i, 10 ] )
x1impabon = x1impabon - val( tfactura[ i, 10 ] )
ws = val( tfactura[ i, 10 ] )
else
xsaldo = x1impabon
ws = x1impabon
x1impabon = 0
endif
SQLMVen = SQLMVen + "UPDATE " + wrec + " SET saldo = saldo - " + str( ws, 10, 2 ) + ", ult_pago = " + dtoc( xfecha ) + " where " + wfac + " = " + str( jk ) + chr( 13 ) + chr( 10 )
ENDIF
* endif
SQLMVen = SQLMVen + "INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO],[descu], [observa], saldo, saldoafa, interescalculado ) VALUES (" + ;
str( xfamilia , 8, 0 ) + ", " + str( jk, 8, 0 ) + ", '" + dtoc( xfecha ) ;
+ "', " + str( xrecibo, 8, 0 ) + ", " + str( xsaldo, 10, 2 ) + ", '" + dtoc( xfecha ) + "', '" + dtoc( xfecha ) + "', " + str( xpuesto, 4, 0 ) + ", " + "'"+wtipo+"'," + tfactura[ i, 9 ] + ",'" + xobserva + "',0,0," + tfactura[ i, 9 ] + " )" + chr( 13 ) + chr( 10 )
endif
endif
i = i + 1
enddo
endif
jorden = 0
hh = 1
sele au_reci
go top
do while .not. eof()
if cuenta <> 0
wque = "mov_bco"
SQLMVen = SQLMVen + "INSERT INTO " + wque + " ([Fecha],[Puesto],[Cuit_che],[Numero],[Descri],[Factura],pagos,[Num_che],[Fec_che],[Banco],[Titular],[Forpago],[Vendedor], [orden], cuenta, esinter) VALUES ('" + dtoc( xfecha ) + "'," + str( xemprevige, 1, 0 ) ;
+ ",'" + au_reci->cuit_che + "'," + str( xrecibo, 8, 0 ) + ",'" + alltrim( substr( xnombre, 1, 45 ) ) + "'," + str( au_reci->importe, 10, 2 ) + ",0," + str( au_reci->chenro, 8, 0 ) + ",'" + dtoc( au_reci->fecche ) + "','" + substr( au_reci->banco, 1, 15 ) + "','" + alltrim( substr( au_reci->titular, 1, 30 ) ) + "',2,'" + alltrim( xnombreven ) + "'," + str( au_reci->orden, 8, 0 ) + "," + str( au_reci->cuenta, 10, 0 ) + ", 'S')" + chr( 13 ) + chr( 10 )
else
wque = "mov_ven"
SQLMVen = SQLMVen + "INSERT INTO " + wque + " ([Fecha],[Puesto],[Cuit_che],[Numero],[Descri],[Factura],pagos,[Num_che],[Fec_che],[Banco],[Titular],[Forpago],[Vendedor], [orden]) VALUES ('" + dtoc( xfecha ) + "'," + str( xemprevige, 1, 0 ) ;
+ ",'" + au_reci->cuit_che + "'," + str( xrecibo, 8, 0 ) + ",'" + alltrim( substr( xnombre, 1, 45 ) ) + "'," + str( au_reci->importe, 10, 2 ) + ",0," + str( au_reci->chenro, 8, 0 ) + ",'" + dtoc( au_reci->fecche ) + "','" + substr( au_reci->banco, 1, 15 ) + "','" + alltrim( substr( au_reci->titular, 1, 30 ) ) + "',2,'" + alltrim( xnombreven ) + "'," + str( au_reci->orden, 8, 0 ) + ")" + chr( 13 ) + chr( 10 )
endif
sele au_reci
skip
enddo
if xefectivo <> 0
SQLMVen = SQLMVen + "INSERT INTO Mov_ven ([Fecha],[Puesto],[Numero],[Descri],[Factura],pagos,[Forpago],[Vendedor]) VALUES ('" + dtoc( xfecha ) + "'," + str( xemprevige, 1, 0 ) ;
+ "," + str( xrecibo, 8, 0 ) + ",'" + substr( xnombre, 1, 45 ) + "'," + str( xefectivo, 10, 2 ) + ",0,1,'" + xnombreven + "')" + chr( 13 ) + chr( 10 )
endif
if ximpinteres < 0
if x1impabon > 0 // - ximpdescu
SQLMVen = SQLMVen + "INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO], saldo, saldoafa, InteresCalculado, [observa] ) VALUES (" + str( xfamilia , 8, 0 ) + ", 0, '" + dtoc( xfecha ) ;
+ "', " + str( xrecibo, 8, 0 ) + ", " + str( x1impabon, 10, 2 ) + ", '" + dtoc( xfecha ) + "', '" + dtoc( xfecha ) + "', 1, " + "'N', 0, 0, 0,'" + xobserva + "' )" + chr( 13 ) + chr( 10 )
endif
else
if x1impabon > 0 //- ximpinteres // - ximpdescu
SQLMVen = SQLMVen + "INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO], saldo, saldoafa, InteresCalculado, [observa] ) VALUES (" + str( xfamilia , 8, 0 ) + ", 0, '" + dtoc( xfecha ) ;
+ "', " + str( xrecibo, 8, 0 ) + ", " + str( x1impabon, 10, 2 ) + ", '" + dtoc( xfecha ) + "', '" + dtoc( xfecha ) + "', 1, " + "'N', 0, 0, 0,'" + xobserva + "' )" + chr( 13 ) + chr( 10 )
endif
endif
if ximpretiva <> 0
SQLMVen = SQLMVen + "INSERT INTO Compret ([Cliente],[Comproba],[Tipo],[Fecha],[Recibo],[Importe],[Fecpago]) VALUES " + ;
" ( " + str( xfamilia, 8, 0 ) + ", " + str( xcomretiva, 12, 0 ) + ", " + "'IVA'" + ", '" + dtoc( xfecha ) + "', " + str( xrecibo, 8, 0 ) + ", " + str( ximpretiva, 10, 2 ) + ", '" + dtoc( xfecha ) + "')" + chr( 13 ) + chr( 10 )
endif
if ximpretgan <> 0
SQLMVen = SQLMVen + "INSERT INTO Compret ([Cliente],[Comproba],[Tipo],[Fecha],[Recibo],[Importe],[Fecpago]) VALUES " + ;
" ( " + str( xfamilia, 8, 0 ) + ", " + str( xcomretgan, 12, 0 ) + ", " + "'GAN'" + ", '" + dtoc( xfecha ) + "', " + str( xrecibo, 8, 0 ) + ", " + str( ximpretgan, 10, 2 ) + ", '" + dtoc( xfecha ) + "')" + chr( 13 ) + chr( 10 )
endif
if ximpretrg <> 0
SQLMVen = SQLMVen + "INSERT INTO Compret ([Cliente],[Comproba],[Tipo],[Fecha],[Recibo],[Importe],[Fecpago]) VALUES " + ;
" ( " + str( xfamilia, 8, 0 ) + ", " + str( xcomretrg, 12, 0 ) + ", " + "'RG'" + ", '" + dtoc( xfecha ) + "', " + str( xrecibo, 8, 0 ) + ", " + str( ximpretrg, 10, 2 ) + ", '" + dtoc( xfecha ) + "')" + chr( 13 ) + chr( 10 )
endif
if ximpretibr <> 0
SQLMVen = SQLMVen + "INSERT INTO Compret ([Cliente],[Comproba],[Tipo],[Fecha],[Recibo],[Importe],[Fecpago]) VALUES " + ;
" ( " + str( xfamilia, 8, 0 ) + ", " + str( xcomretibr, 12, 0 ) + ", " + "'IBR'" + ", '" + dtoc( xfecha ) + "', " + str( xrecibo, 8, 0 ) + ", " + str( ximpretibr, 10, 2 ) + ", '" + dtoc( xfecha ) + "')" + chr( 13 ) + chr( 10 )
endif
SQLMVen = SQLMVen + "UPDATE Numdoc SET recibo = " + str( xrecibo, 8, 0 ) + ", nroorden = " + str( xorden, 8, 0 ) + " where numero = " + str( xemprevige ) + chr( 13 ) + chr( 10 )
TRY
oCon:Execute( sqlMVen )
oCon:Close() ; Catch oErr
msginfo("Error al grabar el recibo "+sqlmven)
FWrite ( cHande, SQLMVen + chr( 13 ) + chr( 10 )+ oErr )
END TRY
FClose ( cHande )
Los corchetes están porque corrijo las sentencias en sql managment studio, pero reitero los raro es que anda bien sin problemas, hasta ahora detecte que fallo una sola ves (espero).
El problema es como detectar porque falla.
Saludos
Jorge.
function generoreci()
xtotal = xefectivo + xtotche + ximpretiva + ximpretgan + ximpretrg + ximpretibr + acuenta
if xtotal = 0
msginfo( "Monto abonado en cero" )
retu .f.
endif
wtxt = "errorecib.txt"
ferase( wtxt )
cHande = FCREATE ( wtxt )
cSQLNum := "SELECT * FROM numdoc where numero = " + str( xemprevige )
oRS1num := CargaRecordSet( cSQLnum, CadenaCon )
IF oRS1num = nil
Msginfo( "problemas, no puedo leer numdoc" )
retu .t.
endif
if acuenta = 0
xrecibo := oRS1num:Fields( "recibo" ):value + 1
endif
val_fam( xfamilia )
if limpreci
imprireci()
* retu .f.
endif
xnombre = xpadre
sele au_reci
go top
i = 1
* ? xdescu
copias = 1
if ximpinteres < 0
x1impabon := xtotal + imp_nc + ( ximpinteres * - 1 ) + acuenta
else
x1impabon := xtotal + imp_nc + acuenta - ximpinteres
endif
xsaldo = 0
SQLMVen = ""
if xfactura = 0
else
do while i <= len( tfactura )
if tfactura[ i, 1 ] = "*"
jk = val( tfactura[ i, 3 ] )
if tfactura[ i, 2 ] $ "N NCM "
wrecset = oRS1RecLic
wrec = "licita"
wfac = "licita"
else
wrecset = oRS1Recvta
wrec = "ventas"
wfac = "factura"
endif
wtipo = "N"
xpuesto = val( tfactura[ i, 8 ] )
if tfactura[ i, 2 ] = "AC"
xsaldo = val( tfactura[ i, 10 ] )
*x1impabon = x1impabon - val( tfactura[ i, 10 ] )
wtipo = "X"
ws = 0
*SQLMVen = SQLMVen + "UPDATE pagos SET saldoafa = 0, cancelado = 0, importe = " + str( val( tfactura[ i, 10 ] ), 10, 2 ) + " where id = " + str(tregistro[ x ]) + chr( 13 ) + chr( 10 )
SQLMVen = SQLMVen + "UPDATE pagos SET saldoafa = saldoafa + " + str(val( tfactura[ i, 10 ] ),10,2) + ", cancelado = 9999999 where id = " + str(tregistro[ i ]) + chr( 13 ) + chr( 10 )
else
wrecset:AbsolutePosition = tregistro[ i ]
//wrecset:find("factura"=jk ) //oRs:Find( "file_num = '"+cFIND+"'" )
if tfactura[ i, 2 ] $ "CCNC"
xsaldo := wrecset:Fields( "saldo" ):value
SQLMVen = SQLMVen + "UPDATE " + wrec + " SET saldo = 0, ult_pago = '" + dtoc( xfecha ) + "' where " + wfac + " = " + str( jk ) + chr( 13 ) + chr( 10 )
else
if val( tfactura[ i, 10 ] ) < x1impabon
xsaldo = val( tfactura[ i, 10 ] )
x1impabon = x1impabon - val( tfactura[ i, 10 ] )
ws = val( tfactura[ i, 10 ] )
else
xsaldo = x1impabon
ws = x1impabon
x1impabon = 0
endif
SQLMVen = SQLMVen + "UPDATE " + wrec + " SET saldo = saldo - " + str( ws, 10, 2 ) + ", ult_pago = " + dtoc( xfecha ) + " where " + wfac + " = " + str( jk ) + chr( 13 ) + chr( 10 )
ENDIF
* endif
SQLMVen = SQLMVen + "INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO],[descu], [observa], saldo, saldoafa, interescalculado ) VALUES (" + ;
str( xfamilia , 8, 0 ) + ", " + str( jk, 8, 0 ) + ", '" + dtoc( xfecha ) ;
+ "', " + str( xrecibo, 8, 0 ) + ", " + str( xsaldo, 10, 2 ) + ", '" + dtoc( xfecha ) + "', '" + dtoc( xfecha ) + "', " + str( xpuesto, 4, 0 ) + ", " + "'"+wtipo+"'," + tfactura[ i, 9 ] + ",'" + xobserva + "',0,0," + tfactura[ i, 9 ] + " )" + chr( 13 ) + chr( 10 )
endif
endif
i = i + 1
enddo
endif
jorden = 0
hh = 1
sele au_reci
go top
do while .not. eof()
if cuenta <> 0
wque = "mov_bco"
SQLMVen = SQLMVen + "INSERT INTO " + wque + " ([Fecha],[Puesto],[Cuit_che],[Numero],[Descri],[Factura],pagos,[Num_che],[Fec_che],[Banco],[Titular],[Forpago],[Vendedor], [orden], cuenta, esinter) VALUES ('" + dtoc( xfecha ) + "'," + str( xemprevige, 1, 0 ) ;
+ ",'" + au_reci->cuit_che + "'," + str( xrecibo, 8, 0 ) + ",'" + alltrim( substr( xnombre, 1, 45 ) ) + "'," + str( au_reci->importe, 10, 2 ) + ",0," + str( au_reci->chenro, 8, 0 ) + ",'" + dtoc( au_reci->fecche ) + "','" + substr( au_reci->banco, 1, 15 ) + "','" + alltrim( substr( au_reci->titular, 1, 30 ) ) + "',2,'" + alltrim( xnombreven ) + "'," + str( au_reci->orden, 8, 0 ) + "," + str( au_reci->cuenta, 10, 0 ) + ", 'S')" + chr( 13 ) + chr( 10 )
else
wque = "mov_ven"
SQLMVen = SQLMVen + "INSERT INTO " + wque + " ([Fecha],[Puesto],[Cuit_che],[Numero],[Descri],[Factura],pagos,[Num_che],[Fec_che],[Banco],[Titular],[Forpago],[Vendedor], [orden]) VALUES ('" + dtoc( xfecha ) + "'," + str( xemprevige, 1, 0 ) ;
+ ",'" + au_reci->cuit_che + "'," + str( xrecibo, 8, 0 ) + ",'" + alltrim( substr( xnombre, 1, 45 ) ) + "'," + str( au_reci->importe, 10, 2 ) + ",0," + str( au_reci->chenro, 8, 0 ) + ",'" + dtoc( au_reci->fecche ) + "','" + substr( au_reci->banco, 1, 15 ) + "','" + alltrim( substr( au_reci->titular, 1, 30 ) ) + "',2,'" + alltrim( xnombreven ) + "'," + str( au_reci->orden, 8, 0 ) + ")" + chr( 13 ) + chr( 10 )
endif
sele au_reci
skip
enddo
if xefectivo <> 0
SQLMVen = SQLMVen + "INSERT INTO Mov_ven ([Fecha],[Puesto],[Numero],[Descri],[Factura],pagos,[Forpago],[Vendedor]) VALUES ('" + dtoc( xfecha ) + "'," + str( xemprevige, 1, 0 ) ;
+ "," + str( xrecibo, 8, 0 ) + ",'" + substr( xnombre, 1, 45 ) + "'," + str( xefectivo, 10, 2 ) + ",0,1,'" + xnombreven + "')" + chr( 13 ) + chr( 10 )
endif
if ximpinteres < 0
if x1impabon > 0 // - ximpdescu
SQLMVen = SQLMVen + "INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO], saldo, saldoafa, InteresCalculado, [observa] ) VALUES (" + str( xfamilia , 8, 0 ) + ", 0, '" + dtoc( xfecha ) ;
+ "', " + str( xrecibo, 8, 0 ) + ", " + str( x1impabon, 10, 2 ) + ", '" + dtoc( xfecha ) + "', '" + dtoc( xfecha ) + "', 1, " + "'N', 0, 0, 0,'" + xobserva + "' )" + chr( 13 ) + chr( 10 )
endif
else
if x1impabon > 0 //- ximpinteres // - ximpdescu
SQLMVen = SQLMVen + "INSERT INTO Pagos ([familia],[Factura],[Fecha],[Recibo],[Importe],[Fecven],[Fecpago],[Puesto],[TIPO], saldo, saldoafa, InteresCalculado, [observa] ) VALUES (" + str( xfamilia , 8, 0 ) + ", 0, '" + dtoc( xfecha ) ;
+ "', " + str( xrecibo, 8, 0 ) + ", " + str( x1impabon, 10, 2 ) + ", '" + dtoc( xfecha ) + "', '" + dtoc( xfecha ) + "', 1, " + "'N', 0, 0, 0,'" + xobserva + "' )" + chr( 13 ) + chr( 10 )
endif
endif
if ximpretiva <> 0
SQLMVen = SQLMVen + "INSERT INTO Compret ([Cliente],[Comproba],[Tipo],[Fecha],[Recibo],[Importe],[Fecpago]) VALUES " + ;
" ( " + str( xfamilia, 8, 0 ) + ", " + str( xcomretiva, 12, 0 ) + ", " + "'IVA'" + ", '" + dtoc( xfecha ) + "', " + str( xrecibo, 8, 0 ) + ", " + str( ximpretiva, 10, 2 ) + ", '" + dtoc( xfecha ) + "')" + chr( 13 ) + chr( 10 )
endif
if ximpretgan <> 0
SQLMVen = SQLMVen + "INSERT INTO Compret ([Cliente],[Comproba],[Tipo],[Fecha],[Recibo],[Importe],[Fecpago]) VALUES " + ;
" ( " + str( xfamilia, 8, 0 ) + ", " + str( xcomretgan, 12, 0 ) + ", " + "'GAN'" + ", '" + dtoc( xfecha ) + "', " + str( xrecibo, 8, 0 ) + ", " + str( ximpretgan, 10, 2 ) + ", '" + dtoc( xfecha ) + "')" + chr( 13 ) + chr( 10 )
endif
if ximpretrg <> 0
SQLMVen = SQLMVen + "INSERT INTO Compret ([Cliente],[Comproba],[Tipo],[Fecha],[Recibo],[Importe],[Fecpago]) VALUES " + ;
" ( " + str( xfamilia, 8, 0 ) + ", " + str( xcomretrg, 12, 0 ) + ", " + "'RG'" + ", '" + dtoc( xfecha ) + "', " + str( xrecibo, 8, 0 ) + ", " + str( ximpretrg, 10, 2 ) + ", '" + dtoc( xfecha ) + "')" + chr( 13 ) + chr( 10 )
endif
if ximpretibr <> 0
SQLMVen = SQLMVen + "INSERT INTO Compret ([Cliente],[Comproba],[Tipo],[Fecha],[Recibo],[Importe],[Fecpago]) VALUES " + ;
" ( " + str( xfamilia, 8, 0 ) + ", " + str( xcomretibr, 12, 0 ) + ", " + "'IBR'" + ", '" + dtoc( xfecha ) + "', " + str( xrecibo, 8, 0 ) + ", " + str( ximpretibr, 10, 2 ) + ", '" + dtoc( xfecha ) + "')" + chr( 13 ) + chr( 10 )
endif
SQLMVen = SQLMVen + "UPDATE Numdoc SET recibo = " + str( xrecibo, 8, 0 ) + ", nroorden = " + str( xorden, 8, 0 ) + " where numero = " + str( xemprevige ) + chr( 13 ) + chr( 10 )
TRY
oCon:Execute( sqlMVen )
oCon:Close() ; Catch oErr
msginfo("Error al grabar el recibo "+sqlmven)
FWrite ( cHande, SQLMVen + chr( 13 ) + chr( 10 )+ oErr )
END TRY
FClose ( cHande )
Los corchetes están porque corrijo las sentencias en sql managment studio, pero reitero los raro es que anda bien sin problemas, hasta ahora detecte que fallo una sola ves (espero).
El problema es como detectar porque falla.
Saludos
Jorge.
Re: Ayuda con SQL
Saludos
La tabla tiene integridad referencial con otras tablas?
Reglas de Triggers
EN algunas ocasiones, aplico:
oBd:EXECUTE("SET FOREIGN_KEY_CHECKS = 0") // Si es MySQL
La tabla tiene integridad referencial con otras tablas?
Reglas de Triggers
EN algunas ocasiones, aplico:
oBd:EXECUTE("SET FOREIGN_KEY_CHECKS = 0") // Si es MySQL
Re: Ayuda con SQL
Jorge
Saludos, sin queren presione submit
Cual gestor de BD estas utilizando
En mi caso todas las sentencias las genero en una variable de texto y las grabo en disco MEMOWRIT("run.sql",cSql)
oDb:Execute(cSql)
Dependiendo de la clase de utilices, podras optener el numero o texto del error, en mi caso uso EAGLE con cError:=oDb:oConnect:oError:GetError()
Si tienes tablas con integridad referencial mediante INNO DB
Podras desactivar la integridad referencial mediante
oDb:EXECUTE("SET FOREIGN_KEY_CHECKS = 0")
oDb:EXECUTE(cSql)
oDb:EXECUTE("SET FOREIGN_KEY_CHECKS =1") // Activar la Integridad
Si algunos colegas requieren que les apoye o capacite con MySQL, estoy a su disposicion mediante video capacitacion, tengo un sistema ERP con MySQL y SQL Server, en _ con integridad, vistas, disparadores, funciones y afines.
Saludos, sin queren presione submit
Cual gestor de BD estas utilizando
En mi caso todas las sentencias las genero en una variable de texto y las grabo en disco MEMOWRIT("run.sql",cSql)
oDb:Execute(cSql)
Dependiendo de la clase de utilices, podras optener el numero o texto del error, en mi caso uso EAGLE con cError:=oDb:oConnect:oError:GetError()
Si tienes tablas con integridad referencial mediante INNO DB
Podras desactivar la integridad referencial mediante
oDb:EXECUTE("SET FOREIGN_KEY_CHECKS = 0")
oDb:EXECUTE(cSql)
oDb:EXECUTE("SET FOREIGN_KEY_CHECKS =1") // Activar la Integridad
Si algunos colegas requieren que les apoye o capacite con MySQL, estoy a su disposicion mediante video capacitacion, tengo un sistema ERP con MySQL y SQL Server, en _ con integridad, vistas, disparadores, funciones y afines.