leandrolinauer escreveu:1 - Gravar os campos: Devemos gravar quando o resultado for vazio NULO ou ESPAÇOS ou equivalentes a cada tipo abaixo?
2 - Bloquear o registro em uso ( tipo dbf = RLOCK/DBUNLOCK)
3 - E para confirmar a gravação dos dados (comit) , eu uso a função abaixo adquirida pela a ajuda aqui no fórum.
Grato a todos.
Um abraço a todos.
vamos por parte
pergunta 1 - se for nulo ou vazio nao grave esquece o campo (no DB defina o PADRAO "null" "0" "auto_increment" "0000-00-00" )
pergunta 2 - relaxa isso não é necessário , o banco de dados se vira com isso
pergunta 3 - mesma resposta da pergunta 2
exemplo de INSERT
cQuery1 :="INSERT INTO PRODUTOS ( "
cQuery2 :=" VALUES ("
cQuery1 += "PRODUTOS.DESPRO, "
cQuery2 += "'" + RTRIM(TIRACENTO(upper(DESPRO))) + "', "
cQuery1 += "PRODUTOS.EAN13, "
cQuery2 += "'" + LTRIM(STR(EAN13)) + "', "
cQuery1 += "PRODUTOS.PROSER, "
cQuery2 += "'" + PROSER + "', "
cQuery1 += "PRODUTOS.CODREF, "
cQuery2 += "'" + RTRIM(CODREF) + "', "
cQuery1 += "PRODUTOS.EXTIPI, "
cQuery2 += "'" + LTRIM(STR(EXTIPI,3,0)) + "', "
cQuery1 += "PRODUTOS.GENERO, "
cQuery2 += "'" + LTRIM(STR(GENERO,2,0)) + "', "
cQuery1 += "PRODUTOS.NCM, "
cQuery2 += "'" + LTRIM(STR(NCM,8,0)) + "', "
cQuery1 += "PRODUTOS.TIPUNI, "
cQuery2 += "'" + TIPUNI + "', "
IF ESTMIN != 0
cQuery1 += "PRODUTOS.ESTMIN, "
cQuery2 += "'" + LTRIM(STR(ESTMIN,6,0)) + "', "
ENDIF
IF ULPRCUS != 0.00
cQuery1 += "PRODUTOS.ULPRCUS, "
cQuery2 += "'" + LTRIM(STR(ULPRCUS,14,2)) + "', "
ENDIF
cQuery1 += "PRODUTOS.DTPRCUS, "
cQuery2 += "'" + Hb_DTOC(DTPRCUS, "YYYY-MM-DD") + "', "
IF SUBTRIB != 0.00
cQuery1 += "PRODUTOS.SUBTRIB, "
cQuery2 += "'" + LTRIM(STR(SUBTRIB,7,2)) + "', "
ENDIF
IF ALIQICMS != 0.00
cQuery1 += "PRODUTOS.ALIQICMS, "
cQuery2 += "'" + LTRIM(STR(ALIQICMS,7,2)) + "', "
ENDIF
IF OUTTRIB != 0.00
cQuery1 += "PRODUTOS.OUTTRIB, "
cQuery2 += "'" + LTRIM(STR(OUTTRIB,7,2)) + "', "
ENDIF
IF CUSREAL != 0.00
cQuery1 += "PRODUTOS.CUSREAL, "
cQuery2 += "'" + LTRIM(STR(CUSREAL,7,2)) + "', "
ENDIF
IF PRECUS != 0.0000
cQuery1 += "PRODUTOS.PRECUS, "
cQuery2 += "'" + LTRIM(STR(PRECUS,14,4)) + "', "
ENDIF
IF FRETE != 0.00
cQuery1 += "PRODUTOS.FRETE, "
cQuery2 += "'" + LTRIM(STR(FRETE,14,2)) + "', "
ENDIF
IF ICMS != 0.00
cQuery1 += "PRODUTOS.ICMS, "
cQuery2 += "'" + LTRIM(STR(ICMS,14,2)) + "', "
ENDIF
IF IPI != 0.00
cQuery1 += "PRODUTOS.IPI, "
cQuery2 += "'" + LTRIM(STR(IPI,14,2)) + "', "
ENDIF
IF OUTROS != 0.00
cQuery1 += "PRODUTOS.OUTROS, "
cQuery2 += "'" + LTRIM(STR(OUTROS,14,2)) + "', "
ENDIF
IF PERLUC != 0.00000
cQuery1 += "PRODUTOS.PERLUC, "
cQuery2 += "'" + LTRIM(STR(PERLUC,7,5)) + "', "
ENDIF
IF PREVEN != 0.0000
cQuery1 += "PRODUTOS.PREVEN, "
cQuery2 += "'" + LTRIM(STR(PREVEN,14,4)) + "', "
ENDIF
cQuery1 += "PRODUTOS.DATALT, "
cQuery2 += "'" + Hb_DTOC(M->DAT_HOJE, "YYYY-MM-DD") + "', "
cQuery1 += "PRODUTOS.USUALT, "
cQuery2 += "'" + RTRIM(M->OPERADOR) + "', "
IF ISS != 0.00
cQuery1 += "PRODUTOS.ISS, "
cQuery2 += "'" + LTRIM(STR(ISS,5,2)) + "', "
ENDIF
IF ! EMPTY(ICMS_REGIM )
cQuery1 += "PRODUTOS.ICMS_REGIM, "
cQuery2 += "'" + ICMS_REGIM + "', "
ENDIF
cQuery1 += "PRODUTOS.ICMS_ST, "
cQuery2 += "'" + ICMS_ST + "', "
cQuery1 += "PRODUTOS.ICMS_ORIGE, "
cQuery2 += "'" + ICMS_ORIGE + "', "
cQuery1 += "PRODUTOS.n_modBC, "
cQuery2 += "'" + STRZERO(n_modBC,1,0) + "', "
cQuery1 += "PRODUTOS.ICMS_CFOP, "
cQuery2 += "'" + STRZERO(ICMS_CFOP,4,0) + "', "
cQuery1 += "PRODUTOS.ICMS_CFOPI, "
cQuery2 += "'" + STRZERO(ICMS_CFOPI,4,0) + "', "
cQuery1 += "PRODUTOS.ICMS_CFOJL, "
cQuery2 += "'" + STRZERO(ICMS_CFOJL,4,0) + "', "
cQuery1 += "PRODUTOS.ICMS_CFOPD, "
cQuery2 += "'" + STRZERO(ICMS_CFOPD,4,0) + "', "
cQuery1 += "PRODUTOS.MAXVEN, "
cQuery2 += "'" + LTRIM(STR(MAXVEN,10,2)) + "', "
cQuery1 += "PRODUTOS.PESO, "
cQuery2 += "'" + LTRIM(STR(PESO,8,3)) + "', "
cQuery1 += "PRODUTOS.q_IPIst, "
cQuery2 += "'" + q_IPIst + "', "
cQuery1 += "PRODUTOS.q_IPItc, "
cQuery2 += "'" + q_IPItc + "', "
cQuery1 += "PRODUTOS.q_IPIpAli, "
cQuery2 += "'" + LTRIM(STR(q_IPIpAli,5,2)) + "', "
cQuery1 += "PRODUTOS.q_IPIvAli, "
cQuery2 += "'" + LTRIM(STR(q_IPIvAli,5,2)) + "', "
cQuery1 += "PRODUTOS.o_cEnc, "
cQuery2 += "'" + o_cEnc + "', "
cQuery1 += "PRODUTOS.q_PISst, "
cQuery2 += "'" + q_PISst + "', "
cQuery1 += "PRODUTOS.q_PIStc, "
cQuery2 += "'" + q_PIStc + "', "
cQuery1 += "PRODUTOS.q_PISpAli, "
cQuery2 += "'" + LTRIM(STR(q_PISpAli,5,2)) + "', "
cQuery1 += "PRODUTOS.q_PISvAli, "
cQuery2 += "'" + LTRIM(STR(q_PISvAli,5,2)) + "', "
cQuery1 += "PRODUTOS.s_COFst, "
cQuery2 += "'" + s_COFst + "', "
cQuery1 += "PRODUTOS.s_COFtc, "
cQuery2 += "'" +s_COFtc + "', "
cQuery1 += "PRODUTOS.s_COFpAli, "
cQuery2 += "'" + LTRIM(STR(s_COFpAli,5,2)) + "', "
cQuery1 += "PRODUTOS.s_COFvAli, "
cQuery2 += "'" + LTRIM(STR(s_COFvAli,5,2)) + "', "
cQuery1 += "PRODUTOS.o_CST, "
cQuery2 += "'" + o_CST + "', "
cQuery1 += "PRODUTOS.CEST, "
cQuery2 += "'" + RTRIM(CEST) + "', "
cQuery1 += "PRODUTOS.FRACIO, "
cQuery2 += "'" + IIF(FRACIO,"1","0") + "', "
cQuery1 += "PRODUTOS.QUEM_BLOQ) "
cQuery2 += "'" + rtrim(M->OPERADOR)+"/"+rtrim(hwg_GetComputerName()+" ["+dtoc(date())+" "+time()+"]") + "')"
::oServer:Execute(cQuery1+cQuery2)
exemplo de UPDATE
cQuery1 :="UPDATE PRODUTOS SET "
IF STRZERO(M->NIV_ACESSO,1,0)$"89"
cQuery1 +="PRODUTOS.DESPRO = '" + RTRIM(TIRACENTO(upper(DESPRO))) + "', "
ENDIF
cQuery1 +="PRODUTOS.EAN13 = '" + LTRIM(STR(EAN13)) + "', "
cQuery1 +="PRODUTOS.PROSER = '" + PROSER + "', "
IF !EMPTY(CODREF)
cQuery1 +="PRODUTOS.CODREF = '" + CODREF + "', "
ENDIF
cQuery1 +="PRODUTOS.EXTIPI = '" + STRZERO(EXTIPI,3,0) + "', "
cQuery1 +="PRODUTOS.GENERO = '" + STRZERO(GENERO,2,0) + "', "
cQuery1 +="PRODUTOS.NCM = '" + STRZERO(NCM,8,0) + "', "
cQuery1 +="PRODUTOS.TIPUNI = '" + TIPUNI + "', "
cQuery1 +="PRODUTOS.ESTMIN = '" + STRZERO(ESTMIN,6,0) + "', "
cQuery1 +="PRODUTOS.ULPRCUS = '" + STRZERO(ULPRCUS,14,2) + "', "
if ! empty(DTPRCUS)
cQuery1 +="PRODUTOS.DTPRCUS = '" + Hb_DTOC(DTPRCUS, "YYYY-MM-DD") + "', "
endif
cQuery1 +="PRODUTOS.SUBTRIB = '" + STRZERO(SUBTRIB,7,2) + "', "
cQuery1 +="PRODUTOS.ALIQICMS = '" + STRZERO(ALIQICMS,7,2) + "', "
cQuery1 +="PRODUTOS.OUTTRIB = '" + STRZERO(OUTTRIB,7,2) + "', "
cQuery1 +="PRODUTOS.CUSREAL = '" + STRZERO(CUSREAL,7,2) + "', "
cQuery1 +="PRODUTOS.PRECUS = '" + STRZERO(PRECUS,14,2) + "', "
cQuery1 +="PRODUTOS.FRETE = '" + STRZERO(FRETE,14,2) + "', "
cQuery1 +="PRODUTOS.ICMS = '" + STRZERO(ICMS,14,2) + "', "
cQuery1 +="PRODUTOS.IPI = '" + STRZERO(IPI,14,2) + "', "
cQuery1 +="PRODUTOS.OUTROS = '" + STRZERO(OUTROS,14,2) + "', "
cQuery1 +="PRODUTOS.PRECUS = '" + STRZERO(PRECUS,14,2) + "', "
cQuery1 +="PRODUTOS.PERLUC = '" + STRZERO(PERLUC,7,5) + "', "
IF STRZERO(M->NIV_ACESSO,1,0)$"5689"
cQuery1 +="PRODUTOS.PREVEN = '" + STRZERO(PREVEN,14,4) + "', "
ENDIF
cQuery1 +="PRODUTOS.DATALT = '" + Hb_DTOC(M->DAT_HOJE, "YYYY-MM-DD") + "', "
cQuery1 +="PRODUTOS.USUALT = '" + M->OPERADOR + "', "
cQuery1 +="PRODUTOS.ISS = '" + STRZERO(ISS,5,2) + "', "
IF STRZERO(M->NIV_ACESSO,1,0)$"89"
cQuery1 +="PRODUTOS.ESTATU = '" + STRZERO(ESTATU,10,3) + "', "
cQuery1 +="PRODUTOS.ESTL02 = '" + STRZERO(ESTL02,10,3) + "', "
endif
cQuery1 +="PRODUTOS.n_modBC = '" + STRZERO(n_modBC,1,0) + "', "
cQuery1 +="PRODUTOS.ICMS_CFOP = '" + STRZERO(ICMS_CFOP,4,0) + "', "
cQuery1 +="PRODUTOS.ICMS_CFOPI = '" + STRZERO(ICMS_CFOPI,4,0) + "', "
cQuery1 +="PRODUTOS.ICMS_CFOJL = '" + STRZERO(ICMS_CFOJL,4,0) + "', "
cQuery1 +="PRODUTOS.ICMS_CFOPD = '" + STRZERO(ICMS_CFOPD,4,0) + "', "
cQuery1 +="PRODUTOS.MAXVEN = '" + STRZERO(MAXVEN,10,2) + "', "
cQuery1 +="PRODUTOS.PESO = '" + STRZERO(PESO,8,3) + "', "
cQuery1 +="PRODUTOS.ICMS_REGIM = '" + ICMS_REGIM + "', "
cQuery1 +="PRODUTOS.ICMS_ST = '" + ICMS_ST + "', "
cQuery1 +="PRODUTOS.ICMS_ORIGE = '" + ICMS_ORIGE + "', "
cQuery1 +="PRODUTOS.q_IPIst = '" + q_IPIst + "', "
cQuery1 +="PRODUTOS.q_IPItc = '" + q_IPItc + "', "
cQuery1 +="PRODUTOS.q_IPIpAli = '" + STRZERO(q_IPIpAli,5,2) + "', "
cQuery1 +="PRODUTOS.q_IPIvAli = '" + STRZERO(q_IPIvAli,5,2) + "', "
if ! empty(o_cEnc)
cQuery1 +="PRODUTOS.o_cEnc = '" + o_cEnc + "', "
else
cQuery1 +="PRODUTOS.o_cEnc = '999', "
endif
cQuery1 +="PRODUTOS.q_PISst = '" + q_PISst + "', "
cQuery1 +="PRODUTOS.q_PIStc = '" + q_PIStc + "', "
cQuery1 +="PRODUTOS.q_PISpAli = '" + STRZERO(q_PISpAli,5,2) + "', "
cQuery1 +="PRODUTOS.q_PISvAli = '" + STRZERO(q_PISvAli,5,2) + "', "
cQuery1 +="PRODUTOS.s_COFst = '" + s_COFst + "', "
cQuery1 +="PRODUTOS.s_COFtc = '" + s_COFtc + "', "
cQuery1 +="PRODUTOS.s_COFpAli = '" + STRZERO(s_COFpAli,5,2) + "', "
cQuery1 +="PRODUTOS.s_COFvAli = '" + STRZERO(s_COFvAli,5,2) + "', "
IF !EMPTY( o_CST)
cQuery1 +="PRODUTOS.o_CST = '" + o_CST + "', "
else
cQuery1 +="PRODUTOS.o_CST = '00', "
ENDIF
IF ! EMPTY(CEST)
cQuery1 +="PRODUTOS.CEST = '" + CEST + "', "
ENDIF
cQuery1 +="PRODUTOS.FRACIO = '" + IIF(FRACIO= .T.,'1', '0') + "', "
cQuery1 +="PRODUTOS.QUEM_BLOQ = '" + rtrim(M->OPERADOR)+"/"+rtrim(hwg_GetComputerName()+" ["+dtoc(date())+" "+time()+"]") + "' "
cQuery1 += "WHERE PRODUTOS_ID = '" + nProdutos_Id + "'"
::oServer:Execute(cQuery1)