Olá!
Gilson:
Achei estranho este erro. Tem certeza que não é
Data width error? Se for mesmo
Data type error, verifique se o erro não é em outra linha.
prdbas->pc_cncvp:= estoque->fracao
prdbas->pc_cncvp, N, 11, 5 estoque->fracao, N, 10, 3
Em Clipper, quando você cria um campo numérico, 11,5, quer dizer que ele tem 11 bytes no total, sendo 5 inteiros, 5 decimais e mais o ponto decimal, que conta também.
Assim, o campo estoque->fração (N,10,3) tem 10 bytes, sendo 6 inteiros, três decimais e o ponto decimal. Quando você move os dados, a parte inteira do campo fração não cabe na parte inteira do campo pc_cncvp. A solução é aumentar este campo para, no mínimo 13,5. Veja o exemplo:
Código: Selecionar todos
PROCEDURE DbCopy()
// Clipper DbCopy /n/w
Local nFor
SetColor( "B/W, W+/B" )
DbCreate( "Estoque", { { "Markup", "N", 6, 2 }, { "Fracao", "N", 10, 3 } } )
DbCreate( "Prdbas" , { { "Pc_Mark", "N", 8, 3 }, { "Pc_Cncvp", "N", 13, 5 } } )
Use Prdbas Shared New
Use Estoque Shared New
FOR nFor := 1 TO 10
Estoque->( DbAppend() )
Estoque->Markup := 123.45
Estoque->Fracao := 123456.789
NEXT
Estoque->( DbGoTop() )
WHILE Estoque->( ! Eof() )
prdbas->( DbAppend() )
prdbas->pc_mark:= estoque->markup
prdbas->pc_cncvp:= estoque->fracao
Estoque->( DbSkip() )
ENDDO
Prdbas->( DbGoTop(), Browse() )
DbCloseAll()
FErase( "Estoque.Dbf" )
FErase( "Prdbas.Dbf" )
__Quit()
//------------------------------------------------------------------------------
No exemplo acima, se você trocar a linha:
Código: Selecionar todos
DbCreate( "Prdbas" , { { "Pc_Mark", "N", 8, 3 }, { "Pc_Cncvp", "N", 13, 5 } } )
por:
Código: Selecionar todos
DbCreate( "Prdbas" , { { "Pc_Mark", "N", 8, 3 }, { "Pc_Cncvp", "N", 11, 5 } } )
vai ganhar de presente um erro
Data width error.