Aki vai um exemplo do que eu uso, o dbedit passa dois comandos que e coluna e mode.
Código: Selecionar todos
Local xnm, xquant1, xcont, xa, ximp, xq:= .T.
If !arq2(1)
Return
EndIf
Select cadmerc
Set Order to 1
While .t.
xcodigo:= xmater:= ximp:= Space(1)
Telacor("W+","W")
@ 24, 10 clear
@ 24, 13 Say "Digite o Produto! [F3 Consulta!] ESC Retorna"
xproduto:= Space(31)
Telacor("W+/R+,N/W","W")
@ 10, 30, 12, 64 Box "ÚÄ¿³ÙÄÀ³ "
Set Key -2 To f3c
@ 10, 35 Say "[Relat¢rio por Produto]"
@ 11, 32 Get xproduto Picture "@!"
Read
Set Key -2 To
If LastKey() == 27 .Or. xproduto == Space(31)
Close DataBases
Return
EndIf
Select 2
Use cadmater
* Index On DToS(data) + Str(codigo) Tag cod_41 To cdx_004
Index On data Tag cod_47 For RTrim(xproduto) == RTrim(material) To cdx_004
* Index On codigo Tag cod_43 To cdx_004
* Index On Str(codigo) + dtos(data) Tag cod_44 To cdx_004
Set Index To cdx_004, cdx_002
Set Order To "cad_013"
Telacor("W+","W")
beep()
@ 24, 10 Clear
@ 24, 13 Say "Imprimir em [V]idio ou [I]mpressora " Get ximp ;
Picture "@!" Valid ximp $ "VI"
@ 24, 26 Say "V" Color "G+"
@ 24, 37 Say "I" Color "G+"
Read
If (LastKey() == 27)
Return
EndIf
@ 24, 10 clear
Telacor("W+*","W+*")
@ 24, 13 Say "Aguarde..."
Telacor("N/BG,B/G,,,B+/N","W+")
If ximp == "V"
Set Order To "cod_47"
Go Top
Private db[5], dbc[5], xtr[5]
db[1]:= " Mercadoria"
db[2]:= "Entrada"
db[3]:= " Saida"
db[4]:= "Estoque"
db[5]:= " Data"
dbc[1]:= "material"
dbc[2]:= "entrada"
dbc[3]:= "saida"
dbc[4]:= "estoque"
dbc[5]:= "data"
xtr[2]:= "@e 999,999"
xtr[3]:= "@e 999,999"
xtr[4]:= "@e 999,999"
lin:= 5
xa:= 15
@ 24, 10 Say Space(70) Color "W+"
@ 24, 13 Say "Confira os Dados [ -> Alterar -> Deleta] - ESC Sai" Color "W+"
@ 24, 31 Say " A " Color "B+"
@ 24, 45 Say " D " Color "B+"
@ lin, 0 To lin + 3 + xa, 79
@ 7, 0 Say "Ã"
@ 7, 79 Say "´"
dbedit(lin + 1, 1, lin + 3 + xa, 78, dbc, "Arruma2", xtr, db, "ÄÂÄ", ;
" ³ ", "ÄÁÄ")
SetCursor(1)
RestScreen(,,,,save1)
Loop
EndIf
xtent:= xtsaida:= lin:= 0
While data < xdv
Skip
End
If data > xdv1
@ 24,10 Clear
@ 24, 13 Say "NÆo ha Relat¢rio com esta data"
Inkey(4)
Loop
EndIf
Set Console Off
Set Device To Printer
Set Printer To lpt1
Set Printer On
@ lin, 0 Say " "
lin++
@ lin, 10 Say "Relat¢rio de Estoques"
@ lin, 50 Say "Data:"
@ lin, 56 Say Date()
lin+= 2
?? "P"
?? "C!"
?? i21
@ lin, 13 Say "Produto"
@ lin, 35 Say "Entrada"
@ lin, 45 Say "Saida"
@ lin, 55 Say "Estoque"
@ lin, 65 Say "Data"
lin++
@ lin, 00 Say Repl("-",79)
lin++
While data >= xdv
@ lin, 0 Say material
@ lin, 32 Say entrada Picture "@e 999,999,999"
xtent+= entrada
@ lin, 43 Say saida Picture "@e 999,999,999"
xtsaida+= saida
@ lin, 55 Say estoque Picture "@e 999,999,999"
@ lin, 69 Say data
lin++
Skip
If data > xdv1 .Or. Eof()
Exit
EndIF
End
@ lin, 00 Say Repl("-",79)
lin++
@ lin, 43 Say xtent Picture "@e 999,999,999"
@ lin, 55 Say xtsaida Picture "@e 999,999,999"
Eject
?? i11
?? "CB"
?? "P"
Set print To
Set Printer Off
Set Device To Screen
Set Console On
End
**********************************************************
function f3c
tel_a:= SaveScreen(0, 0, 24, 79)
Private cod[2], mer[2], pic[2]
Select cadmerc
Setcolor("N/BG,W+/R")
cod[1]:= "Codigo Mercadoria"
cod[2]:= " Mercadoria"
mer[1]:= "StrZero(CODIGO, 4)"
mer[2]:= "MERCADO"
linx:= 10
xa:= 8
mer1:= {"Strzero(codigo, 4) + ' ³ ' + mercado"}
@ linx, 2 To linx + 3 + xa, 47
@ linx + 2, 2 Say "Ã"
@ linx + 2, 47 Say "´"
setcursor(0)
dbedit(linx + 1, 3, linx + 3 + xa, 46, mer1, .T., .T., cod, "ÄÂÄ", ;
" ³ ", "ÄÁÄ")
setcursor(1)
If (LastKey() == 27)
RestScreen(0, 0, 24, 79, tel_a)
Return .T.
EndIf
xproduto:= mercado
RestScreen(0, 0, 24, 79, tel_a)
Setcolor("W+,B+/BG,,,B+/N")
Return .T.
*****************************
Function Arruma2(modo,coluna)
Private GetList:= {}
xcoluna:= coluna
campo := dbc[coluna]
masca := xtr[coluna]
If modo >= 0 .And. modo <= 3
Return(1)
ElseIf modo == 4
Do Case
Case ((LastKey() == 65 .Or. LastKey() == 97) .And. ((coluna >= 1 .And. coluna <= 5));
.And. coluna != 4)
xd1:= xd:= 1
While .t.
If Rlock()
Exit
EndIf
End
SetCursor(1)
x2:= &campo
xcod:= codigo
If coluna == 1
Set Key -2 To f3b
EndIf
@ Row(), Col() Get &campo Picture (masca) Color "GR+/N"
Read
SetKey(-2,Nil)
x:= RecNo()
x1:= 0
If x2 != &campo
If coluna == 1
Replace codigo With xcodigo
xd:= 0
xd1:= 2
EndIf
If xd == 1
xd1:= 2
EndIf
EndIf
SetCursor(0)
DbCommit()
DbUnLock()
If xd1 == 2
arruma_sa2(xcod)
Go x
EndIf
Return 2
Case ((LastKey() == 68 .Or. LastKey() == 100) .And. (coluna == 1 .Or. coluna == 3))
While .t.
If Rlock()
Exit
EndIf
End
Set Order To "cad_011"
xcod:= codigo
x1:= entrada
x2:= saida
Delete
x:= RecNo() + 1
While ! Eof()
Skip
If codigo == xcod
If RegLock(10)
Replace estoque With xestoque:= ((estoque - x1) + x2)
EndIf
Else
Exit
EndIf
End
Set Order To "cod_47"
Go x
DbCommit()
DbUnLock()
Return(2)
Case LastKey() == 27
Return 0
EndCase
EndIf
Return
*****************************
Function Arruma_sa2()
Local xest
Select cadmater
Set Order To "cad_012"
Seek Str(xcod)
If Found()
xest:= 0
@ 24, 10 Say Space(70) Color "W+"
@ 24, 13 Say "Aguarde Arrumando o Saldo!"
While .t.
If codigo == xcod
If entrada == 0 .And. saida == 0
xest:= estoque
* If RegLock(10)
* Replace estoque With xest
* EndIf
Else
If RegLock(10)
Replace estoque With xest+= (entrada - saida)
EndIf
EndIf
EndIf
Skip
If codigo != xcod .Or. Eof()
Exit
EndIf
End
Select cadmerc
Set Order To 1
Seek xcod
If Found()
If RegLock(10)
Replace estoque With xest
EndIf
EndIf
Select cadmater
Set Order To "cod_47"
@ 24, 10 Say Space(70) Color "W+"
@ 24, 13 Say "Confira os Dados [ -> Alterar -> Deleta] - ESC Sai" Color "W+"
@ 24, 31 Say " A " Color "B+"
@ 24, 45 Say " D " Color "B+"
Else
Return .F.
EndIf
Return .T.