Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Mais
Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
Forum Bloger
VFP Brasil
Fox Pro
Aula
Whatsapp
M E N U vfp
Apostila Programacao
Blog Videos No Yotube
Inicio
01-a FLOCK bloquear registro para gravar o registro em Rede
Links Uteis
if flock()
unlock all
wobina=.f.
Visitas
exit contado
Camis
endif
Seguidores
Enddo Seguidores (9)
Seguir
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 1/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
CD e:\ct
CD GETDIR()
IF FILE('7z.exe')
* RUN /n 7z a -t7z back.7z ..\backup
RUN /n 7z a -r &warq *.scx *.sct *.cdx *.pj* *.vc* *.prg *.MNT *.MPX *.dbf *.png *.bmp
CLOSE TABLES all
** COPY FILE &warq TO \ct\backup\&warq
no report
TRANSFORM(Tabela.oCampo,"9.999.99 " )
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 2/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
RELEASE WINDOW wBrowse
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
ENDCASE
Forum Bloger
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 3/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
oWord.Visible = .T.
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
oWord = GetObject(,"word.basic")
Forum Bloger
oWord.FileOpen(SeuArquivoDoc)
oWord.AppMaximize()
oWord.AppShow()
oWord.Insert("Olá mundo")
*
1-G COMO FAZER O MAPA ENTRE DOIS CEPS PELO GOOGLE
DECLARE INTEGER SetForegroundWindow IN user32.dll INTEGER
origem="02727-000"
destino="02728-090"
oIE = CREATEOBJECT("Internetexplorer.application")
oIE.navigate("http://maps.google.com.br/maps?hl=pt-BR&cp=29&gs_id=5&xhr=t&q=from:+"+origem+"+to:+"+de
oIE.Visible = .T.
=SetForegroundWindow(oIE.HWND)
condicao IIf
Mvar=MONTH(DATE())
Mvar=iif(Mvar=1,'Janeiro',Iif(Mvar=2,'Fevereiro',IIF(Mvar=3,'Marco', Iif(Mvar=4,'Abril',IIF(Mvar=5,'M
WAIT WINDOW Mvar TIMEOUT 2
***
Se Existe o diretorio
IF directory("H:\teste")
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 4/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
WAIT WINDOW 'existe' timeout 2
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
ELSE && se nao existir
Forum Bloger
WAIT WINDOW ' nao existe a unidade, ou nao foi mapeada' timeout 4
endif
1-g- Gerar uma planilha em vfp
CLOSE DATABASES
IF !FILE('CLIENTE.DBF')
CREATE TABLE CLIENTE (NUMERO N(4,0),NOME_CLI C(30), ENDERECO C(40), BAIRRO C(20), CIDADE C(30), UF C(
SELECT CLIENTE
INDEX on nome_cli TAG clienteset orde to cliente
FOR I=1 TO 20
INSERT INTO CLIENTE (NUMERO,noME_CLI,ENDERECO) VALUES (I,"CLIENTE "+STR(I), 'RUA ')
ENDFOR
ENDIF
IF !USED("CLIENTE")
USE CLIENTE IN 0 ALIAS CLIENTE SHARED
ENDIF
SELECT CLIENTE
xFinal = RECCOUNT("cliente")
xInicio = 1
WAIT windows "Aguarde, abrindo o excel e montando a Planilia..." NOWAIT NOCLEAR
Oexcel=createobject("Excel.application")
Oexcel.workbooks.add
Oexcel.visible=.t.
x = 1
SELECT cliente
GO TOP
DO WHILE x <= xFinal
IF X = 1
Oexcel.cells(x,1).font.size=10
Oexcel.cells(x,1).font.color=rgb(180,0,0)
Oexcel.cells(x,1).font.bold=.t.
OExcel.Range("B1").Value = 500
Oexcel.cells(x,1).value='Tabela de precos' &&xPedidos
ELSE
Oexcel.cells(x,1).font.size=12
Oexcel.cells(x,1).font.color=rgb(0,0,255)
Oexcel.cells(x,1).font.bold=.f.
Oexcel.cells(x,1).value=cliente.NUMERO
Oexcel.cells(x,2).font.size=12
Oexcel.cells(x,2).font.color=rgb(0,0,255)
Oexcel.cells(x,2).font.bold=.f.
Oexcel.cells(x,2).value=cliente.noME_CLI
Oexcel.cells(x,3).font.size=12
Oexcel.cells(x,3).font.color=rgb(0,0,255)
Oexcel.cells(x,3).font.bold=.f.
Oexcel.cells(x,3).value=cliente.endERECO
ENDIF
SELECT cliente
SKIP
x=x+1
ENDDO
WAIT CLEAR
*****
condicao IIf
Mvar=MONTH(DATE())
Mvar=iif(Mvar=1,'Janeiro',Iif(Mvar=2,'Fevereiro',IIF(Mvar=3,'Marco', Iif(Mvar=4,'Abril',IIF(Mvar=5,'M
WAIT WINDOW Mvar TIMEOUT 2
***
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 5/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
privConexao = Sqlstringconnect(privStrConexao)
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
If privConexao > 0
Forum Bloger
Wait Window 'conectei' Timeout 1
SQLExec(privConexao,'Select * from pacientes ' ,'cur_cat' )
Select cur_cat
Browse Normal
If 6=Messagebox('deseja descontecta',4+32,'perguta')
= SQLDisconnect(privConexao)
Endif
Else
Messagebox( 'Nao foi possivel conectar-se ao Banco de Dados [ondonto], fale com TI !',48,'Atenca
Endif
Return .T.
*Obs nao esqueca de instalar o driver odbc Mysql 3.51
* NO BLOG TEM COMO BAIXAR O odbc 3,51
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 6/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
lnarquivo = FOPEN(m.tabela,1)
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
IF lnarquivo > 0
Forum Bloger
FCLOSE(lnArquivo)
ELSE
RETURN .F.
ENDIF
ENDFUNC
*
SELECT vendedor
SET ORDER TO COD_VEND && COD_VEND
SET MULTILOCKS ON
IF NOT EMPTY(ALIAS())
CURSORSETPROP("buffering",3)
ENDIF
IF reccount() > 0
GO bottom
wnr=INT(VAL(vendedor_.Cod_vend)+1 )
WnR=str(WnR,6)
WnR=STRTRAN(WNR,' ', '0')
ELSE
wnr='000001'
ENDIF
***
**gravar campo memo
lckeyWorkorderDetail = vWorkorderDetail.keyWorkorderDetail
SELECT * ;
FROM vWorkorderDetail ;
WHERE keyWorkorderDetail = lckeyWorkorderDetail ;
INTO CURSOR cWorkorderDetail READWRITE
SELECT cWorkorderDetail
SCATTER MEMO MEMVAR
m.CatOrder = ALLTRIM(ThisForm.txtCatOrder.Value)
SELECT vWorkorderDetail
GATHER MEMO MEMVAR
llTestValue=TABLEUPDATE(.T.)
****
Grid a linha ficar inteira selecionada ao inves de apenas a celula.
Propriedade da GRID HighLightStyle 2
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 7/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Endfunc
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
*Fim de calculo de horas
Forum Bloger
**
Dica ,Tirando os pontos e o traco
WCPF='012.052.418-29'
WCPF=CHRTRAN(WCPF,".", "")
WCPF=CHRTRAN(WCPF,"-", "")
MESSAGEBOX(WCPF)
****pegar dados do xml
CLOSE DATABASES ALL
SET SAFETY off
IF !file('c:\PEDRO\nota.xml')
WAIT WINDOW 'nao encontrei o xml' TIMEOUT 2
RETURN .F.
ENDIF
IF file ('c:\PEDRO\nota.xml')
cfile=FILETOSTR('c:\PEDRO\nota.xml')
cTag=STREXTRACT(cFile,'','',1)
MESSAGEBOX(CTAG,48,'Atencao',1000)
**Pegar so o nome do emitente dentro da arquivo nfe
cTag1=STREXTRACT(cFile,'','',1)
MESSAGEBOX('Emitente '+ CTAG1,48,'Aviso o Emitente',1000)
***aqui vou pegar o endereco do emitente
cTag2=STREXTRACT(cFile,'','',1)
cTag3=STREXTRACT(cFile,'','',1)
endif
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 8/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
ELSE
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
**se nao encontro n=50 para fechar o loop do for next
Forum Bloger
n=50
WAIT WINDOW 'Fim dos 50 itens nfe' TIMEOUT 0.5
EXIT
ENDIF
ENDFOR
BROWSE LAST normal
SELECT tago
COPY TO arq45.txt sdf
MODIFY COMMAND arq45.txt
***Config.fpw
RESOURCE = C:\WINDOWS\TEMP\alteracoes_do_projeto.dbf
**Main.prg***
Close all
Close databases all
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 9/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Close tables all
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
Set Deleted On
Forum Bloger
Set Lock Off
Set Multilocks On
Set Ansi Off
Set Talk Off
Set Safety Off
Set Confirm Off
Set Notify Off
Set Console Off
Set Bell Off
Set Exclusive Off
Set Hours To 24
SET PATH TO Dados
SET DATE TO DMY
Set Date To British
SET CENTURY ON
SET DELETED ON
SET CURRENCY TO 'R$ '
SET POINT TO '.'
SET SEPARATOR TO ','
Set Reprocess To 2 Seconds
SET REPROCESS TO AUTOMATIC
SET REFRESH TO 5
SET EXCLUSIVE OFF
Set Sysmenu To
Set Sysmenu off
Set message on
Set statu bar on
SET CLOCK STATUS
SET DEFAULT TO (ADDBS(JUSTPATH(SYS(16,0))))
SET PATH TO data;forms;progs;reports
_SCREEN .windowstate=2
_SCREEN .CLOSABLE=.T.
_SCREEN.caption='Sitema Versao 25.07 Hoje '+DTOC(DATE())
_screen.Visible = .T.
_screen.icon = 'BRAZIL.ICO'
_screen.FORECOLOR=rgb( 0,0,255)
_screen.backcolor = RGB(255,255,255)
do form main.scx
read events
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 10/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
loop
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
enddo
Forum Bloger
RETURN
ENDFUNC
FUNCTION janela(LI, CI, LF, CF,CTITLE)
if type('cTitle') != 'C'
cTitle = " "
ENDIF
DEFINE WINDOW XY in desktop AT LI,CI SIZE LF,CF title cTitle ;
Font "MS Sans Serif", 8 STYLE "B" float close SYSTEM color rgb(,,,2402,240,240)
MOVE WINDOW xy center
ACTIVATE WINDOW XY
endfunc
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 11/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Gather memvar
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
Select 1
Forum Bloger
Skip
Enddo
SELECT 2
BROWSE LAST
***
*Gerar um txt
CLOSE DATABASES
CREATE table TABELA ( MeuMemo M )
IF FILE('OTESTO.TXT')
DELETE FILE OTESTO.TXT
ENDIF && Gerando arquivo txt
SET TEXTMERGE OFF
TEXT TO cMemo TEXTMERGE NOSHOW
linha 1 CARTAO VISAO 34,50
linha 2 CHEQUE NR.178 73,40
linha 3 DINHEIRO 22,10
linha 4 DINHEIRO 10,11
linha 5 CARTAO VISA 6,50
linha 6 CH BRADESCO 11,10
linha 7 CH ITAU 9,50
linha 8 CH BOSTON 12,22
linha 9 CH.ITAU 11,10
linha 10 CH BRADESCO 22,10
ENDTEXT
MESSAGEBOX( textmerge(cMemo),48,'texto gerado',2000)
INSERT INTO TABELA (MeuMemo) VALUES (cMemo) && browse
*GERO O UM TESTO DO CAMPO MEMO "MEUMEMO" LINHA A LINHA
**NOME DO ARQUIVO GERADO OTESTO.TXT
CREATE CURSOR JULIO (CONTEM C(90),LINHA N (4))
SET MEMOWIDTH TO 126
n=1
VTOTALLINHAS = MEMLINES(TABELA.MEUmemo)
FOR SEQUENCIADOR = 1 TO VTOTALLINHAS
VLINHA = MLINE(TABELA.MEUmemo,SEQUENCIADOR)
INSERT INTO julio (contem,linha) VALUES (vlinha,n)
StrTOfile(TRANSFORM(VLINHA)+CHR(13)+CHR(10),"OTESTO.TXT",.T.)
n=n+1
ENDFOR
* MODIFY COMMAND OTESTO.TXT
DELETE FILE OTESTO.TXT
****
Select JULIO
WVARIAVEL=""
GO 1
WVARIAVEL=ALLTRIM(JULIO.CONTEM)+' '
GO 4
WVARIAVEL=WVARIAVEL+ALLTRIM(JULIO.CONTEM)+' '
GO 7
WVARIAVEL=WVARIAVEL+ALLTRIM(JULIO.CONTEM)+' '
GO 10
WVARIAVEL=WVARIAVEL+ALLTRIM(JULIO.CONTEM)+' '
Select JULIO
WVARIA=""
GO 2
WVARIA=ALLTRIM(JULIO.CONTEM)+' '
GO 5
WVARIA=WVARIA+ALLTRIM(JULIO.CONTEM)+' '
GO 8
WVARIA=WVARIA+ALLTRIM(JULIO.CONTEM)+' '
WAIT WINDOW ' gerando o relatorio' NOWAIT NOCLEAR
Create TABLE Tabla1 (Txt C(78))
Insert Into Tabla1 Values ("Relatorio do Julio colunar "+DTOC(DATE()))
Insert Into Tabla1 Values ("=============================== ")
Insert Into Tabla1 Values (WVARIAVEL)
Insert Into Tabla1 Values (wVARIA)
Insert Into Tabla1 Values ("=============================== ")
Insert Into Tabla1 Values ("EU JULIO fiz este Report sem abrir o VFP, ")
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 12/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Insert Into Tabla1 Values ("Sao Paulo, 26/1/2011 ")
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
Insert Into Tabla1 Values (" ")
Forum Bloger
Insert Into Tabla1 Values ("====================== ")
SELECT tabla1
WAIT CLEAR
Create Report Reporte1 From Tabla1
USE reporte1.frx IN 0
SELECT reporte1
REPLACE fontface with "Courier New", fontsize WITH 14, STYLE WITH "B", fontstyle WITH 1 FOR objtype =
USE IN reporte1
SELECT Tabla1
Report Form Reporte1 Preview Nowait
CLOSE DATABASES all
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 13/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Otherwise
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
Return Null
Forum Bloger
Endcase
strDias = strDias + Padl(Asc(Substr(strCript,2,1))-50,2,[0])
strDias = strDias + Padl(Asc(Substr(strCript,3,1))-50,2,[0])
iDias = Val(strDias ) && Valor inteiro que corresponde a data
dRetorno = dDataBase + iDias
*** Fim - Aqui fasso uma criptografia simpres como exemplo
Return dRetorno
Endfunc
*
*** Fim da rotina cript
wvar=1500
wre=strzero(wvar,8)
MESSAGEBOX(wre)
**00001500
function STRZERO(Var1, Var2, Var3)
Local WVar1
if (PCount() = 3)
WVar1 = Str(Var1, Var2, Var3)
endif
if (PCount() = 2)
WVar1 = Str(Var1, Var2)
endif
if (PCount() = 1)
WVar1 = Str(Var1)
endif
return Replicate("0", Len(WVar1) - Len(LTrim(WVar1))) + LTrim(WVar1)
**
right('000'+this.value,3)
**
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 14/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
CLEAR ALL
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
CLOSE DATABASES ALL
Forum Bloger
SET SAFETY OFF
SET DELETED ON
SELECT * FROM MUSICA WHERE !EMPTY(CANTOR) INTO TABLE CANTOR
*BROWSE
USE
LOCAL wo
c = 0
d = 0
CLOSE DATABASES ALL
USE CANTOR IN 0 ALIAS CANTOR
SELECT CANTOR
INDEX on CANTOR TO ssA
GO TOP IN CANTOR
DO WHILE ( Not Eof( "CANTOR" ) )
wo= CANTOR.CANTOR
SKIP IN CANTOR
DO WHILE ( CANTOR.CANTOR = wo And Not Eof( "CANTOR" ) )
DELETE IN CANTOR
c = c + 1
WAIT WINDOW 'Registros Duplicados Apagados '+ str(c) TIMEOUT 0.05
SKIP IN CANTOR
ENDDO
d = d+1
WAIT WINDOW 'Registros Lidos '+ str(d) TIMEOUT 0.1
ENDDO
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 15/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Criando Stored procedure para apagar dados em nossa tabela tbl_cliente
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
Código:
Forum Bloger
create procedure del_cliente
(IN p_cod int(5) )
Begin
delete from tbl_cliente where cli_id = p_cod;
end;
Vamos apagar alguns dados da nossa tabela tbl_cliente
Código:
Call del_cliente(2);
Call del_cliente(4);
Repare em sua tabela que os clientes com os codigos 2 e 4 foram apagados.
----
Criando Stored procedure para atualizar dados em nossa tabela tbl_cliente
Código:
create procedure update_cliente
(
IN p_cod int,
IN p_nome varchar(60),
IN p_cpf int(5)
)
Begin
update tbl_cliente
set
cli_nome = p_nome,
cli_cpf = p_cpf
where
cli_id = p_cod;
end;
vamos atualizar alguns dados da nossa tabela tbl_cliente
Código:
Call update_cliente(1,'MARIA',99999);
Call update_cliente(3,'SOLANGE',88888);
Note que atualizamos os clientes com codigos 1 e 3.
----
Criando Stored procedure para mostra os dados da nossa tabela tbl_cliente
Obs: Nesse caso voce pode utilizar de parametros ou nao.Caso queira
utilizar parametros a ideia e a mesma para os exemplos acima.
Código:
create procedure mostra_cliente()
Begin
select * from tbl_cliente;
end;
Vamos chamar nossa Stored procedure para mostrar os dados da tabela.
Código:
Call mostra_cliente();
---fim store procedure
***Codigo inicio no teu main.prg
ON SHUTDOWN QUIT
On Error Do errores With Error( ),Message( ),Message(1),Program( ),Lineno( )
Procedure Errores
PARAMETER merror, mess, mess1, mprog, mlineno
nOpc= MESSAGEBOX("Ocorreu un error:"+CHR(13)+CHR(13)+;
"Data/Hora.: "+TTOC(DATETIME())+CHR(13)+;
'Número de error: ' + LTRIM(STR(merror))+CHR(13)+ ;
'Menssage do error: ' + mess+ CHR(13)+ ;
'Línha do código com error: ' + mess1+CHR(13)+ ;
'Número da línha do erro : ' +;
LTRIM(STR(mlineno))+CHR(13)+ ;
'Programa com error: ' + mprog, 2+48)
DO CASE
CASE nOpc = 3 && Anular
CANCEL
CASE nOpc = 4 && Reintentar
RETRY
CASE nOpc = 5 && Ignorar
RETURN .T.
ENDCASE
RETURN
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 16/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 17/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Note que atualizamos os clientes com codigos 1 e 3.
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
----
Forum Bloger
Criando Stored procedure para mostra os dados da nossa tabela tbl_cliente
Obs: Nesse caso voce pode utilizar de parametros ou nao.Caso queira
utilizar parametros a ideia e a mesma para os exemplos acima.
Código:
create procedure mostra_cliente()
Begin
select * from tbl_cliente;
end;
Vamos chamar nossa Stored procedure para mostrar os dados da tabela.
Código:
Call mostra_cliente();
---fim store procedure
***Codigo inicio no teu main.prg
ON SHUTDOWN QUIT
On Error Do errores With Error( ),Message( ),Message(1),Program( ),Lineno( )
Procedure Errores
PARAMETER merror, mess, mess1, mprog, mlineno
nOpc= MESSAGEBOX("Ocorreu un error:"+CHR(13)+CHR(13)+;
"Data/Hora.: "+TTOC(DATETIME())+CHR(13)+;
'Número de error: ' + LTRIM(STR(merror))+CHR(13)+ ;
'Menssage do error: ' + mess+ CHR(13)+ ;
'Línha do código com error: ' + mess1+CHR(13)+ ;
'Número da línha do erro : ' +;
LTRIM(STR(mlineno))+CHR(13)+ ;
'Programa com error: ' + mprog, 2+48)
DO CASE
CASE nOpc = 3 && Anular
CANCEL
CASE nOpc = 4 && Reintentar
RETRY
CASE nOpc = 5 && Ignorar
RETURN .T.
ENDCASE
RETURN
**
wa=diaext(DATE())
wait window wa timeout(2)
?diaext(DATE())
FUNCTION diaext(DATA)
dia=DOW(DATA)
DIMENSION semana[7]
semana[1]="DOMINGO"
semana[2]="SEGUNDA"
semana[3]="TERÇA"
semana[4]="QUARTA"
semana[5]="QUINTA"
semana[6]="SÁBADO"
semana[7]="DOMINGO"
? semana[DIA]
RETURN (semana[DIA])
ENDFUNC
***como fazer uma funcao
Funciton nomedela
Parameters nomeretorno
...Seu codigo
Return(nomeRetorno)
Endfunc
* Exemplo
*Data por extenso
SET DATE BRITISH
SET CENTURY on
DATA1=CTOD('14/11/2012') && *DATA1=DATE()
= DATAEXT(DATA1)
***
FUNCTION DATAEXT()
PARAMETERS data1,alou,DIA,WVALOR
IF EMPTY(data1)
WAIT WINDOW 'vc nao informou a data' TIMEOUT 1
RETURN .f.
ENDIF
WVALOR=''
mes=MONTH(data1 )
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 18/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
DIMENSION DIA(31)
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
DIA(1) = "UM"
Forum Bloger
DIA(2) = "DOIS"
DIA(3) = "TRES"
DIA(4) = "QUATRO"
DIA(5) = "CINCO"
DIA(6) = "SEIS"
DIA(7) = "SETE"
DIA(8) = "OITO"
DIA(9) = "NOVE"
DIA(10) = "DEZ"
DIA(11) = "ONZE"
DIA(12) = "DOZE"
DIA(13) = "TREZE"
DIA(14) = "QUATROZE"
DIA(15) = "QUINZE"
DIA(16) = "DEZESSEIS"
DIA(17) = "DEZESETE"
DIA(18) = "DEZOITO"
DIA(19) = "DEZENOVE"
DIA(20) = "VINTE"
DIA(21) = "VINTE UM"
DIA(22) = "VINTE DOIS"
DIA(23) = "VINTE E TRES"
DIA(24) = "VINTE E QUATRO"
DIA(25) = "VINTE E CINCO"
DIA(26) = "VINTE SEIS"
DIA(27) = "VINTE SETE"
DIA(28) = "VINTE OITO"
DIA(29) = "VINTE NOVE"
DIA(30) = "TRINTA"
DIA(31) = "TRINTA UM"
DIMENSION alou(12)
alou(1) = "Janeiro"
alou(2) = "Fevereiro"
alou(3) = "Marco"
alou(4) = "ABRIL"
alou(5) = "MAIO"
alou(6) = "JUNHO"
alou(7) = "JULHO"
alou(8) = "AGOSTO"
alou(9) = "SETEMBRO"
alou(10) = "OUTUBRO"
alou(11) = "NOVEMBRO"
alou(12) = "DEZEMBRO"
*? DIA(DAY(DATA1))
wvalor=DIA(DAY(DATA1))+" de " +alou(mes)+ " de " +LTRIM(STR(YEAR(data1 )))
WAIT WINDOW WVALOR TIMEOUT 1
RETURN (wvalor)
**
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 19/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
use in caixa
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
endif
Forum Bloger
clear
use caixa
a=0
browse fields data,his :w=funcao1(),deb,cre,sal :w=funcao2()
function funcao1
append blank
Function Funcao2
a=a+deb-cre
replace sal with a
*Fim Livro Caixa
02-memoria do computador
DECLARE GlobalMemoryStatus IN Win32API STRING @MemStat
cResul2 = ""
cResul3 = ""
cEnter2 = CHR(13)
cBuffer = fLong2str( 32 ) + REPLICATE( CHR( 0 ), 28 )
GlobalMemoryStatus( @cBuffer )
nMemoryLoad = fStr2long( SUBSTR( cBuffer, 5, 4 ))
nTotalPhys = fStr2long( SUBSTR( cBuffer, 9, 4 )) / 1024
nAvailPhys = fStr2long( SUBSTR( cBuffer, 13, 4 )) / 1024
nTotalPageFile = fStr2long( SUBSTR( cBuffer, 17, 4 )) / 1024
nAvailPageFile = fStr2long( SUBSTR( cBuffer, 21, 4 )) / 1024
nTotalVirtual = fStr2long( SUBSTR( cBuffer, 25, 4 )) / 1024
nAvailVirtual = fStr2long( SUBSTR( cBuffer, 29, 4 )) / 1024
CLEAR
cResul2 = cResul2 + "Memoria Lida:" + TRANSFORM( nMemoryLoad, "999,999,999" ) + "%" +cEnter2
cResul2 = cResul2 + "Memoria Fisca:" + TRANSFORM( nTotalPhys, "999,999,999" ) + "k" +cEnter2
cResul2 = cResul2 + "Memória Disponível:" + TRANSFORM( nAvailPhys, "999,999,999" ) + "k" +cEnter2
cResul3 = cResul3 + "Arquivo:" + TRANSFORM( nTotalPageFile, "999,999,999" ) + "k" +cEnter2
cResul3 = cResul3 + "Disponivel para arquivo:" + TRANSFORM( nAvailPageFile, "999,999,999" ) + "k" +c
cResul3 = cResul3 + "Total de Memoria Virtual:" + TRANSFORM( nTotalVirtual, "999,999,999" ) + "k" +
cResul3 = cResul3 + "Memoria Virtual disponível:" + TRANSFORM( nAvailVirtual, "999,999,999" ) + "k"
WAIT WINDOW cResul2 TIMEOUT 14
WAIT window cResul3
*********
FUNCTION fLong2str( iLongVal )
LOCAL iBit, cResult
cResult = ""
FOR iBit = 24 TO 0 STEP -8
cResult = CHR( INT( iLongVal / (2^iBit) )) + cResult
iLongVal = MOD( iLongVal, (2^iBit) )
NEXT
RETURN cResult
ENDFUNC && flong2str( iLongVal ).
*********
FUNCTION fStr2long( cLong )
LOCAL iBit, iResult
iResult = 0
FOR iBit = 0 TO 24 STEP 8
iResult = iResult + (ASC(cLong) * (2^iBit))
cLong = RIGHT( cLong, LEN(cLong) - 1 )
NEXT
RETURN iResult
ENDFUNC && fStr2long( cLong ).
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 20/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
nResult = InternetGetConnectedState (@nFlags, 0)
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
**? iif (nResult = 1, "Connected.", "Not connected.")
Forum Bloger
IF nResult = 1
MESSAGEBOX('Conectado')
ELSE
MESSAGEBOX('Desconectado')
ENDIF
****** Firewall barra
DECLARE INTEGER InternetCheckConnection;
IN wininet;
STRING lpszUrl,;
INTEGER dwFlags,;
INTEGER dwReserved
IF InternetCheckConnection("http://yahoo.com.br",1,0) = 0
=MESSAGEBOX("O Computador Não está Conectado a Internet, ou Há um Bloqueio do Firewall ou o Servidor
ENDIF
**
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 21/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
@ l+1,0 say "na linha de cima pular uma linha ou usar uma ?"
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
@ L+1,0 SAY '***'
Forum Bloger
@ l+1,0 say "CAXAMBU EVENTOS"+CHR(18)
@ l+1,0 say "Centro de DIVERSÃO " +CHR(14)
@ l+1,0 say " Rua Azilo,56 VL.JO SAO PAUL0"
?
SET PRINTER to
MODIFY file arq.txt
IF FILE('arq.txt')
RUN /n TYPE arq.TXT > LPT1
ELSE
WAIT WINDOW 'nao encontrei' TIMEOUT 1
endif
ou
**
SYS(2040) onde: 0 = impressao finnalizada
1 = modo preview
2 = imprimindo ou sendo enviado
Report Form cotacao.frx TO PRINTER NODIALOG NOCONSOLE
Do while .t.
if sys(2040) = "0" && verifica se terminou a impressao
exit && sai do loop e continua o resto da rotina
endif
inkey(.5) && espera .5 segundo para nova verificacao
Enddo
**
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 22/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
DEFINE CLASS teste AS FORM
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
CAPTION = "Abrindo uma Pagina na Internet pelo Vfp"
Forum Bloger
BACKCOLOR = RGB(255,255,255)
ICON = ""
DESKTOP = .T.
MINBUTTON = .T.
MAXBUTTON = .T.
top=0
left=0
height=580
width=800
ADD OBJECT oleIE AS OLECONTROL WITH ;
TOP = 0, LEFT = 0, WIDTH = 795, HEIGHT = 575, OLECLASS = "Shell.Explorer.2"
PROCEDURE oleIE.REFRESH
NODEFAULT
ENDPROC
PROCEDURE INIT
THISFORM.oleIE.navigate("http://www.google.com.br")
ENDPROC
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 23/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Messagebox("O arquivo "+cArq+" ainda esta corrompido",48,"ATENÇÃO")
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
Endif
Forum Bloger
nError = 0
lError = .F.
** A linha abaixo usar somente no fox 9
*Set TABLEVALIDATE TO 3
Use (cArq) In 1 Exclusive
If lError
=Aerror(aArrErr)
nError = aArrErr(1,1)
Endif
Endif
Endif
If nError <> 0
Messagebox("Nao foi possivel reparar o arquivo " + cArq, 48,"ATENÇÃO")
Sele (cArq)
Use
nError = 0
Else
Sele (cArq)
Use
Endif
Endif
NEXT
IF nReparos <> 0
Messagebox("Foram reparados "+TRANSFORM(nReparos)+" arquivos")
Endif
*
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 24/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
DEFINE CLASS myhandler AS SESSION
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
PROCEDURE myresize
Forum Bloger
_SCREEN.LOGO.WIDTH = m.largura && alterei aqui
_SCREEN.LOGO.HEIGHT =m.altura && alterei aqui
ENDPROC
ENDDEFINE
CLbusca=UPPER(INPUTBOX("Nome ", "A Pesquisar", "", 0, "", "FOICANCELADO"))
IF CLbusca = "FOICANCELADO"MESSAGEBOX("O botão do InputBox foi pressionado")
ENDIF
09-PISCAR LABEL - EFEITO BLINK
Coloque um objeto do tipo container em seu form com a propriedade BACKSTYLE = 0
Despeje um objeto LABEL e um TIMER no CONTAINER.
Defina a propriedade Interval do objeto TIMER para 300
(este valor você pode alterar conforme sua preferência) e inclua a linha abaixo ao método TIMER :
Código:
This.Parent.label1.Visible = ! This.Parent.label1.Visible
10-VERIFICAR INSCRIÇÃO ESTADUAL
Para verificar a consistência das Inscrições estaduais dos diversos estados, a Secretaria
da Receita disponibilizou uma DLL que faz a verificação com base no ESTADO
e no NUMERO DE I.E. fornecido.
* FUNCAO....: PROINSC()
* OBJETIVO..: Fazer checagem de INSCRIÇÃO ESTADUAL
* RETORNO...: .T. se for correto ou .F. se for errado
* PARÂMETROS: INSCRIÇÃO ESTADUAL (caracter)
* ESTADO (caracter)
FUNCTION PROINSC
Parameters IE, UF
** "limpar" a inscrição estadual para a verificação
IE = STRTRAN(IE,'.','')
IE = STRTRAN(IE,'-','')
IE = STRTRAN(IE,'/','')
IE = STRTRAN(IE,',','')
IE = STRTRAN(IE,'ME','')
IE = STRTRAN(IE,' ','')
IE = STRTRAN(IE,'P','')
IE = ALLTRIM(IE)
Return ConsisteInscricaoEstadual(IE, UF)=0
Para verificar o valor digitado pode-se colocar o código abaixo no VALID do Textbox.
IF NOT PROINSC(THIS.Value,This.Parent.CmbCli_Estado.Value)
= MESSAGEBOX('INSCRIÇÃO ESTADUAL INVÁLIDA !', 48, 'Atenção')
RETURN .F.
ENDIF
RETURN
***
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 25/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
messagebox( JUSTFNAME(m.entrada) ) && teste.dbf
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
***fim
Forum Bloger
*Criar um arquivo txt
a=FCREATE('c:\prfifod\Restas.txt')
FPUTS(a,'txtnomedaempresa')
FPUTS(a,'txtcgc')
FCLOSE(a)
*fin
VARIAVEL1 = FILETOSTR("Restas.txt")
*!* encripta dados
FUNCTION SCRIPTA(cDADO)
LOCAL cCRIP
MCOMP = LEN(cDADO)
FOR J = 1 TO MCOMP
IF J = 1
cCRIP = CHR(256-ASC(SUBSTR(cDADO,J,1)))
ELSE
cCRIP=cCRIP+CHR(256-ASC(SUBSTR(cDADO,J,1)))
ENDIF
NEXT
RETURN(cCRIP)
ENDFUNC
11-VERIFICAR CNPJ
FUNCTION proCNPJ
* Parametro : CNPJ a verificar (C14)
* Retorna : .T. se confirmado
PARAMETERS wcgc
wn1 = VAL(SUBS(wcgc,01,1))
wn2 = VAL(SUBS(wcgc,02,1))
wn3 = VAL(SUBS(wcgc,03,1))
wn4 = VAL(SUBS(wcgc,04,1))
wn5 = VAL(SUBS(wcgc,05,1))
wn6 = VAL(SUBS(wcgc,06,1))
wn7 = VAL(SUBS(wcgc,07,1))
wn8 = VAL(SUBS(wcgc,08,1))
wn9 = VAL(SUBS(wcgc,09,1))
wn10 = VAL(SUBS(wcgc,10,1))
wn11 = VAL(SUBS(wcgc,11,1))
wn12 = VAL(SUBS(wcgc,12,1))
wn13 = VAL(SUBS(wcgc,13,1))
wn14 = VAL(SUBS(wcgc,14,1))
* CALCULO DO 13o ALGARISMO
soma1 = wn1*5+wn2*4+wn3*3+wn4*2+wn5*9+wn6*8+wn7*7+wn8*6+wn9*5+wn10*4+wn11*3+wn12*2
dig1 = 11 - MOD(soma1,11)
IF dig1 = 10 .OR. dig1 = 11
dig1 = 0
ENDIF
IF dig1 <> wn13
RETURN .F.
ENDIF
* CALCULO DO 14o ALGARISMO
soma2 = wn1*6+wn2*5+wn3*4+wn4*3+wn5*2+wn6*9+wn7*8+wn8*7+wn9*6+wn10*5+wn11*4+wn12*3+
wn13*2
dig2 = 11 - MOD(soma2,11)
IF dig2 = 10 .OR. dig2 = 11
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 26/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
dig2 = 0
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
ENDIF
Forum Bloger
IF dig2 <> wn14
RETURN .F.
ENDIF
RETURN .T.
12-VERIFICAR CPF
FUNCTION proCPF
* Parametro : CPF a verificar (C11)
* Retorna : .T. se confirmado
PARAMETERS wcpf
wn1 = VAL(SUBS(wcpf,01,1))
wn2 = VAL(SUBS(wcpf,02,1))
wn3 = VAL(SUBS(wcpf,03,1))
wn4 = VAL(SUBS(wcpf,04,1))
wn5 = VAL(SUBS(wcpf,05,1))
wn6 = VAL(SUBS(wcpf,06,1))
wn7 = VAL(SUBS(wcpf,07,1))
wn8 = VAL(SUBS(wcpf,08,1))
wn9 = VAL(SUBS(wcpf,09,1))
wn10 = VAL(SUBS(wcpf,10,1))
wn11 = VAL(SUBS(wcpf,11,1))
* CALCULO DO 1o digito
* --------------------
soma1 = wn1*10+wn2*9+wn3*8+wn4*7+wn5*6+wn6*5+wn7*4+wn8*3+wn9*2
dig1 = 11 - MOD(soma1,11)
IF dig1 = 10 .OR. dig1 = 11
dig1 = 0
ENDIF
IF dig1 <> wn10
RETURN .F.
ENDIF
* CALCULO DO 2o digito
soma2 = wn1*11+wn2*10+wn3*9+wn4*8+wn5*7+wn6*6+wn7*5+wn8*4+wn9*3+wn10*2
dig2 = 11 - MOD(soma2,11)
IF dig2 = 10 .OR. dig2 = 11
dig2 = 0
ENDIF
IF dig2 <> wn11
RETURN .F.
ENDIF
RETURN .T.
ENDFUNC
*
13-SABER SE UMA VARIÁVEL EXISTE
Use a função TYPE() :
IF TYPE("Var")
=MessageBox("Variável Existe",0,"")
ENDIF
16-Exportar
copy to nome_do_arquivo.xls ou txt type xls ou txt
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 27/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 28/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
LOCAL lcOldCaption
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
lcOldCaption = _screen.Caption
Forum Bloger
_screen.Caption = SYS(3)
LOCAL lnhwnd
DECLARE INTEGER FindWindow IN Win32API STRING lpClassName, STRING lpWindowName
DECLARE INTEGER BringWindowToTop IN Win32API INTEGER HWND
DECLARE INTEGER SendMessage IN Win32API INTEGER HWND, INTEGER Msg, INTEGER WParam, INTEGER LPARAM
lnhwnd = findwindow( 0, lcOldCaption)
_screen.Caption = lcOldCaption
IF lnhwnd > 0
bringwindowtotop(lnhwnd) && Mandar la ventana de la aplicación al frente
sendmessage(lnhwnd, 274, 61488, 0) && Maximizar la ventana de la aplicación
RETURN .F.
ENDIF
RETURN .T.
***
Ou
Local lnWinHandle
Declare Integer FindWindow In Win32API Integer, String
lnWinHandle = FindWindow( 0, 'Nome da Tela do seu programa' )
If lnWinHandle # 0
=Messagebox( "O aplicativo já está sendo executado!",16,'Nome da Tela do seu programa' )
clear events
QUIT
Endif
IF NOT DIRECTORY('c:\TEMP\')
MKDIR ('c:\TEMP\')
ELSE
WAIT WINDOW 'PASTA JA EXISTE' TIMEOUT 1
ENDIF
ou então
Código:
LOCAL loForm
FOR EACH loForm IN _SCREEN.FORM
loForm.RELEASE()
NEXT
***
DEFINIR PROPRIEDADES DE VÁRIOS OBJETOS DE uma SÓ VEZ
FOR EACH Objeto in Thisform.ObjectsIf Objeto.BaseClass=="Label" Then
Objeto.Left=Objeto.Left+10EndifNEXT
******
24-OBTER O IP LOCAL DA MÁQUINA
oSocket = CreateObject("MSWinsock.Winsock")
? oSocket.LocalIP
******ou
Veja tambem o comando SYS(0)
ELE traz o nome da maquina e o usuario logado
*ou
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 29/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Public usuario
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
declare integer GetUserName in advapi32 String@, Integer@ && identifica usuario logado no computador
Forum Bloger
lcnomeusuario = replicate(chr(0),255)
lres = getusername(@lcnomeusuario,255)
if lres # 0 then
usuario = left(lcnomeusuario,at(chr(0),lcnomeusuario)-1)
***aqui o seu textbox de usuario
* thisform.text1.value = left(lcnomeusuario,at(chr(0),lcnomeusuario)-1)
endif
wait windo usuario timeout 3
24-A abri
oShell = Createobject("Shell.Application")
oShell.Open('C:\arquiv~1\TeamViewer\Version7\teamViewer.exe ')
WAIT WINDOW 'aguarde ' TIMEOUT 3
26A-Label na screen
ON SHUTDOWN QUIT
ON KEY LABEL F2 QUIT
_SCREEN.WindowState = 2
_SCREEN.BackColor = RGB(255,255,255)
_SCREEN.Caption='TESTE DE SISTEMA F2 SAIR '
_screen.AddObject("lblTeste","label")
_screen.lblTeste.top = 280
_screen.lblTeste.left = 80
_screen.lblTeste.AutoSize = .t.
_screen.lblTeste.caption = "Site http://teste.com/ TEL.nome-11-99999986"
_screen.lblTeste.Visible = .T.
_screen.lblTeste.BackStyle = 0
_screen.lblTeste.fontbold = .t.
_screen.lbLTESTE.FontSize = 8
_screen.lbLTESTE.forecolor =rgb(0,0,255)
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 30/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
30-SABER SE PROGRAMA ESTA SENDO EXECUTADO A PARTIR DO EXE OU NO PROJETO
Forum Bloger
IF VERSION(2) = 0 && RunTime
MESSAGEBOX("EXECUTÁVEL")
ELSE
MESSAGEBOX("DESENVOLVIMENTO")
ENDIF
tcserver = "\\ServidorNt"
_cTextBat = GETENV("TEMP")+"\"+SUBSTR(SYS(2015), 3, 8)+".bat"
_cTextShell = "NET TIME "+tcserver+" /SET /Y"
STRTOFILE(_cTextShell, _cTextBat)
DECLARE LONG WinExec;
IN KERNEL32;
STRING lpCmdLine, LONG nCmdShow
winexec(_cTextBat, 0)
=INKEY(.2, "H")
Outro modo interessante, agora usando a função SYS(18), que retorna o campo em que se estava:
Código:
ON KEY LABEL ENTER do teste
USE clientes
BROWSE
ON KEY LABEL ENTER
RETURN
PROCEDURE teste
MESSAGEBOX("Campo selecionado :" + SYS(18))
KEYBOARD '{CTRL+W}'
ENDPROC
Outro modo interessante, agora usando a função SYS(18), que retorna o campo em que se estava:
Código:
ON KEY LABEL ENTER do teste
USE clientes
BROWSE
ON KEY LABEL ENTER
RETURN
PROCEDURE teste
MESSAGEBOX("Campo selecionado :" + SYS(18))
KEYBOARD '{CTRL+W}'
ENDPROC
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 31/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
ele seja fechado, basta se colocar NODEFAULT, que o Form volta à execução normal.
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
Para testar, coloque no evento QueryUnload do seu form :
Forum Bloger
Código:
IF MESSAGEBOX("Deseja encerrar ?",32+4,"Unload") <> 6 && Sim
NODEFAULT
ENDIF
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 32/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
SKIP IN R1
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
DO WHILE ( R1.CIDADE+R1.UF = wo And Not Eof( "R1" ) )
Forum Bloger
DELETE IN R1
c = c + 1
@05,10 say 'Registros Duplicados Apagados '+ str(c)
SKIP IN R1
ENDDO
d = d+1
@10,10 say 'Registros Lidos '+ str(d)
ENDDO
BROWSE NORMAL LAST
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 33/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
39=) Converter numero em caracter sem perder o valor
Forum Bloger
wr=43170557096
y=Ferrari(wr)
WAIT WINDOW AT 25,35 y +1 TIMEOUT 2
FUNCTION Ferrari
parameters onumero
alltrim(str(onumero,100))
return(onumero)
***Funciton nomedela
Parameters nomeretorno
...Seu codigo
Return(nomeRetorno)
Endfunc
***Um exemplo
CLEAR
store 0 to A,B,C
DO PROCEDURE1 WITH A,B,C
? A+B+C
PROCEDURE PROCEDURE1
PARAMETERS A,B,C
A=90
B=90
C=90
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 34/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
SET NOTIFY off
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
SET SAFETY OFF
Forum Bloger
APRINTERS(gaprinters, 1)CREATE CURSOR imprs (caminho c(50), porta c(50), nomeimp c(50), COMMEN c(50))
SELECT imprs
GO TOP*aqui o browse e so pra voce ver depos exluir alinha browse
BROWSE NORMAL NODELETE TITLE ' Sair'Declare Integer GetDefaultPrinter In winspool.drv String @pszBuff
nBufsize = 250
cPrinter = Replicate(Chr(0), nBufsize)
= GetDefaultPrinter(@cPrinter, @nBufsize)cPrinter = Substr(cPrinter, 1, At(Chr(0),cPrinter)-1)Select
Select impbuscaPublic impdefaut
impdefault = impbusca.nomeimp
MESSAGEBOX('a impressora padrao é:'+CHR(13)+impdefault,48,'aviso')
** primeira opcao
SET PRINTER TO NAME GETPRINTER()
**ou nomeservidornome da impressora
SET PRINTER TO NAME &impdefault
REPORT FORM nomedoseureport TO PRINTER console
**
**eject
l=0
SET CONSOLE OFF
SET ALTERNATE TO C:\temp\temp.txt
SET ALTERNATE ON
SET PRINTER TO &impressora
SET DEVICE TO PRINTER
SET PRINTER FONT 'DRAFT 10cpi',10
???CHR(27)+"C"+CHR(32)
@ l,1 say campo
l=l+2
@ l,1 say " "
EJECT
SET ALTERNATE OFF
SET ALTERNATE TO
SET PRINTER TO
SET DEVICE TO SCREEN
SET CONSOLE ON
***
sobre array
Para você criar um array:
Código:
DIMENSION LNEmpr[1]
Agora o array pode ser redimensionada ou criada após o seu SELECT
Código:
SELECT.....o seu código
DIMENSION LNEmpr[RECCOUNT()]
Use o comando FOR para o preenchimento da mesma.
Código:
FOR lnX = 1 to RECCOUNT()
LNEmpr[lnX]
NEXT
Código:
DIMENSION laTeste[1]
laTeste[1] = "Ops."
MESSAGEBOX(laTeste[1])
DIMENSION laTeste[4]
MESSAGEBOX(laTeste[1])
***
39-) exportar dbf para xls
CLOSE DATABASES all
SET SAFETY OFF
CREATE TABLE produto ( codigo n(6), grupo n(3), subgrupo n(3), descr c(30), preco n(10,2))
n=1
wdes='Produto '
FOR I = 1 TO 10
INSERT INTO produto values(n,n,n,wdes+STR(n),n)
n=n+1
NEXT
SELECT produto
copy to nomearq type xls
***ou
copy to nomearq2 type xl5
DECLARE INTEGER ShellExecute IN SHELL32.DLL INTEGER, STRING CDIR, STRING CFILE, ;
STRING , STRING, INTEGER
cArqDoc=getfile('xls','Selecione o arquivo','SelecionE')
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 35/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
If File(cArqDoc)
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
*p/ imprimr arq. "print" no lugar do Open,p/imprimir direto
Forum Bloger
*O Open serve para abrir o doc
ShellExecute(0, "Open", cArqDoc,"", Fullpath(""),0)
Else
Wait Window ' O arquivo nao esta na pasta!! ' Timeout 2
Endif
****
*ou simplesmente
use suatabela
copy to nomearq type xls
ou
copy to nomearq type xl5
**O processo inverso importar xls para um tabela ou cursor
CLOSE DATABASES all
*Então você cria 1 cursor temporario correspondente a tabela, por exemplo,
CREATE TABLE cursorprod ( codigo n(6), grupo n(3), subgrupo n(3), descr c(30), preco n(10,2))
*Agora para puxar os dados do arquivo XLS para dentro desta tabela temporária que criamos:
sele cursorProd
append from nomearq.xls TYPE XLS && xl5 para o nomearq2
BROWSE**
Baixe o arquivo com os fontes
***
Agora codigo para pegar memo no arquivo e transforma em Excel
******
Create Cursor test (mField m)
m.mField = '1234567' + Chr(13) + 'Erik Gomez' + Chr(13)+;
'Memo to Excel'
Insert Into test From Memvar
lnLine = Alines(laMemo,test.mField,.T.)
loExcel = Createobject('Excel.Application')
loWrkBk = loExcel.Workbooks.Add
loWrkSheet = loWrkBk.Worksheets(1)
For lnX = 1 To lnLine
lcCell = 'A' + Alltrim(Str(lnX))
loWrkSheet.Range(lcCell) = laMemo[lnX]
Next
loWrkBk.SaveAs('c:\PEDRO\MOTO\test.xls')
loWrkBk.Close
loExcel.Quit
loWrkSheet = .Null.
loWrkBk = .Null.
loExcel = .Null.fonte
http://www.foxite.com/archives/can-i-export-memo-fields-content-to-excel-0000021258.htm
ou
CLOSE DATABASES all
SET SAFETY OFF && Gero o Cursor TEst e insero 10 registros
Create Cursor test (registro c(4), desenho c(4), nomes c(15),mField m)
m.mField = '1234567' + Chr(13) + 'Erik Gomez' + Chr(13)+'Memo to Excel'
FOR i = 1 TO 10
Insert Into test values(STR(i,4),STR(i,4),'Firma '+STR(i,4), m.mField)
NEXT
SELECT registro, desenho,Nomes, Left(ALLTRIM(mfield),120) as OBS FROM test INTO CURSOR auxcli
*Path \pedro\moto mude para o seu path
copy to c:\pedro\moto\infocli.xls type xl5
***aqui vou abrir o excel para pegar sua planilha, infocli.xls
DECLARE INTEGER ShellExecute IN SHELL32.DLL INTEGER, STRING CDIR, STRING CFILE, ;
STRING , STRING, INTEGER
cArqDoc=getfile('xls','Escolha Xls','Selecione')
If File(cArqDoc)
*p/ imprimr arq. "print" no lugar do open,p/imprimir direto
ShellExecute(0, "Open", cArqDoc,"", Fullpath(""),0)
Else
Wait Window ' O arquivo nao esta na pasta!! ' Timeout 2
Endif
**
ou
CLOSE DATABASES all
SET SAFETY OFF && Gero o Cursor TEst e insero 10 registros
Create Cursor test (registro c(4), desenho c(4), nomes c(15),mField m)
m.mField = '1234567' + Chr(13) + 'Erik Gomez' + Chr(13)+'Memo to Excel'
FOR i = 1 TO 10
Insert Into test values(STR(i,4),STR(i,4),'Firma '+STR(i,4), m.mField)
NEXT
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 36/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
SELECT registro,desenho,Nomes, Left(RTRIM(mfield),120) as OBS FROM test INTO CURSOR auxcli
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
*** BROWSE normal && Gerei o cursor auxcli ,,,,,,para pegar obs.
Forum Bloger
m.contador=1
WAIT WINDOW 'Gerando Planilha e Abrindo o Exce l' NOWAIT
tmpsheet = GETOBJECT('','excel.sheet')
xlapp = tmpsheet.APPLICATION
xlapp.VISIBLE = .T.
xlapp.workbooks.ADD()
xlsheet = xlapp.activesheet
***nome das celulas
xlsheet.cells(1,1).VALUE = "Registro"
xlsheet.cells(1,2).VALUE = "Desenho"
xlsheet.cells(1,3).VALUE = "Clientes"
xlsheet.cells(1,4).VALUE = "OBS"
SCAN
xlsheet.cells(M.contador+1,1).VALUE=auxcli.registro
xlsheet.cells(M.contador+1,2).VALUE=auxcli.desenho
xlsheet.cells(M.contador+1,3).VALUE=auxcli.nomes
xlsheet.cells(M.contador+1,4).VALUE=auxcli.obs
m.contador=M.contador+1
ENDSCAN
WAIT WINDOW 'Veja a Barra de Tarefas Windows Excel aberto ' TIMEOUT 2
WAIT CLEAR
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 37/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
SELECT [origem.]campo1[, campo2[, ...]
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
FROM expressãodetabela
Forum Bloger
Consulta anexação de um único registro:
INSERT INTO destino [(campo1[, campo2[, ...]])]
VALUES (valor1[, valor2[, ...])
A instrução INSERT INTO tem as partes abaixo:
Parte Descrição
destino O nome da tabela ou consulta em que os registros devem ser anexados.
bancodedadosexterno O caminho para um banco de dados externo. Para uma descrição do
caminho, consulte a cláusula IN.
origem O nome da tabela ou consulta de onde os dados devem ser copiados.
campo1, campo2 Os nomes dos campos aos quais os dados devem ser anexados, se
estiverem após um argumento destino ou os nomes dos campos dos quais
se deve obter os dados, se estiverem após um argumento origem.
expressãodetabela O nome da tabela ou tabelas das quais registros são inseridos. Este
argumento pode ser um único nome de tabela ou uma combinação
resultante de uma operação INNER JOIN, LEFT JOIN ou RIGHT JOIN
Select cod,hr_inicio, hr_final,ctg_cod,ctg_data From Horas, Cadctpg WHERE cod=ctg_cod INTO CURSOR tes
ou de uma consulta gravada.
valor1, valor2 Os valores para inserir em campos específicos do novo registro. Cada valor
é inserido no campo que corresponde à posição do valor na lista: Valor1 é
inserido no campo1 do novo registro, valor2 no campo2 e assim por
diante. Você deve separar os valores com uma vírgula e colocar os
campos de textos entre aspas (" ").
Declaração UPDATE
Cria uma consulta atualização que altera os valores dos campos em uma tabela especificada com base em
Sintaxe
UPDATE tabela
SET valornovo
WHERE critério;
A instrução UPDATE tem as partes abaixo:
Parte Descrição
tabela O nome da tabela cujos os dados você quer modificar.
valornovo Uma expressão que determina o valor a ser inserido em um campo específico nos
registros atualizados.
critério Uma expressão que determina quais registros devem ser atualizados. Só os registros
que satisfazem a expressão são atualizados.
Comentários
UPDATE é especialmente útil quando você quer alterar registros ou quando os registros que você quer
UPDATE Pedidos SET ValorPedido = ValorPedido * 1.1, Frete = Frete * 1.03
WHERE PaísEmbarque = 'RU';
UPDATE não gera um conjunto de resultados. Se você quiser saber quais resultados serão alterados, exa
Exemplo de instrução UPDATE
Esse exemplo muda os valores no campo "RelatórioPara" para 5 para todos os registros de funcionários
UPDATE Funcionários SET RelatórioPara = 5 WHERE RelatórioPara = 2;
Esse exemplo aumenta o "PreçoUnit" de todos os produtos não suspensos do fornecedor 8 em 10 porcento.
UPDATE Produtos SET PreçoUnit = PreçoUnit * 1.1
WHERE FornecedorID = 8 AND Suspenso = No;
Amarzenando todos os dados de uma tabela num cursor, para leitura:
Código:SELECT * FROM nomeTabela INTO CURSOR nomeCursor
- Amarzenando todos os dados de uma tabela num cursor, para escrita:
Código:SELECT * FROM nomeTabela INTO CURSOR nomeCursor READWRITE
- Amarzenando alguns os dados de uma tabela num cursor, para leitura:
Código:SELECT campo1, campo2, campo3 FROM nomeTabela INTO CURSOR nomeCursor
- Amarzenando alguns os dados de uma tabela num cursor, para escrita:
Código:SELECT campo1, campo2, campo3 FROM nomeTabela INTO CURSOR nomeCursor READWRITE- No caso de tab
Código:SELECT TOP 100 campo1, campo2 FROM nomeTabela
Busca entre as duas tabelas, o campo RE que tem uma tabela, e que não tem na outra
sele a.re,a.nome from cadfunc a where a.re not in (select b.re from cadvt b)
Select RE from TABELA1 where RE not in (select RE from TABELA2) ****CodigoClose Databases
Set Safety Off
Create Table teste1( codigo c(10) , descricao c(40), preco N(10,2))
wcod =1
wdesc ='Produto '
valor =1
Select teste1
*** Gerando 1 arquivo com 15000 registros.....
For i = 1 To 15000
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 38/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Insert Into teste1 (codigo,descricao,preco) Values ( Alltrim(Str(wcod,6)), wdesc+Str(wcod), valor)
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
wcod=wcod+1
Forum Bloger
valor=valor+1
Next
Use In teste1 && fechei o arquivo
*******
Create Table propdv( codpro c(10) , despro c(40), prepro N(10,2))
** Inserindo 15 mil registro de uma vez, so no arq. Propdv
Insert into propdv (codpro, despro, prepro) select codigo, descricao, preco FROM teste1
BROWSE normal
USE IN teste1
**Fazendo agora de outra forma com o comando scan se o registro for maior ke 14500
Create Table propdv( codpro c(10) , despro c(40), prepro N(10,2))
Sele 1
Use teste1
Go Top
If Not Eof()
Scan
Store codigo To cod
Store descricao To des
Store preco To pre
IF RECNO() >=14500
Insert Into propdv (codpro,despro,prepro) Values (cod,des,pre)
endif
ENDSCAN
Else
Wait Window 'nao tem registros para esta operacao' Timeout 1
Endif
Select propdv
BROWSE normal
USE IN propdv**Configuracao do seu video 800x 600 no vfp
veja como configurar no pRG .PRG PRINCIPAL NO seu projeto na aba code
no seu programa start na aba code do seu prrojeto
apos esta linha
codigo
***
IF SYSMETRIC(1) = 800 AND SYSMETRIC(2) = 600
_screen.WindowState = 2
WAIT WINDOW 'sua Resolucao de video é 800 x 600' time 1
ENDIF
IF SYSMETRIC(1) = 1024 AND SYSMETRIC(2) = 768
_screen.WindowState = 2
WAIT WINDOW AT 20,45 'Sua Resolucao de video é 1024 x 768'
ENDIF
IF SYSMETRIC(1) = 1280 AND SYSMETRIC(2) = 800
_screen.WindowState = 2
WAIT WINDOW AT 25,25 'A Resolucao de video é 1280 x 800'
ENDIFou
codigo
DO case
CASE SYSMETRIC(1)=800 AND SYSMETRIC(2)=600
_screen.WindowState = 2
WAIT WINDOW 'sua Resolucao de video é 800 x 600' time 1
CASE SYSMETRIC(1)=1024 AND SYSMETRIC(2)=768
_screen.WindowState = 2
WAIT WINDOW AT 20,45 'Sua Resolucao de video é 1024 x 768'
CASE SYSMETRIC(1)=1280 AND SYSMETRIC(2)=800
_screen.WindowState = 2
WAIT WINDOW AT 25,25 'A Resolucao de video é 1280 x 800'
ENDDO
*
on shutdow quit
99**dbf em html
CLOSE ALL
IF NOT FILE('FMOVEN.DBF')
CREATE TABLE FMOVEN(NNOTA C(6),OBS C(20), FORNEC C(45), VALOR N(12,2),EMISSAO D(8),VALOR1 C(14))
INSERT INTO FMOVEN VALUES('000001','SEM MOVIMENTO','EMPRESA TESTE 1',520,DATE(),'520,00' )
INSERT INTO FMOVEN VALUES('000001','SEM MOVIMENTO','EMPRESA TESTE 2',520.12,DATE(),'510,12' )
INSERT INTO FMOVEN VALUES('000001','SEM MOVIMENTO','EMPRESA TESTE 2',2510.12,DATE(),'2.510,12' )
use
ENDIF
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 39/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
SELECT 0
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
USE fmoven Shared
Forum Bloger
***Crio a tabela com o valor e caracter
CREATE TABLE teste(NNOTA C(6),OBS C(20), FORNEC C(45), VALOR c(14),EMISSAO D(8))
SELECT teste && na linha abaixo pego fmoven insiro na tabela, teste com o valor em caracter
INSERT INTO teste (nnota,obs,fornec,valor,emissao) SELECT nnota,obs,fornec,TRansform(valor,'99,999,99
SELECT teste
go top
SET POINT TO ","
SET DATE FRENCH
SET CENTURY ON
SET DECIMALS TO 2
SET SYSFORMATS ON
LOCAL obj AS OBJECT
LOCAL arquivo AS STRING
m.obj = NEWOBJECT("datatohtml")
m.arquivo = m.obj.tabletohtml("teste")
m.obj.shell_exec(m.arquivo)
m.obj = NULL
USE IN SELECT("teste")
***********
DEFINE CLASS datatohtml AS CUSTOM
*!* Converte um SELECT para HTML
FUNCTION selecttohtml AS STRING
LPARAMETERS cselect AS STRING, caminhoarquivo AS STRING
*!*
LOCAL cabecalho AS STRING
LOCAL rodapeh AS STRING
LOCAL conteudo AS STRING
LOCAL nometabela AS STRING
LOCAL totalcampos AS INTEGER
LOCAL contador AS INTEGER
LOCAL nomecursor AS STRING
LOCAL nomecoluna AS STRING
LOCAL cor AS STRING
*!*
IF (VARTYPE(m.cselect)!="C") THEN
RETURN ""
ENDIF
*!* Caminho onde o arquivo será armazenado (Informar a extensão do arquivo!)
IF (VARTYPE(m.caminhoarquivo)!="C") THEN
m.caminhoarquivo = SYS(5)+CURDIR() + SYS(2015)+".html"
ENDIF
*!*
m.nometabela = ALLTRIM(GETWORDNUM(STREXTRACT(UPPER(cselect),"FROM"),1))
m.nomecursor = SYS(2015)
*!*
IF !USED(m.nometabela) THEN
RETURN ""
ENDIF
*!*
m.cabecalho = ""
m.rodapeh = "
"
m.totalcampos = FCOUNT(m.nometabela)
m.conteudo = ""
*!*
m.conteudo = m.conteudo + ""
FOR m.contador=1 TO m.totalcampos
m.conteudo = m.conteudo + []+FIELD(m.contador)+""
ENDFOR
m.conteudo = m.conteudo + ""
*!*
EXECscript(m.cselect+" INTO CURSOR "+m.nomecursor)
*!*
IF (RECCOUNT(m.nomecursor)>0) THEN
SELECT(m.nomecursor)
SCAN
IF (RECNO()%2!=0) THEN
m.cor = "#EAF1FF"
ELSE
m.cor = "#DFEAFF"
ENDIF
m.conteudo = m.conteudo + ""
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 40/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
FOR m.contador=1 TO m.totalcampos
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
m.nomecoluna = FIELD(m.contador)
Forum Bloger
m.conteudo = m.conteudo + []+TRANSFORM(&nomecoluna)+""
ENDFOR
m.conteudo = m.conteudo + ""
WAIT WINDOW M.CONTEUDO TIMEOUT 1
ENDSCAN
ENDIF
WAIT WINDOW M.CONTEUDO TIMEOUT 1
WAIT WINDOW M.nometabela
*!*
USE IN SELECT(m.nomecursor)
*!*
STRTOFILE(m.cabecalho + m.conteudo + m.rodapeh,m.caminhoarquivo)
RETURN m.caminhoarquivo
ENDFUNC
*!* Converte dados de um cursor para HTML
FUNCTION tabletohtml AS STRING
LPARAMETERS nomeTabela AS STRING, caminhoarquivo AS STRING
*!*
LOCAL cabecalho AS STRING
LOCAL rodapeh AS STRING
LOCAL conteudo AS STRING
LOCAL totalcampos AS INTEGER
LOCAL contador AS INTEGER
LOCAL nomecoluna AS STRING
LOCAL cor AS STRING
*!*
IF (VARTYPE(m.nomeTabela)!="C") THEN
RETURN ""
ENDIF
*!* Caminho onde o arquivo será armazenado (Informar a extensão do arquivo!)
IF (VARTYPE(m.caminhoarquivo)!="C") THEN
m.caminhoarquivo = SYS(5)+CURDIR() + SYS(2015)+".html"
ENDIF
*!*
IF !USED(m.nometabela) THEN
RETURN ""
ENDIF
*!*
m.cabecalho = ""
m.rodapeh = "
"
m.totalcampos = FCOUNT(m.nometabela)
m.conteudo = ""
*!*
m.conteudo = m.conteudo + ""
FOR m.contador=1 TO m.totalcampos
m.conteudo = m.conteudo + []+FIELD(m.contador)+""
ENDFOR
m.conteudo = m.conteudo + ""
*!*
IF (RECCOUNT(m.nomeTabela)>0) THEN
SELECT(m.nomeTabela)
SCAN
IF (RECNO()%2!=0) THEN
m.cor = "#EAF1FF"
ELSE
m.cor = "#DFEAFF"
ENDIF
m.conteudo = m.conteudo + ""
FOR m.contador=1 TO m.totalcampos
m.nomecoluna = FIELD(m.contador)
m.conteudo = m.conteudo + []+TRANSFORM(&nomecoluna)+""
ENDFOR
m.conteudo = m.conteudo + ""
ENDSCAN
ENDIF
*!*
STRTOFILE(m.cabecalho + m.conteudo + m.rodapeh,m.caminhoarquivo)
RETURN m.caminhoarquivo
ENDFUNC
*!* Abre o arquivo
FUNCTION shell_exec
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 41/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
LPARAMETERS lclink, lcaction, lcparms, lcdir, nshowwindow
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
IF (VARTYPE(m.lclink)!="C") THEN
Forum Bloger
RETURN -1
ENDIF
DECLARE INTEGER FindWindow IN WIN32API AS WGFindWindow STRING, STRING
DECLARE INTEGER ShellExecute IN SHELL32.DLL AS WGShellExecute ;
INTEGER, STRING, STRING, STRING, STRING, INTEGER
m.lcaction = IIF(EMPTY(lcaction), "Open", lcaction)
m.lcparms = IIF(EMPTY(lcparms), "", lcparms)
m.lcdir = IIF(EMPTY(lcdir), "", lcdir)
m.nshowwindow = IIF(VARTYPE(m.nshowwindow) == "N", m.nshowwindow, 1)
RETURN wgshellexecute(wgfindwindow(0, _SCREEN.CAPTION), ;
@lcaction, @lclink, ;
@lcparms, @lcdir, ;
m.nshowwindow)
ENDFUNC
ENDDEFINE && fim do html
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 42/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
centena[3] = "Duzentos "
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
centena[4] = "Trezentos "
Forum Bloger
centena[5] = "Quatrocentos "
centena[6] = "Quinhentos "
centena[7] = "Seiscentos "
centena[8] = "Setecentos "
centena[9] = "Oitocentos "
centena[10] = "Novecentos "
centena[11] = "Cem "
valorstr = STR(INT(pvalor * 100),14,0)
vextenso = " "
FOR i=1 TO 14
IF SUBSTR(valorstr,i,1) != " "
num = VAL(SUBSTR(valorstr,i,1))
DO CASE
* --- Bilhao
CASE i = 1
IF num = 1 .AND. VAL(SUBSTR(valorstr,i+1,2)) = 0
vextenso = centena[11]
ELSE
vextenso = centena[Num+1] + IIF(SUBSTR(valorstr,i+1,2) = "00" OR num=0, "", "e ")
ENDIF
flagbilhao = .T.
CASE i = 2
IF num != 1
vextenso = vextenso + dezena[Num+1] + IIF(SUBSTR(valorstr,i+1,1) = "0" .OR. num=0, "", "e ")
flagbilhao = .T.
ELSE
i=i+1
num = VAL(SUBSTR(valorstr,i,1))
vextenso = vextenso + dez[Num+1] + "Bilhões" + IIF(VAL(SUBSTR(valorstr,4))>0,", "," ")
ENDIF
CASE i = 3
IF !(flagbilhao)
flagbilhao = IIF(num>1,.T.,.F.)
ENDIF
vextenso = vextenso + unidade[Num+1] + IIF(flagbilhao,"Bilhões","Bilhão") + IIF(VAL(SUBSTR(valorstr,4
*---- Milhao
CASE i = 4
IF num = 1 .AND. VAL(SUBSTR(valorstr,i+1,2)) = 0
vextenso = vextenso + centena[11]
ELSE
vextenso = vextenso + centena[Num+1] + IIF(SUBSTR(valorstr,i+1,2) = "00" OR num=0, "", "e ")
ENDIF
flagmilhao = .T.
CASE i = 5
IF num != 1
vextenso = vextenso + dezena[Num+1] + IIF(SUBSTR(valorstr,i+1,1) = "0" .OR. num=0, "", "e ")
flagmilhao = .T.
ELSE
i=i+1
num = VAL(SUBSTR(valorstr,i,1))
vextenso = vextenso + dez[Num+1] + "Milhões" + IIF(VAL(SUBSTR(valorstr,7))>0,", "," ")
ENDIF
CASE i = 6
IF !(flagmilhao)
flagmilhao = IIF(num>1,.T.,.F.)
ENDIF
vextenso = vextenso + unidade[Num+1] + IIF(flagmilhao,"Milhões","Milhão") + IIF(VAL(SUBSTR(valorstr,7
*--- MILHAR
CASE i = 7
IF num = 1 .AND. VAL(SUBSTR(valorstr,i+1,2)) = 0
vextenso = vextenso + centena[11]
ELSE
vextenso = vextenso + centena[Num+1] + IIF(SUBSTR(valorstr,i+1,2) = "00" OR num=0, "", "e ")
ENDIF
CASE i = 8
IF num != 1
vextenso = vextenso + dezena[Num+1] + IIF(SUBSTR(valorstr,i+1,1) = "0" .OR. num=0, "", "e ")
ELSE
i=i+1
num = VAL(SUBSTR(valorstr,i,1))
vextenso = vextenso + dez[Num+1] + "Mil" + IIF(VAL(SUBSTR(valorstr,10))>0,", "," ")
ENDIF
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 43/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
CASE i = 9
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
vextenso = vextenso + unidade[Num+1] + "Mil" + IIF(VAL(SUBSTR(valorstr,10))>0,", "," ")
Forum Bloger
*--- Reais
CASE i = 10
IF num = 1 .AND. VAL(SUBSTR(valorstr,i+1,2)) = 0
vextenso = vextenso + centena[11]
ELSE
vextenso = vextenso + centena[Num+1] + IIF(SUBSTR(valorstr,i+1,2) = "00" OR num=0, "", "e ")
ENDIF
CASE i = 11
IF num != 1
vextenso = vextenso + dezena[Num+1] + IIF(SUBSTR(valorstr,i+1,1) = "0" .OR. num=0, "", "e ")
ELSE
i=i+1
num = VAL(SUBSTR(valorstr,i,1))
vextenso = vextenso + dez[Num+1] + "Reais" + IIF(VAL(SUBSTR(valorstr,13))>0," e "," ")
ENDIF
CASE i = 12
vextenso=vextenso+unidade[Num+1]+ IIF(EMPTY(vextenso) AND num=1,"Real","Reais") +IIF(VAL(SUBSTR(valor
*---- CENTAVOS
CASE i = 13
IF num != 1
vextenso = vextenso + dezena[Num+1]
flagcentavos = IIF(num>1,.T.,.F.)
ELSE
i=i+1
num = VAL(SUBSTR(valorstr,i,1))
vextenso = vextenso + dez[Num+1] + "Centavos"
flagcentavos = .T.
ENDIF
CASE i = 14
IF !(flagcentavos)
flagcentavos = IIF(num>1,.T.,.F.)
ENDIF
IF flagcentavos
vextenso = vextenso + unidade[Num+1] + IIF(flagcentavos,"Centavos","")
ELSE
IF num>0
vextenso = vextenso + unidade[Num+1] + "Centavo"
ENDIF
ENDIF
ENDCASE
ENDIF
ENDFOR
WAIT WINDOW 'vc digitou 2452.34 '+ALLTRIM(vextenso) TIMEOUT 0.2
RETURN ALLTRIM(vextenso)
**
39=) Converter numero em caracter sem perder o valor
wr=43170557096
y=Ferrari(wr)
WAIT WINDOW AT 25,35 y +1 TIMEOUT 2
FUNCTION Ferrari
parameters onumero
alltrim(str(onumero,100))
return(onumero)
***Funciton nomedela
Parameters nomeretorno
...Seu codigo
Return(nomeRetorno)
Endfunc
***Um exemplo
CLEAR
store 0 to A,B,C
DO PROCEDURE1 WITH A,B,C
? A+B+C
PROCEDURE PROCEDURE1
PARAMETERS A,B,C
A=90
B=90
C=90
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 44/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
* Impressão da Dicas
Apostila nota de vendaVideos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
Forum Bloger
* Mini cupom
*---------------------------------
DATA = DTOC(DATE())
TEMPO = TIME()
TAM = 8
@ PROW()+1, 01 SAY ALLTRIM(VCID_FIRMA) + " Cep:" + VCEP_FIRMA + " - " + "Brasil" FONT LETRA,TAM
STYLE "T"
@ PROW() , 26 SAY "Nº Comanda: " + NR_VENDA FONT LETRA,TAM STYLE "T"
@ PROW()+1, 01 SAY "Descrição do Produto Qtd´s R$ Unit Total Item" FONT LETRA,7 STYLE "T"
@ PROW() ,27 SAY QTD PICTURE "99.99" FONT LETRA,6 STYLE "T"
@ PROW() ,34 SAY PRECO_VEND PICTURE "999.99" FONT LETRA,6 STYLE "T"
@ PROW() ,43 SAY TOTAL_ITEM PICTURE "999.99" FONT LETRA,6 STYLE "T"
SKIP
IF EOF()
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 45/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
* Forum Bloger
@ PROW() ,15 SAY VVLR_PGTO_1 PICTURE "999.99" FONT LETRA,TAM STYLE "T"
ENDIF
@ PROW() ,43 SAY VTOT_VENDA PICTURE "999.99" FONT LETRA,TAM STYLE "T"
@ PROW() ,15 SAY VVLR_PGTO_2 PICTURE "999.99" FONT LETRA,TAM STYLE "T"
@ PROW() ,43 SAY VTOT_SERVI PICTURE "999.99" FONT LETRA,TAM STYLE "T"
ELSE
@ PROW() ,43 SAY VTOT_SERVI PICTURE "999.99" FONT LETRA,TAM STYLE "T"
ENDIF
@ PROW() ,15 SAY VVLR_PGTO_3 PICTURE "999.99" FONT LETRA,TAM STYLE "T"
@ PROW() ,43 SAY VTOT_GERAL PICTURE "999.99" FONT LETRA,TAM STYLE "T"
ELSE
@ PROW() ,43 SAY VTOT_GERAL PICTURE "999.99" FONT LETRA,TAM STYLE "T"
ENDIF
EXIT
ENDIF
ENDDO
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 46/47
12/01/2021 VFP Brasil: Dicas e Truques VFP
Apostila Dicas Videos Codigos Musica Suave Nacional Traduzidas +Video +Musicas
SET PRINTER TO Forum Bloger
4 comentários:
alceu11.blogspot.com/2016/05/dicas-e-truques-vfp.html 47/47