Você está na página 1de 112

1.

Substituio de caracteres
Ol galera, algum conhece um comando en ADVPL para substituio de
caraceres, como por exemplo:
Trocar por 'E' sempre que encontrar '' ???
Vlw...
Repondido por

: MARCELO_LA em 25/4/2006 17:19:00

_cString := "HOJE UM EXEMPLO"


_cString := StrTran(_cString,"","E")
Marcelo
Repondido por

: FMATTOS em 25/4/2006 20:09:00

atraves de sql voce pode fazer assim:


SELECT REPLACE(SA1010.A1_END, '' , 'E') FROM SA1010
(simples select traz os dados atualizados na tela mas no atualiza no BD)
UPDATE SA1010 SET A1_NOME = REPLACE(SA1010.A1_NOME, '' , 'E')
(atualizao no BD)
[]s
Flvio M Mattos

2. Retorno CNAB Rec - Histrico de baixa


Ao efetuar a recepo do arquivo CNAB de C.Receber o sistema gera o
movimento bancrio com um histrico de baixa, por exemplo: "Valor
recebido s/ Titulo", "Juros s/ Receb.Titulo", etc.
Algum sabe se tem como alterar/customizar este histrico? Pois o
pessoal do financeiro gostaria de incluir mais detalhes.
Obrigado
Repondido por

: BINDO em 23/4/2006 12:13:00

Use o ponto de entrada FA200_02.


Paulo Bindo
Repondido por

: CLEBERDP em 25/4/2006 14:29:00

Obrigado Paulo, vou tentar a sua sugesto!


Cleber

3. Gerao Titulo a Receber - Fina040 - Cond Pgto


Pessoal,
To gerando um titulo a receber via sigaauto FINA040. Foi solicitado que o
vencimento seja conforme a condio de pagamento do cliente. Preciso
da rotina de calcula o vencimento do titulo conforme a condio de
pagamento.
Algum tem?
no aguardo,
Marco Aurlio
Repondido por

: BORGES em 25/4/2006 11:34:00

No conheo o SIGAAUTO, mas se vc por uma condio de pagamento


ele j no determina essa data de vencimento.
Claro que a configurao da condio de pagamento deve estar correta.
Repondido por

: MARCOTULL em 25/4/2006 12:46:00

Neste siga auto no tem campo para condio de pagamento!


Seguei abaixo a funo que retorna as parcelas:
_aParc := Condicao (_nValorTotal,_cCodCondicaoPgto,,_dEmissao)
_aParc[1]
_aParc[2]......
Ps.: nao sei o que faz o terceiro parametro

4. Resoluo de Tela
Ol
Algum sabe como descubro a resoluo do monitor (800x600,
1024x768, etc)?
Cesar
Repondido por

: BINDO em 24/4/2006 20:23:00

Ei sei como lhe ajudar a ter uam tela conforme a resoluo:


Local aSize

:= TkPCSize(70,80)

// Size da dialog com 70% Vertical e 80% Horizon

Programa TKPCSIZE Autor Paulo Bindo


Data 12/09/02

Desc.
Esta funcao eh responsavel por pegar as coordenadas do

tamanho total da tela conforme resolucao definida na pro-

priedade de video do windows.

Uso

*/
Static Function TkPCSize(nV, nH)
Local aSize := {}
AaDd(aSize,
AaDd(aSize,
AaDd(aSize,
AaDd(aSize,

oMainWnd:nBottom )
oMainWnd:nRight )
oMainWnd:nBottom/2 )
oMainWnd:nRight/2 )

aSize[1] := aSize[1] * (nV/100)


aSize[2] := aSize[2] * (nH/100)
aSize[3] := aSize[3] * (nV/100)

// Regula a tela para nV% do tamanho total - Vertical


// Regula a tela para nH% do tamanho total - Horizont
// Regula a tela para 80% do tamanho total - Linha

aSize[4] := aSize[4] * (nH/100)


Return(aSize)
Paulo Bindo

// Regula a tela para 70% do tamanho total - Coluna

5. Utilize a funo SubStr( cStr , nPos , nQtd ) com "ndice


negativo".
Exemplo:
_cCor := SubStr( "BA41850944AZURO" , -4 ) //-> AZURO
Neste caso, -4 ir fazer com que SubStr() inicie a pesquisa partir do
ltimo elemento e pegue 4 posies.
[]s
Naldo.

6. Configurao da Tela Inicial


Ol!
Gostaria de saber se existe como colocar o logo da Empresa na tela
inicial do Protheus8, quando os temas so Ocean ou Classic.
Obrigada
Repondido por

: MARCELO_LA em 10/4/2006 14:15:00

Tem a opo de sobrepor o logo da Microsiga, com um arquivo


msmdilogo.bmp dentro do pasta sigaadv ou system. Mas no pode
passar dos 96 kb de tamanho.
Outra opo mais interessante colocar o browse de uma pgina dentro
do remote.
Configure no mp8rmt.ini com a linha abaixo dentro do [config].
BrowserEnabled=1
e crie uma pgina no remote com o nome mp.htm para verso 8.11 ou
ap.htm para verso 7.10 e dentro do cdigo htm da pgina limpe tudo e
coloque o seguinte texto:
<html>
<head>
<title>HTML REDIRECT</title>
<META HTTP-EQUIV="Refresh" CONTENT="1;
URL=http://www.microsiga.com.br">
</head>
</html>
para que a pgina redirecione para um site que voc quer, ou ento edite
o arquivo mp.htm para o layout que quiseres, que o mesmo aparecer na
tela do remote.

Repondido por

: PBZOLT em 10/4/2006 17:04:00

Desculpe, mas no tenho conhecimento em ADVPL e mesmo tendo feito


conforme sua orientao, Marcelo, aparece a mensagem "The page
cannot be found".
No quero redirecionar para pginas da internet, somente algo interno
mesmo.
Ento criei uma pgina qualquer e a salvei como mp.htm, mas a mesma
msg acima aparece.

O que ser que falta?


Repondido por

: MARTINI em 12/4/2006 08:53:00

como se faz isso no ap7?


Configure no mp8rmt.ini com a linha abaixo dentro do [config].
BrowserEnabled=1
coloquei no ap7rmt.ini, mas nao funcionou ...
obrigado
Repondido por

: RITHYELLE em 12/4/2006 10:59:00

Bom Dia ,achei muito boa a sua dica e fui testar ,criei o arquivo mp.htm e
configurei o ini porem quando eu entro no sistema aparece aquela tela
padro com nome microsiga intelligence,tem ideia o que pode ser?
Segue meu mp8rmt.ini abaixo
[Config]
BrowserEnabled=1
LastMainProg=sigaadv
[Drivers]
Active=TCP

Repondido por

: MARCELO_LA em 12/4/2006 11:05:00

O mp8rmt.ini meu est assim:


[Config]
LastMainProg=sigaadv
BrowserEnabled=1
[Drivers]
Active=TCP
[TCP]
Server=localhost // ou ip do servidor
Port=1234

e a pgina mp.htm precisa estar dentro da pasta remote e editada pelo


front page , no modo html est assim:
<html>
<head>
<title>HTML REDIRECT</title>
<META HTTP-EQUIV="Refresh" CONTENT="1;
URL=http://www.microsiga.com.br">
</head>
</html>
s isso.
Marcelo Lauschner.
Repondido por

: MARCAL em 12/4/2006 11:34:00

Bom dia a todos,


Eu tambm fiz a configurao como o Marcelo passou e funcionou porm
apenas para o Tema Ocean
e Classic para o flat no funciona.
Abrao
Maral de Campos
Repondido por

: MARTINI em 12/4/2006 17:10:00

para mim no funcionou ..


eu configurei o arquivo ap7rmt.ini
[Config]
LastMainProg=sigaadv
BrowserEnabled=1
..
e criei o arquivo ap.htm como no exemplo e coloquei na mesma
pasta do arquivo ap7rmt (BIN|Remote)...

algum sabe o que est errado


Repondido por

: MARCELO_LA em 12/4/2006 17:18:00

Verifique se o remote esta local ou no. Pois, se voc colocou no arquivo


ap7rmt.ini dentro da pasta BIN/REMOTE, quer dizer que foi no servidor,
mas e os usurios acessam este remote? Por um acaso no tem o remote
instalado local em cada mquina? Se tiver, vai ser preciso fazer em cada
remote local instalado. (S copiar os arquivos ap7rmt.ini e ap.htm para
cada remote local)
At.
Marcelo Lauschner.
Repondido por

: SILASOUZA em 12/4/2006 18:57:00

Ol Marcelo.
At consegui fazer o protheus abrir uma pgina web dentro do remote,
s que ele sempre abre a pgina inicial configurada. Sabe se possvel
determinar uma pgina especfica???
Muito bom o recurso.
Abrao
Repondido por

: MARCELO_LA em 13/4/2006 08:15:00

No entendi exatamente 'uma pgina especfica '?


Se o fato de voc querer que abra outro site, s substituir onde est
www.microsiga.com.br por outro endereo http.
Tambm podes editar o arquivo mp.htm da pasta remote para colocar
somente o logo da sua empresa.
um recurso que pode ser usado de vrias maneiras.
Marcelo Lauschner.
Repondido por

: EDUARDOCSEH em 13/4/2006 17:01:00

Fiz o teste aqui na empresa e funcionou perfeitamente !! S que gostaria


de usar no FLAT. Algum sabe um jeito de fazer isso ? No OCEAN e
CLASSIC funciona !!
Abraos
Repondido por

: EDUARDOCSEH em 13/4/2006 17:02:00

Fiz o teste aqui na empresa e funcionou perfeitamente !! S que gostaria


de usar no FLAT. Algum sabe um jeito de fazer isso ? No OCEAN e
CLASSIC funciona !!

Abraos
Repondido por

: BINDO em 14/4/2006 21:33:00

Isso j foi postado no frum, mas segue novamente:


No environment do mp8srv.ini
colocar:
Theme=Flat
no diretorio system
criar um MSMDILOGO.BMP (QUE VAI SER O TEU FUNDO)
Paulo Bindo
Repondido por

: EDUARDOCSEH em 17/4/2006 13:04:00

Bom dia Paulo


Talvez no tenha me expressado corretamente...
Usando o arquivo msmdilogo.bmp eu sei que funciona inclusive
modifiquei aqui na empresa, o que gostaria de saber se existe uma
maneira de usar o aqruivo "mp.htm" com o tema FLAT. Pois minha idia
criar um arquivo HTM e coloc-lo como fundo. Nos tema CLASSIC e
OCEAN isso funciona, mas com o FLAT no.
Portanto o que gostaria de saber se usando o tema FLAT, possvel
usar o arquivo mp.htm para alterar a tela inicial do Protheus.
Obrigado
Eduardo
Repondido por

: BINDO em 17/4/2006 14:42:00

Para utilizar o flat no html coloque SIGAMDI no lugar do SIGAADV.


Paulo Bindo
Repondido por

: RITHYELLE em 19/4/2006 17:15:00

Boa tarde .Bindo onde deve ser configurado isso? no programa inicial ?
pq fiz isso e no deu.
Repondido por

: BINDO em 19/4/2006 19:02:00

Isso tem de ser colocado na primeira tela que aparece, ao invs de


SIGAADV usa SIGAMDI.
Paulo Bindo
Repondido por

: MAICKON em 20/4/2006 01:48:00

Kros amigo fiz o procedimento conforme mostrado ai com o Protheus


7.10 mas mesmo assim naum funcionou . no aparece o logo meu
criado .. tem algo que eu fiz de errado?
meu Ini do rmt est assim :
[Config]
LastMainProg=sigaadv
BrowserEnabled=1
[Drivers]
Active=TCP
[TCP]
Server=localhost
Port=1234
e eu criei o htm conforme mostrado ... fiz teste e mais teste e naum rola
nda..

Att
Maickon
Repondido por

: BINDO em 23/4/2006 12:25:00

Para a 7.10 vc tem de usar o logo abaixo:


#include 'rwmake.ch'
// User's function's incluidas dos principais mdulos Siga, mdulos no
referenciados
// devem somente ser incluido utilizando um dos abaixo como base
Static lFirst
Static cLastEmp
Static oEspBmp
USER FUNCTION SIGAADV()
MostraLogo()

Return
USER FUNCTION SIGAATF()
MostraLogo()
Return
//USER FUNCTION SIGACFG()
//MostraLogo()
//Return
USER FUNCTION SIGACOM()
MostraLogo()
Return
USER FUNCTION SIGACON()
MostraLogo()
Return
USER FUNCTION SIGAEST()
MostraLogo()
Return
USER FUNCTION SIGAFAT()
MostraLogo()
Return
USER FUNCTION SIGAFIN()
MostraLogo()
Return
USER FUNCTION SIGAFIS()
MostraLogo()
Return
USER FUNCTION SIGAGPE()
MostraLogo()
Return
USER FUNCTION SIGALOJ()
MostraLogo()
Return
USER FUNCTION SIGAPCP()
MostraLogo()
Return

USER FUNCTION SIGAPON()


MostraLogo()
Return
USER FUNCTION SIGATEC()
MostraLogo()
Return
USER FUNCTION SIGATMK()
MostraLogo()
Return
USER FUNCTION SIGATRM()
MostraLogo()
Return
Static Function MostraLogo()
Local
Local
Local
Local

nWidthBmp
:= 0
nHeightBmp:= 0
nTop
:= 0
nLeft
:= 0

If ( lFirst == NIL )
cLastEmp := ''
oMainWnd:ReadClientCoors()
principal

// Atualiza as coordenadas da janela

nWidthBmp := 295 // Largura do bitmap utilizado em meu teste


nHeightBmp := 268 // Altura do bitmap utilizado em meu teste
//nWidthBmp := 295
//nHeightBmp := 268
nTop := (oMainWnd:nHeight/4)-(nHeightBmp/2) // Meio da tela
//nTop := (oMainWnd:nHeight/4)- 50 //100 // Meio da tela
nLeft := (oMainWnd:nWidth/4) // Left Mximo devido ao menu
ocupar o resto da rea
//nLeft := (oMainWnd:nWidth/5.8) // Left Mximo devido ao menu
ocupar o resto da rea
oEspBmp := TBmpRep():New( nTop, nLeft, nWidthBmp, nHeightBmp,;
, .T.,oMainWnd, , , .F., F., , , .F., , .T., , .F. )

lFirst := F.
EndIf
If ( cLastEmp != SM0->M0_CODIGO )// + SM0->M0_CODFIL )
cLastEmp := SM0->M0_CODIGO //+ SM0->M0_CODFIL
oEspBmp:LoadBmp('LOGO')
oEspBmp:Refresh()
EndIf
Return
Paulo Bindo
Repondido por

: LUCIO.BEL em 24/4/2006 09:50:00

Como este assunto ainda est rolando resolvi comentar:


Vocs precisam colocar um arquivo com o nome msmdilogo.bmp na
pasta system ou sigaadv, conforme esteja configurado. Pode at ser um
arquivo jpg com a extenso modificada. testei o msadvlogo mas este nao
funcionou. no htm.

7. Imagem anexada ao e-mail


Pessoal criei o pedido de compra em HTML que enviado
automaticamente para os fornecedores, nesse pedido de compra vai um
logo tipo da empresa, quando o email enviado ele anexa o pedido de
venda em HTML e o Logo Tipo da empresa. Quando o fornecedor recebe
o email e abre primeiramente o HTML o lugar do Logo fica com aquele
simbolo do "X" mas se eu abrir primeiro o Logo Tipo e depois abrir o
pedido de compra o Logo Tipo aparece no Local. Estou precisando
Alguem sabe como resolvo esse problema?
Obrigado
Repondido por

: GDN em 3/5/2006 09:51:00

Vc deve informar no campo onde se refere ao LOGO, apontando para um


local onde vc publicou o LOGO na NET, tipo no seu site... com a seguinte
forma exemplo:
<td colspan='3'><div align='center'><img
src='http://200.444.555.66/LOGO.JPG'></div></td>"
<img src: http://suaempresa.com.br/logo.jpg> ... no lembro a sintax
correta !!!
Assim, qdo o fornecedor abrir o pedido, o logo ser buscado do seu local
de publicao, caso o mesmo esteja conectado na NET...
Espero ter ajudado.
Gil
Repondido por

: LEOVIANA em 3/5/2006 10:42:00

MAs no tenho meu logo em lugar nenhum da net, ser q tem como eu
fazer isso de outro modo?
Mas muito obrigado pela resposta.
Repondido por

: CASALE em 3/5/2006 12:08:00

Vc teria q eviar sua imagem embutida(embedded) no seu html, o


problema q ainda no sei como eviar via html puro,
apenas descobri como faz no Dot(NET)usando system.web.mail(swm).
Em suma a imagem vai em formato binario dentro da propria mensagem.
System.Web.Mail (SWM) um espao .NET usado p/ enviar email em NET
Framework applications. SWM contem 3 classes:
MailMessage - usado para crear e manipular o conteudo da mensagem

de email .
MailAttachments - usado para criar um anexo de email e ser adicionado
na mensagem do email.
SmtpMail - usado para enviar email para o server.
[ VB.NET ]
Sub EmbedImages()
'cria a mensagem de email
Dim mail As New MailMessage()
'seta o endereo
mail.From = New MailAddress("me@minhaempresa.com")
mail.To.Add("abcde@suaempresa.com")
'seta o conteudo
mail.Subject = "Aqui um email"
'primeiro cria o Plain Text
Dim plainView As AlternateView =
AlternateView.CreateAlternateViewFromString("Este meu conteudo
plain text, visivel por aquelw cliente q nao suportam html", Nothing,
"text/plain")
'ento cria o Html
'para embutir uma imagem, necessario usar o prefixo "cid" no valor da
<img src>
'o valor "cid" ira mapear o conteudo (Content-Id ) do Linked resource.
'dessa forma <img src='cid:companylogo'> ira mapear para um
LinkedResource com ContentId de 'companylogo'
Dim htmlView As AlternateView =
AlternateView.CreateAlternateViewFromString("Aqui vai a imagem
embutida.<img src=cid:companylogo>", Nothing, "text/html")
'Crie o LinkedResource (Imagem embutida)
Dim logo As New LinkedResource("c:\temp\logo.gif")
logo.ContentId = "companylogo"
'adicione o LinkedResource para uma view apropriada
htmlView.LinkedResources.Add(logo)
'Adiciona views
mail.AlternateViews.Add(plainView)
mail.AlternateViews.Add(htmlView)
'envia a mensagem
Dim smtp As New SmtpClient("127.0.0.1") 'especifique o endereco do

servidor de email
smtp.Send(mail)
End Sub 'imagem embutida
Sei q nao ajuda muito mais vc pode explorar mais a respeito do "CID"
existem faqs na NET,quado sobra r tempinho irei pesquisar + a fundo.
fuiii.....
Repondido por

: NALDO em 3/5/2006 12:52:00

No necessrio publicar a sua imagem. Voc pode enviar o cdigo


"binrio da imagem" como no exemplo abaixo:
1 ) Supondo que a sua imagem est armazenada no Repositrio de
Imagens do Protheus.
User Function GetImgRep( cCodImg )
Local cIMGCode
Local cIMGSource

:= cCodImg
:= ""

Begin Sequence
IF Empty( cIMGCode )
Break
EndIF
// Carrega a imagem do repositorio em variavel de memoria
cIMGSource := LoadReposit( cIMGCode )
FechaReposit() //For+o o Fechamento o Repositorio de Imangens
IF ( Len( cIMGSource ) == 0 )
Break
EndIF
IF ( Left( cIMGSource , 2 ) == "BM" )
// Identifica se BMP ou JPG pelos 2 primeiros bytes
HttpCTType( "application/xbitmap" )
Else
// Se no for BMP ... JPG !
HttpCTType( "image/jpeg" )
EndIF
// Seta tamanho da imagem para header HTTP de saida
HttpCTLen( Len( cIMGSource ) )

// Manda a imagem via HTTPSend


cIMGSource := HttpSend( cIMGSource )
End Sequence
// Caso a httpsend no envie toda a imagem , retorna
// o conteudo remanescente.
Return( cIMGSource )
2 ) Supondo que a Imagem est em um arquivo no diretrio system do
Protheus
User Function GetImgFile( cImgFile )
Local cLogoFile
Local cLogoSource

:= cImgFile
:= ""

Local nLenLogoSource
Begin Sequence
IF Empty( cLogoFile )
Break
EndIF
// Carrega a imagem do repositorio em variavel de memoria
cLogoSource := LoadFile( cLogoFile )
nLenLogoSource := Len( cLogoSource )
IF ( nLenLogoSource == 0 )
Break
//No Tem Imagem alguma a enviar
EndIF
IF ( Left( cLogoSource , 2 ) == "BM" )
// Identifica se BMP ou JPG pelos 2 primeiros bytes
HttpCTType( "application/xbitmap" )
Else
// Se no for BMP ... JPG !
HttpCTType( "image/jpeg" )
EndIF
// Seta tamanho da imagem para header HTTP de saida
HttpCTLen( nLenLogoSource )
// Manda a imagem via HTTPSend

cLogoSource := HttpSend( cLogoSource )


End Sequence
// Caso a httpsend no envie toda a imagem , retorna
// o conteudo remanescente.
Return( cLogoSource )
Static Function LoadFile( cLogoFile )
Local nHandle
Local aAllLogoFile
Local cBinaryFile

:= fOpen( cLogoFile )
:= GetAllTxtFile( nHandle )
:= ""

Local nLoop
Local nLoops
nLoops := Len( aAllLogoFile )
For nLoop := 1 To nLoops
cBinaryFile += aAllLogoFile[ nLoop ]
Next nLoop
fClose( nHandle )
Return( cBinaryFile )
Obs.: O Exemplo acima funciona para programas em Web Function do
Protheus. Acredito que funcione, tambm, para envios de e-mail... Para
verificar, s testando.
[]s
Naldo
Repondido por

: LEOVIANA em 3/5/2006 14:26:00

Caros,
Muito obrigado pelas dicas e segue abaixo uma dvida :
Eu anexo minha imagem do modo abaixo:
cMensagem +="<p align=center><b><font face=Arial
size=6>&nbsp;"+IIf(!Empty(cImagem),"<img src="+Alltrim(cImagem)
+">",SM0->M0_NOME)+"</font></b></td>"

A minha variavl cImagem na verdade o caminho de onde est a Logo,


no caso eu teria que usar a funo cImagem := LoadFile(cImagem), a
funo HttpCTType() e cImagem := HttpSend(cImagem) ?
Muito Obrigado.
Repondido por

: LEOVIANA em 3/5/2006 15:26:00

Caro Naldo,
Usei sua funo e converti ela para binrio. S que quando a coloco no
meu HTML ao invs de mandar a imagem ele manda os binrios gerados,
o modo de acoplar o arquivo BIN no HTML diferente? Pois do modo
abaixo ele sai os cdigos binrios:
cMensagem +="<p align=center><b><font face=Arial
size=6>&nbsp;"+IIf(!Empty(cImagem),"<img src="+Alltrim(cImagem)
+">",SM0->M0_NOME)+"</font></b></td>"
Obrigado.
Leonardo Vasco
Repondido por

: LEOVIANA em 3/5/2006 15:27:00

Caro Naldo,
Usei sua funo e converti ela para binrio. S que quando a coloco no
meu HTML ao invs de mandar a imagem ele manda os binrios gerados,
o modo de acoplar o arquivo BIN no HTML diferente? Pois do modo
abaixo ele sai os cdigos binrios:
cMensagem +="<p align=center><b><font face=Arial
size=6>&nbsp;"+IIf(!Empty(cImagem),"<img src="+Alltrim(cImagem)
+">",SM0->M0_NOME)+"</font></b></td>"
Obrigado.
Leonardo
Repondido por

: NALDO em 3/5/2006 16:53:00

Leo,
Na realidade voc no deve passar a imagem diretamente, mas sim um
Link para uma chamada uma funo em advpl que retorne a imagem
como em:
Local cImagem := GetRpcServer() + "/u_GetImg.apw"
..
cMensagem +="<p align=center><b><font face=Arial
size=6>&nbsp;"+IIf(!Empty(cImagem),"<img src="+Alltrim(cImagem)

+">",SM0->M0_NOME)+"</font></b></td>"
..
Static Function GetRpcServer()
Local cRpcServer
cRpcServer := GetJobProfString( "RpcServer" , "" )
IF Empty( cRpcServer )
cRpcServer
:= GetPvProfString( "HTTP" , "RpcServer" , "" ,
GetAdv97() )
EndIF
Return( cRpcServer )
User Function GetImg()
Return(GetImgFile( "LOGO.JPG" ) ) //supondo que a imagem denomina-se
logo.jpg
[]s
Naldo

8. Formato para letra minscula


Boa tarde.
Algum saberia a configurao do campo formato para deixar a letra em
minuscula? sei que para maiuscula necessrio colocar @!.
Repondido por

: MAICKON em 2/5/2006 21:38:00

Ola, a melhor coisa a ser feita deixar mesmo maiuscula, por que se
vc fazer o inverso vc pode perder a padronizao na hora de sua
pesquisa. Mas se vc realmente quer assim, no formato do campo vc
deixa sem nda. quero dizer que vc deixa de colocar @! ..
Blz...
Repondido por

: BINDO em 2/5/2006 21:43:00

Existe a funo:
UPPER() - deixa em maiusculo
LOWER() - deica em minusculo
Capital() - somente as iniciais em maiusculo
Paulo Bindo

9. Baixa e Cancelamento de Baixa por Rotina Automtica


Bom dia colegas,
Tenho uma interface com outro sistema que envia cancelamento de
baixa para o meu contas a receber.
Para baixar os titulos estou utilizando a Fina070(), como posso fazer o
cancelamento da baixa ?
Obrigado a todos.
Repondido por

: BRASILSIGA em 27/4/2006 09:22:00

A rotina possui MSEXECAUTO, Utilize-o que ele ir realizar todos os


processos padres, inclusive contabilizar o cancelamento.
Repondido por

: FRED em 27/4/2006 11:02:00

Como posso fazer isso ?


Repondido por

: FRED em 27/4/2006 15:25:00

Para efetuar a baixa estou usando o esquema abaixo, mas posso ter
tambm o cancelamento da baixa e usando a mesma rotina mostra a
mensagem que o titulo j foi baixado.
aDados := {}
aadd(aDados,{"E1_PREFIXO"
,Substr(PREFIXO,1,3)
,Nil})
aadd(aDados,{"E1_NUM"
,SubStr(StrZero(Val(AllTrim(NUM)),6),1,6)
,Nil})
aadd(aDados,{"E1_PARCELA"
,Substr(PARCELA,1,3)
,Nil})
aadd(aDados,{"E1_TIPO"
,Substr(TIPO,1,2)
,Nil})
aadd(aDados,{"AUTBANCO" ,""
,Nil})
aadd(aDados,{"AUTAGENCIA" ,""
,Nil})
aadd(aDados,{"AUTCONTA" ,""
,Nil})
aadd(aDados,{"AUTMOTBX" ,Substr(MOT_BAIXA,1,3)
,Nil})
aadd(aDados,{"AUTDTBAIXA"
,ctod(DT_RECEB)
,Nil})
aadd(aDados,{"AUTDTCREDITO",ctod(DT_CREDITO)
,Nil})
aadd(aDados,{"AUTHIST"
,"AUTO-Valor Recebido S/
Titulo"
,Nil})
aadd(aDados,{"AUTDESCONT"

,val(DESCONTOS)
,Nil})
aadd(aDados,{"AUTDECRESC" ,val(ABATIMENTO)
,Nil})
aadd(aDados,{"AUTACRESC" ,0
aadd(aDados,{"AUTMULTA" ,val(MULTA)
aadd(aDados,{"AUTJUROS" ,val(JUROS)
aadd(aDados,{"AUTVALREC" ,(VALOR_RECEBIDO)
Nil})
Fina070(aDados)
Repondido por

: FRED em 2/5/2006 11:02:00

Galera, algum pode dar um help para esse caso ?


Repondido por

: BINDO em 2/5/2006 21:20:00

Tente:
nOpc == 6
MSExecAuto({|x,y,z| FINA070(x,y,z)},aDados,,nOpc)
Paulo Bindo

,Nil})
,Nil})
,Nil})
,

10. Relatrio Grfico Paisagem


Bom tarde!
Como fao para colocar um relatorio grfico em paissagem?
Att.
Ranieri
Repondido por

: LARSON em 5/5/2006 13:48:00

oPrn:=TMSPrinter():New()
oPrn:SetLandScape()

11. Filtro no Browse


Bom dia , criei uma tabela SZ6 - Chamados - e gostaria que cada usuario
vizualiza-se apenas os seus chamados , como fao isso , sera que alguem
teria algum exemplo para estar me passando , por ja agradeo , fico no
aguardo ,obrigado ..
Ton22sp@gmail.com
Repondido por

: SL4CKW4R3 em 2/5/2006 09:01:00

Bom dia.
Utilize esse exemplo de filtro que segue abaixo...
Ex.:
cCondio := "SZ6_USUARIO=='"+cUsuario+"' "
bFiltraBrw := {|| FilBrowse("SZ6",@aIndSZ6,@cCondicao) }
Eval(bFiltraBrw)
caso precise entre em contato ae.
Thiago

12. Impresso de Logomarca


Oi pessoal, como fao para ler e imprimir uma logomarca? qual a
extenso que a mesma deva estar?
Algum tem algum exemplo?
Valeu!
Pedro Barreto.
Repondido por

: JHONOB em 18/4/2006 15:54:00

Para aparecer as logomarca do cliente nos relatrios da Microsiga, voce


deve trocar o nome do arquivo da logomarca (que deve estar em .bmp)
para lgrl01.bmp
Repondido por

: PEDROBARRE em 19/4/2006 07:49:00

At a tudo bem! trata-se de uma declarao de pagamento para o IRRF,


no vou ter cabeario, s preciso colocar a logomarca junto com o nome
da empresa e o cnpj. Temo como?
abs,
Pedro.
Repondido por

: BINDO em 19/4/2006 13:20:00

vc tem de fazer a programao em modo grfico, tmsprinter(). Na seo


de downloads tem uma apostilas.
Paulo Bindo
Repondido por

: PEDROBARRE em 19/4/2006 13:46:00

Obrigado Bindo!
Pedro.
Repondido por

: CLEBERDP em 21/4/2006 12:01:00

Ol Pedro, segue abaixo um exemplo que encontrei por aqui para


impresso grfica, espero q t ajude:
----------------------//Nome da figura a ser usada, devera ficar no diretorio
rootpath+startpath (sigaadv)
cFigura := "uni.bmp"

//Objetos
oFont1
oFont2
oFont3

para tamanho e tipo das fontes


:= TFont():New( "Times New Roman",,08,,.T.,,,,,.F.)
:= TFont():New( "Tahoma",,16,,.T.,,,,,.F.)
:= TFont():New( "Arial"
,,20,,.F.,,,,,.F.)

oPrn := tAvPrinter():New("Microsiga - Teste")


//Inicia uma nova pgina
oPrn:StartPage()
// startando a impressora
oPrn:Say(0, 0, " ",oFont1,100)
oPrn:Say (50, 220, "MICROSIGA SOFTWARE S/A",oFont3,100)
oPrn:Say (150,220, "TESTE DE IMPRESSAO GRAFICA - PAGINA
1",oFont2,100)
//Imprime Bitmap
oPrn:SayBitmap(250,150,cFigura,200,140)
//Imprime box
oPrn:Box (250,450,700,2000)
//finaliza a pagina
oPrn:EndPage()
//Pgina 2
oPrn:StartPage()
oPrn:Say(0, 0, " ",oFont1,100)
oPrn:Say (50, 220, "MICROSIGA SOFTWARE S/A",oFont3,100)
oPrn:Say (150,220, "IMPRESSAO DA SEGUNDA PAGINA",oFont2,100)
oPrn:Box (250,450,700,2000)
oPrn:Say (300,500,"Este exemplo serve apenas para testar a impressao
grafica",oFont1,100)
//finaliza a pagina
oPrn:EndPage()
//Imprime em tela p/ preview

oPrn:Preview()
oPrn:End()
Return
Repondido por

: CARNEIRO em 28/4/2006 12:40:00

Como se descobre esses diretrios (rootpath + startpath)?


Repondido por

: PATRICIO em 28/4/2006 12:58:00

Funcionaria para jpg ???


Patricio

13. Digitao no Contas a Receber


Bom dia
Todo mes lancado no contas a receber manualmente pra alguns
clientes um titulo, o q muda o valor , data e o numero do titulo. Esses
titulos nao tem como ser feito pelo faturamento.
Queria deixar isso automatico, trazer os dados e apenas mudar o numero
+ data e valor.
Alguem tem ideia de como fazer isso?

Repondido por

: EDSONDELUC em 27/4/2006 10:08:00

Ol ,
Customizar uma rotinazinha seria o ideal. (Bem simples)
Edson
Repondido por

: BINDO em 27/4/2006 23:14:00

segue rotina de pr-recebimento.

#INCLUDE "Protheus.ch"
#DEFINE USADO CHR(0)+CHR(0)+CHR(1)
/*/

Programa FINAT003 Autor Paulo Bindo


Data 15/09/04

Descricao Gera pre-recebimento

Uso
AP6 IDE

/*/

User Function FINAT003()


Local aArea
:= GetArea()
Private cEmp
Private cCadastro := "Cadastro de Pr-Recebimento"
Private oDlg
//GRAVA O NOME DA FUNCAO NA Z03
U_CFGRD001(FunName())

dbSelectArea("SM0")
cEmp := SM0->M0_CODIGO+"0"
//
// Monta um aRotina proprio

//
Private aRotina := { {"Pesquisar","AxPesqui",0,1} ,;
{"Visualizar","AxVisual",0,2} ,;
{"Gerar","U_FINAT3Func",0,7} }
Private cDelFunc := ".T." // Validacao para a exclusao. Pode-se utilizar ExecBlock
Private cString := "SE1"
dbSelectArea("SE1")
dbSetOrder(1)
dbSelectArea(cString)
mBrowse( 6, 1,22,75,cString,,,,,, Fa040Legenda("SE1"))
RestArea(aArea)
Return

/*

Programa FINAT3Func Autor Paulo Bindo


Data 09/15/04

Desc.
Funcao que abre as telas

Uso
AP


*/
User Function FINAT3Func()
Local cPerg := "FIAT03"
Local nOpca := 0
Local aAlter :={} // Campos que podem ser alterados na GETDB
Local oChk1,oDlg
Local cDescri
:=""
Private aRotina := {{"","",0,4}}
Private aHeader := {}
Private cHist := SPACE(25)
Private dDataP := dDataBase
Private dDataE := dDataBase
Private nUsado := 2
Private lClose := .T.
ValidPerg(cPerg)
If Pergunte(cPerg,.T.)
//FAZ A SELECAO DE DADOS NO SE1 CONFORME PARAMETROS

cQuery := " SELECT E1_PREFIXO, E1_NUM, E1_NATUREZ, E1_CLIENTE,E1_NOMCLI, E1


cQuery += " WHERE E1_PREFIXO BETWEEN '"+mv_par01+ "' AND '"+mv_par02+"'"
cQuery += " AND E1_NATUREZ BETWEEN '"+mv_par03+"' AND '"+mv_par04+"'"
cQuery += " AND E1_CLIENTE BETWEEN '"+mv_par05+"' AND '"+mv_par06+"'"
cQuery += " AND E1_EMISSAO BETWEEN '"+Dtos(mv_par07)+"' AND '"+Dtos(mv_pa
cQuery += " AND D_E_L_E_T_ <> '*' AND E1_NUMTITF = '' AND E1_PREFIXO <> 'UNI
If mv_par09 == 1
cQuery += " AND E1_REPETEM = '1'"
EndIf
cQuery := ChangeQuery(cQuery)
MemoWrit("FINAT3unc.sql",cQuery)
dbUseArea(.T.,"TOPCONN", TCGenQry(,,cQuery),"TRB", .F., .T.)
TCSETFIELD("TRB","E1_EMISSAO","D")
COUNT TO nRecCount
//CASO TENHA DADOS ADICIONA NA MATRIZ
If nRecCount > 0
//CRIA ARQUIVO TEMPORARIO
// Declara Arrays p/ Consultas
_aArqC1 := {}
AADD(_aArqC1,{"MARC","C",1,0})
//PREFIXO
AADD(_aArqC1,{"PREF","C",3,0})
//PREFIXO
AADD(_aArqC1,{"NUM" ,"C",6,0})
//NUMERO

AADD(_aArqC1,{"NAT" ,"C",10,0})
//NATUREZA
AADD(_aArqC1,{"CLI" ,"C",6,0})
//CODIGO DO CLIENTE
AADD(_aArqC1,{"NCLI","C",20,0})
//NOME DO CLIENTE
AADD(_aArqC1,{"VALO" ,"N",14,2})
//VALOR
AADD(_aArqC1,{"EMIS","D",8,0})
//DATA DA EMISSAO
AADD(_aArqC1,{"TIPO","C",3,0})
//TIPO DO TITULO
AADD(_aArqC1,{"CCUS","C",6,0})
//CENTRO DE CUSTO
AADD(_aArqC1,{"NCCU","C",40,0})
//NOME DO CENTRO DE CUSTO
AADD(_aArqC1,{"LOJA","C",02,0})
//LOJA DO CLIENTE
// Arquivo Auxiliar para Consultas
_cArqC1 := CriaTrab(_aArqC1,.T.)
dbUseArea(.T.,,_cArqC1,"TIT")
Index on PREF+NUM to &_cArqC1
dbSelectArea("TRB")
dbGoTop()
While !EOF()
RecLock("TIT",.T.)
If mv_par10 == 1
MARC := "X"
EndIf
PREF := TRB->E1_PREFIXO
NUM := TRB->E1_NUM
NAT := TRB->E1_NATUREZ
CLI := TRB->E1_CLIENTE
NCLI := TRB->E1_NOMCLI
VALO := TRB->E1_VALOR
EMIS := TRB->E1_EMISSAO
TIPO := TRB->E1_TIPO
CCUS := TRB->E1_CCUSTO
NCCU := TRB->E1_NOMCCUS
LOJA := TRB->E1_LOJA
MsUnlock()
dbSelectArea("TRB")
dbSkip()
End
//MARCACAO
AADD(aAlter,"MARC")
AADD(aHeader,{"Sel.","MARC","",1,0,"Pertence('X| ')",USADO,"C",""," "})
//PREFIXO
AADD(aHeader,{"Prefixo","PREF","",3,0,,USADO,"C",""," "})
//NUMERO
AADD(aHeader,{"Numero","NUM","",6,0,,USADO,"C",""," "})

//NATUREZA
AADD(aHeader,{"Natureza","NAT","",10,0,,USADO,"C","",""})
//CODIDO DO CLIENTE
AADD(aHeader,{"Cliente","CLI","",6,0,,USADO,"C",""," "})
//LOJA DO CLIENTE
AADD(aHeader,{"Loja","LOJA","",2,0,,USADO,"C",""," "})
//NOME DO CLIENTE
AADD(aHeader,{"Razao","NCLI","",20,0,,USADO,"C",""," "})
//VALOR
AADD(aAlter,"VALO")
AADD(aHeader,{"Valor","VALO","@E 999,999,999.99",14,2,,USADO,"N",""," "})
//DATA DA EMISSAO
AADD(aHeader,{"Emisao","EMIS","",8,0,,USADO,"D",""," "})
//TIPO DO TITULO
AADD(aHeader,{"Tipo","TIPO","",3,0,,USADO,"C",""," "})
//CENTRO DE CUSTO
AADD(aAlter,"CCUS")
AADD(aHeader,{"C Custo","CCUS","",6,0,,USADO,"C",""," "})
//NOME DO CENTRO DE CUSTO
AADD(aHeader,{"Nome Custo","NCCU","",40,0,,USADO,"C",""," "})
TRB->(dbCloseArea())
Else
MsgStop("No foram encontrados dados!")
TRB->(dbCloseArea())
Return
EndIf

dbSelectArea("TIT")
dbGotop()
//TELA DO PRE RECEBIMENTO
DEFINE MSDIALOG oDlg TITLE "Pr-Recebimento" From 100,0 To 445,878 OF oMainWn
@ 10,15 TO 129,135 LABEL OemToAnsi("Repetio") OF oDlg PIXEL
@ 25,20 RADIO oUsado VAR nUsado 3D SIZE 70,10 PROMPT OemToAnsi("Continuar")
OemToAnsi("Desmarcar") OF oDlg PIXEL
@ 060,020 Say OemToAnsi("Histrico") SIZE 60,10 OF oDlg PIXEL
@ 060,055 MSGET cHist SIZE 75,10 OF oDlg PIXEL
@ 090,020 Say OemToAnsi("Data Emisso") SIZE 60,10 OF oDlg PIXEL
@ 090,085 MSGET dDataE SIZE 35,10 OF oDlg PIXEL Valid VerData(1)
@ 102,020 Say OemToAnsi("Data Recebimento") SIZE 60,10 OF oDlg PIXEL
@ 102,085 MSGET dDataP SIZE 35,10 OF oDlg PIXEL Valid VerData(2)
oGetDb := MsGetDB():New(10,140,130,420,1,"Allwaystrue","Allwaystrue","",.F.,aAlter

DEFINE SBUTTON FROM 137,323 TYPE 1 ACTION (nOpca:=1,oDlg:End()) Of oDlg PIXE


DEFINE SBUTTON FROM 137,350 TYPE 2 ACTION oDlg:End() ENABLE OF oDlg

ACTIVATE MSDIALOG oDlg CENTERED valid lClose


If nOpca == 1
MsgRun("Efetuando a cpia dos registros selecionados, Aguarde...","",{|| CursorW
EndIf
dbSelectArea("TIT")
TIT->(dbCloseArea())
fERASE(_cArqC1+".dbf")
EndIf
Return

/*

Programa VerData Autor Paulo Bindo


Data 04/26/05

Desc.
Verifica se a data digitada e maior ou igual a database

Uso
AP

*/
Static Function VerData(n)
If n == 1
If dDataE < dDataBase
MsgStop("A data digitada menor que a database!")
lClose := F.
ElseIf dDataE <= dDataP
lClose := T.
EndIf
ElseIf n == 2
If dDataE > dDataP
MsgStop("A data de Emisso maior que a Data de Vencimento!")
lClose := F.
ElseIf dDataE >= dDataBase
lClose := T.
EndIf
EndIf
Return

/*

Programa FIAT3Grava Autor Paulo Bindo


Data 09/15/04

Desc.
Insere os titulos no SE1

Uso
AP

*/
User Function FIAT3Grava()
Local nContErro := 0
Local aTitulo
:= {}
Local nOpc
:= 3
dbSelectArea("TIT")
dbGoTop()
While !EOF()
//CASO NAO TENHA SIDO SELECIONADO
If !MARC $ "X"
dbSkip()
Loop
EndIf
cPrefixo := TIT->PREF
cNumSE1 := GetSX8Num("SE1","E1_NUM")//BUSCA NUMERACAO DO SE1
aTitulo := { {"E1_PREFIXO"
, TIT->PREF
,Nil},;
{"E1_NUM"
,cNumSE1
,Nil},;
{"E1_PARCELA"
,Space(01)
,Nil},;
{"E1_TIPO"
,TIT->TIPO
,Nil},;
{"E1_NATUREZ"
,TIT->NAT
,Nil},;
{"E1_CLIENTE"
,TIT->CLI
,Nil},;
{"E1_LOJA"
,TIT->LOJA
,Nil},;
{"E1_EMISSAO"
,dDataE
,Nil},;
{"E1_VENCTO"
,dDataP
,Nil},;
{"E1_VENCREA"
,DataValida(dDataP)
,Nil},;
{"E1_VALOR"
,TIT->VALO
,Nil},;
{"E1_REPETEM"
,AllTrim(Str(nUsado))
,Nil},;
{"E1_HIST"
,cHist
,Nil},;

{"E1_CCUSTO"
,TIT->CCUS
{"E1_NOMCCUS"
,TIT->NCCU
{"E1_NUMTITP"
,TIT->NUM

,Nil},;
,Nil},;
,Nil}}

lMsErroAuto := .F.
//GERA O TITULO NO SE1
MSExecAuto({|x,y,z| FINA040(x,y,z)},aTitulo,,nOpc)
If lMsErroAuto
nContErro ++
RollBackSX8()
Else
ConfirmSX8()
//ATUALIZA O ULTIMO TITULO DO FORNECEDOR
cQuery := " UPDATE SE1"+cEmp+" SET E1_NUMTITF = '"+cNumSE1+"'"
cQuery += " WHERE E1_NUM = '"+TIT->NUM+"' AND E1_PREFIXO = '"+TIT->PREF
cQuery += " AND E1_CLIENTE = '"+TIT->CLI+"' AND D_E_L_E_T_ <> '*'"

MemoWrit("FIAT3Grava.sql",cQuery)
TcSqlExec(cQuery)
EndIf
dbSelectArea("TIT")
dbSkip()
End
//
// Se gerou novo arquivo de erro, apaga o anterior e gera novo
//
If nContErro > 0
cNomArqErro := NomeAutoLog()
cNomNovArq := __RELDIR+"TITULOG.##R"
If MsErase(cNomNovArq)
__CopyFile(cNomArqErro,cNomNovArq)
EndIf
MsErase(cNomArqErro)
If MsgYesNo(OemToAnsi("Ocorreram problemas com" + " ( " + Ltrim(Str(nContErro,5)
OemToAnsi("Aten+"o"))
fVerLog()
EndIf
EndIf
Return

/*

Programa ValidPerg Autor Microsiga


Data 12/10/03

Desc.

Uso
AP

*/

Static Function ValidPerg(cPerg)


Private i,j
dbSelectArea("SX1")
dbSetOrder(1)
cPerg := PADR(cPerg,6)
aRegs:={}
//
Grupo/Ordem/Pergunta/Perg.Espanhol/Perg.Ingles/Variavel/Tipo/Tamanho/Decimal/Presel
DefSPA5/DefIng5/Cnt05/F3/PYME/Grupo/HELP
AADD(aRegs,{cPerg,"01","Do Prefixo
?","","","mv_ch1","C",03,0,0,"G","","mv_par01"
AADD(aRegs,{cPerg,"02","Ate o Prefixo
?","","","mv_ch2","C",03,0,0,"G","","mv_par02
AADD(aRegs,{cPerg,"03","Da Natureza
?","","","mv_ch3","C",10,0,0,"G","","mv_par0
AADD(aRegs,{cPerg,"04","Ate a Natureza
?","","","mv_ch4","C",10,0,0,"G","","mv_par
AADD(aRegs,{cPerg,"05","Do Cliente
?","","","mv_ch5","C",06,0,0,"G","","mv_par05
AADD(aRegs,{cPerg,"06","Ate o Cliente
?","","","mv_ch6","C",06,0,0,"G","","mv_par0
AADD(aRegs,{cPerg,"07","Da Data
?","","","mv_ch7","D",08,0,0,"G","","mv_par07
AADD(aRegs,{cPerg,"08","Ate a Data
?","","","mv_ch8","D",08,0,0,"G","","mv_par08
AADD(aRegs,{cPerg,"09","Repete Ms
?","","","mv_ch9","N",01,0,0,"C","","mv_par0
AADD(aRegs,{cPerg,"10","Traz Marcado
?","","","mv_cha","N",01,0,0,"C","","mv_par1
For i:=1 to Len(aRegs)
If !dbSeek(cPerg+aRegs[i,2])
RecLock("SX1",.t.)
For j:=1 to len(aRegs)
FieldPut(j,aRegs[i,j])
Next
MsUnlock()
dbCommit()
Endif
Next
Return
Paulo Bindo

14. Markbrowse
Boa tarde galera, estou desenvolvendo uma rotina com MarkBrowse, essa rotina o
usurio podera marcar os registros da GRID para rodar uma rotina, ou podera
visualizar, altera ou excluir o registro. O meu problema esta no seguinte, na
minha tabela eu tenho um campo chamado Z10_TIPO, nesse campo eu informo se o
registro ja foi processado ou no, gostaria de fazer com que aparecesse somente
na GRID os registros que ainda no foram processados, no caso os registros do
tipo "T".
Alguem sabe como fazer esse filtro ???
Att.
Luciano Henrique
Repondido por
: EDSONDELUC em 26/4/2006 13:58:00
Pode me mostrar sua rotina, que lhe mostro o filtro.
Edson - Qualquer dvida: edsondeluca@hotmail.com Repondido por
26/4/2006 14:00:00
Pode me mostrar sua rotina, que lhe mostro o filtro.

: EDSONDELUC em

Edson - Qualquer dvida: edsondeluca@hotmail.com Repondido por


: NALDO em
26/4/2006 14:11:00
utilize a funo FilBrowse( cAlias , @aIndex , cFiltro ) no Init do Dialog da
MarkBrowse. exemplo:
Local aIndex :=
Local cAlias := "Z10"
Local cFiltro := "Z10_TIPO='T'"
DEFINE MSDIALOG oDlg ...
..
ACTIVATE DIALOG oDlg CENTERED ON INIT FilBrowse( cAlias , @aIndex , cFiltro )
//Filtra os Dados
EndFilBrw( cAlias, aIndex ) //Finaliza o Filtro.
[]s
Naldo

15. Mv_Risco
Pergunta de : SPANAZZI em 25/4/2006 13:48:00
Como funciona o parametro mv_risco()? Repondido por
: EDERCANGO em
26/4/2006 08:48:00
Risco A - significa que no existe risco para venda, ou seja, o Pedido de
Vendas no ser bloqueado, exceto se a data do vencimento do limite de crdito
estiver ultrapassada.
Risco B - esta situao depende do contedo do parmetro MV_RISCOB, que indica o
nmero de dias de atraso tolervel no pagamento de ttulos de Clientes. Alm
disso, ser considerado tambm o valor do Limite de Crdito e a data de
Vencimento do Limite de Crdito do Cliente. Veja o tpico Parmetros.
Risco C - esta situao depende do contedo do parmetro MV_RISCOC, que indica o
nmero de dias de atraso tolervel no pagamento de ttulos de Clientes. Alm
disso, ser considerado tambm o valor do Limite de Crdito e a data de
Vencimento do Limite de Crdito do Cliente. Veja o tpico Parmetros.
Risco D - esta situao depende do contedo do parmetro MV_RISCOD, que indica o
nmero de dias de atraso tolervel no pagamento de ttulos de Clientes. Alm
disso, ser considerado tambm o valor do Limite de Crdito e a data de
Vencimento do Limite de Crdito do Cliente. Veja o tpico Parmetros.
Risco E - significa que existe um grande risco na venda, ou seja, o Pedido de
Vendas sempre ser bloqueado.
Risco Z - Integrao SERASA, liberao de crdito atravs da integrao de
software de terceiros.
Neste caso, quando liberado o Pedido de Vendas para faturamento, ficar bloqueado
at que o sistema, atravs da integrao SERASA, receba a instruo para sua
liberao.
Este recurso est disponvel pela parceria entre a Microsiga e a empresa SERASA,
com o objetivo de facilitar aos clientes o acesso aos bancos de dados da SERASA,
consultando suas informaes e atualizando-as conforme contrato estabelecido.
Para a atualizao das informaes financeiras dos clientes (hbitos de
pagamentos, perfil de compras, compromissos vencidos e a vencer) na base de dados
da SERASA, deve-se executar a rotina SERASA - Relato.
Para a liberao automtica de crdito, deve-se configurar o servio de consulta
ao produto RELATO atravs da estrutura String de Dados - IP23, disponibilizado
nos ambientes do Protheus.

16. Caracteres Especiais


cTexto := StrTran(cTexto,"","a")
cTexto := StrTran(cTexto,"","a")
cTexto := StrTran(cTexto,"","a")
cTexto := StrTran(cTexto,"","a")
cTexto := StrTran(cTexto,"","a")
cTexto := StrTran(cTexto,"","a")
cTexto := StrTran(cTexto,"","a")
cTexto := StrTran(cTexto,"","a")
cTexto := StrTran(cTexto,"","o")
cTexto := StrTran(cTexto,"","o")
cTexto := StrTran(cTexto,"","o")
cTexto := StrTran(cTexto,"","o")
cTexto := StrTran(cTexto,"","o")
cTexto := StrTran(cTexto,"","o")
cTexto := StrTran(cTexto,"","u")
cTexto := StrTran(cTexto,"","u")
cTexto := StrTran(cTexto,"","u")
cTexto := StrTran(cTexto,"","u")
cTexto := StrTran(cTexto,"","i")
cTexto := StrTran(cTexto,"","i")
cTexto := StrTran(cTexto,"","c")
cTexto := StrTran(cTexto,"","c")
cTexto := StrTran(cTexto,"","e")
cTexto := StrTran(cTexto,"","e")
cTexto := StrTran(cTexto,"","e")
cTexto := StrTran(cTexto,"","e")
cTexto := StrTran(cTexto,","," ")
cTexto := StrTran(cTexto,"."," ")
cTexto := StrTran(cTexto,"?"," ")
cTexto := StrTran(cTexto,"!"," ")
cTexto := StrTran(cTexto,""," ")
cTexto := StrTran(cTexto,""," ")
cTexto := StrTran(cTexto,"*"," ")
cTexto := StrTran(cTexto,"/"," ")
cTexto := StrTran(cTexto,"\"," ")
cTexto := StrTran(cTexto,"'"," ")
cTexto := StrTran(cTexto,'"'," ")

17. Procname
Procname(n)
n - varia de 1 a 12; v colocando valores at aparecer o nome da funo. Depois
trate com:
If procname(n) == "nome encontrado"
return
EndIf

18. Senha com *


Estou criando uma tela onde o usuario deve digitar uma senha em uma MSGET, porm
necessrio que quando o usurio estiver digitando a senha, v aparecendo
Asteriscos '*' no lugar do da senha.
Alguem sabe como fao issso ?
Obrigado
Eduardo
Repondido por
: MARCELO_LA em 10/5/2006 09:10:00
Private cSenhaAtu := SubStr(DTOC(dDataBase),2,1)+;
SubStr(DTOC(dDataBase),1,1)+;
SubStr(DTOC(dDataBase),5,1)+;
SubStr(DTOC(dDataBase),4,1)+;
SubStr(DTOC(dDataBase),8,1)+;
SubStr(DTOC(dDataBase),7,1) // 10/05/06 ser 015060
@ 001,001 TO 100,400 DIALOG oDlg TITLE "Senha"
@ 005,005 Say "Digite a senha do dia" Color 255
@ 005,065 Get cSenhadi Valid Senha() PASSWORD
@ 020,010 BUTTON "Avancar-->" SIZE 40,10 Action(Close(oDlg),Avancar())
ACTIVATE MSDIALOG oDlg CENTERED
Return
Static Function Senha
If cSenhadi <> cSenhaAtu
MsgBo"Senha invalida. Verifique","Informacao","STOP")
Return .F.
Endif
Return

Repondido por
: EDUARDOCSEH em 10/5/2006 10:22:00
Obrigado Marcelo

19. MArkbrowse
@ 048,347 BUTTON "Faturamento" SIZE 55,12 ACTION Close()
@ 57,03 To 165 ,343
@ 64,140 SAY "INFORMAES GERAIS"
@ 154,345 BUTTON "Sair" SIZE 55,12 ACTION Close(oEntra)
//

// Monta MarkBrowse...

//

oBrowse := IW_Browse(75,09,160,335,"_trabalho",,,acampos)
oBrowseBROWSE:BLDBLCLICK := || Detalhes()
ACTIVATE DIALOG oEntra ON INIT Eval(|| MsAguarde(), _trabalho->(DbGoTop()),
oBrowseBrowse:Refresh(), ) Centered

20. ndice Temporrio


cIndTemp := CriaTrab(Nil,.f.)
IndRegua("TRB2",cIndTemp,"UNIDAD+DESCEND(STR(TOTDP))")

21. MSNewGetDados
Estou usando uma msNewGetDados e tenho a seguinte dvida:
O primeiro campo do aCols um numero de NF. Este numero no ser digitado e sim
coletado via leitos de cdigo de barras. O que preciso que assim que foi feita a leitura do
codigo de barras, o sistema crie uma nova linha abaixo e posicione o cursor na mesma sem
que seja necessrio teclar a seta para baixo. Para que possa coletar varias notas, uma em
cada linha.
Obrigado
Eduardo Repondido por : BINDO em 24/5/2006 21:37:00
Segue abaixo o exemplo que o Marcelo Colato postou:
Incio da rotina

//As linhas abaixo configuram o browse


//Criao da GetDados com 3 colunas
oGet := MsGetDados():New(015, 005, 120, 270, 5, "U_GcpLnOk(n)", "U_GcpLnOk", "",
.t., "Z9_DESCRIC", "Z9_FILTRA",, .F., _aLimite[Val(_cNivel)],,,, "U_GpcDel('" +
_cNivel + "')")
//Quando alterar algum campo, atribuir o bloco bEditCol, pois sempre que executado ele
se perde
oGet:cFieldOk := "U_Teste()"

Continua rotina
//A funo teste atribui o bloco ao evento
USER FUNCTION Teste()
oGetBrowse:bEditCol := || U_fMudaLinha()
Return(.t.)
//A funo abaixo faz a mgica...

USER FUNCTION fMudaLinha()


IF oGetBrowse:nColPos == 2 .and. n == Len(aCols) //Verifica se a coluna que acabou de
ser editada a penltima e se a linha a ltima
oGet:AddLine() //Adiciona uma linha nova
oGetBrowse:nColPos := 2 //Muda a coluna para a 2
oGetBrowse:Refresh() //Atualiza o browse
ENDIF
Return
Paulo Bindo

22. Importao de Bitmap


/ ATEN+O ISTO % APENAS UM
EXEMPLO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Function LeBMP()
Local cArq := "*.jpg"
Local aDir := Directory(cArq)
Local oDlg, oImages
Local x,cCodigo
dbSelectArea("SB1")
dbSetOrder(1)
// Crie uma DIALOG qq apenas para ser o Owner do Objeto Repository
@ 1,1 TO 100,10 DIALOG oDlg TITLE "Importacao Arquivo BMP"
// Crie um Repositorio de Imagens usando a CLASSE
@ 0,0 REPOSITORY oImages SIZE 1,1 OF oDlg
// Jogue um boto qq
@ 10,10 BMPBUTTON TYPE 01 ACTION (lRodar:=.T.)
Activate Dialog oDlg Centered
If lRodar
// Varrer o diretrio onde vc tem as imagens.....
For x := 1 to Len(aDir)
// SubEntendo que vc jogou o NOME DO ARQUIVO JPG com o cdigo do Produto
que vc quer associar a imagem, certo !!!
// Exemplo:
// 98387.jpg vc jogou este nome para a imagem do produto 98387
// 58678.jpg vc jogou este nome para a imagem do produto 58678
// 44550.jpg vc jogou este nome para a imagem do produto 44550
// Pegar o nome do arquivo com a extenso
cArquivo := aDir[x][1]
// Ai vc separa a parte do nome do arquivo que contenha o Cdigo do Produto
cCodigo := Upper( alltrim( Subs(cArquivo,1,AT(".",cArquivo) -1 ) )
// Procura o cara no SB1

dbSeek(xFilial("SB1")+cCodigo)
// Se Encontrou
If Found()
// Loca o Registro
If RecLock("SB1",.F.)
// Insere a imagem no Repositrio de Imagens
oImages:InsertBMP(cArquivo)
// Grava no SB1, o cdigo do Repositrio de Imagens
B1_BITMAP := cCodigo
// Libera o Registro
MsUnLock()
Endif
Endif
Next x
Endif
Return

23. Rotina automtica nota fiscal de entrada


Bom dia pessoal, estou precisando de uma ajuda, acontece que passo os seguintes
parametros para a funao:
funao inicial cria estes dois arrays:
_aSF1 := "N",TRB4->NUMEROCO,TRB4>SERIE,_dData,_cCODFOR,_cLojFor,"CTR",RIGHT(_cARQUIVO,30)
_aSD1
:= "10.9999.325",1,TRB4->FRETEVLTOT,_cTES,"1353"
Depois chama esta outra funao:
_cNumNota := GetSx8Num("SF1","F1_DOC") //NUMERO DA NOTA
aCabNF:=
;
"F1_TIPO" ,_aCabec[01] ,Nil,; // Tipo
"F1_FORMUL" ,"N"
,Nil,; // Tipo
"F1_DOC" ,_cNumNota ,Nil,; // Tipo
"F1_SERIE" ,_aCabec[03] ,Nil,; // Serie
"F1_DTDIGIT" ,_aCabec[04] ,Nil,; // Data Digitacao
"F1_EMISSAO" ,_aCabec[04] ,Nil,; // Emissao
"F1_FORNECE" ,_aCabec[05] ,Nil,; // fornecedor
"F1_LOJA" ,_aCabec[06] ,Nil,;
"F1_ESPECIE" ,_aCabec[07] ,Nil,; // Data de emissao
"F1_COND" ,"1"
,Nil,; // Data de emissao
"F1_TIPODOC" ," "
,Nil,; // Tipo DOCUMENTO
"F1_FRETE" ,_aItens[03] ,Nil,; // Frete
"F1_NUMCONH",_aCabec[02] ,Nil,; // Numero do Conhecimento
"F1_LOCAL",_aCabec[02] ,Nil,; // Numero do Conhecimento
"F1_NOMEARQ" ,_aCabec[08] ,Nil; // NOME DO ARQUIVO IMPORTADO
//"F1_TIPODOC" ," "
,Nil,; / Tipo DOCUMENTO
aItens:=
;
"D1_TIPO" ,_aCabec[01] ,Nil,; // Tipo
"D1_DOC" ,_cNumNota ,Nil,; // Tipo
"D1_SERIE" ,_aCabec[03] ,Nil,; // Serie
"D1_COD" ,_aItens[01] ,Nil,; // Tipo de pedido
"D1_QUANT" ,_aItens[02] ,Nil,; // Codigo do cliente
"D1_VUNIT" ,(_aItens[03]/_aItens[02]) ,Nil,; // Loja do cliente
"D1_TOTAL" ,_aItens[03] ,Nil,; // Loja do cliente
"D1_TES" ,_aItens[04] ,Nil; // Codigo da condicao de pagamanto*
_aItPai :=
Aadd(_aItPai,aItens)
lMsErroAuto := .F.

Begin Transaction
//MsExecAuto(|x,y,z|Mata103(x,y,z),aCabNF,_aItPai,3) //3->inclusao
Mata103(aCabNF,_aItPai,3) //3->inclusao
End Transaction
----------------------------------------------Acontece que simplesmente nao grava os campos:
"F1_NUMCONH",_aCabec[02] ,Nil,; // Numero do Conhecimento
"F1_NOMEARQ" ,_aCabec[08] ,Nil; // NOME DO ARQUIVO IMPORTADO
estes eu os criei pelo configurador.
Agraceo. Repondido por : BINDO em 26/5/2006 20:46:00
No me lembro, mas acho que no vai gravar.
O que vc pode fazer depois do msexecauto colocar:
If !lmserroauto
posiciona e manda gravar
endif
Paulo Bindo

24. Logfile
Estou fazendo uma atualizaao em uma tabela e registrando todas elas em um array, depois
crio um arquivo txt para o usurio saber o que foi alterado,
gostaria de exibir estas alteraoes no final do processo, em uma janela com um botao OK
ou algo do tipo,
ja efetuei vrias pesquisas, porem nao encontrei nada,
Qualquer ajuda de grande valia,
Muito Obrigado,
Rogerio Nicolete
rogerio@clesscosmeticos.com.br Repondido por : NALDO em 18/5/2006 10:11:00
Rogerio,
Voc pode utilizar a funo em Advpl fMakeLog() para mostrar as alteraes em um Log
no formato dos relatrios do siga.
A sintaxe da funo a seguinte:
fMakeLog(aLogFile,aLogTitle,cPerg,lShowLog,cLogName,cTitulo,cTamanho,cLandPort,a
Ret,lAddOldLog)
E a Descrio dos parmetros :
aLogFile//Array que contem os Detalhes de Ocorrencia de Log
aLogTitle//Array que contem os Titulos de Acordo com as Ocorrencias
cPerg//Pergunte a Ser Listado
lShowLog//Se Havera "Display" de Tela
cLogName//Nome Alternativo do Log
cTitulo//Titulo Alternativo do Log
cTamanho//Tamanho Vertical do Relatorio de Log ("P","M","G")
cLandPort//Orientacao do Relatorio ("P" Retrato ou "L" Paisagem )
aRet//Array com a Mesma Estrutura do aReturn
lAddOldLog//Se deve Manter ( Adicionar ) no Novo Log o Log Anterior
[]s
Naldo Repondido por : NICOLETE em 18/5/2006 11:48:00
Valeu Naldo,
Ficou timo!

25. Ler arquivo texto e Excel


#INCLUDE "RWMAKE.CH"
#INCLUDE "TOPCONN.CH"
/*

Programa lertxt
Autor Rodnei A. Tavares
Data 03/30/06

Desc.
LER ARQUIVO TXT DO PONTO

Uso
xxxx

*/
User Function lertxt()
//Cria estrutura do arquivo temporario
cArqTxt := CriaTrab(NIL,.F.)
cArqTxt := Alltrim(cArqTxt)+".CSV"
cEol:=CHR(13)+CHR(10)
cNomTrb:=FCreate(cArqTxt,0)
//faz a gravacao no arquivo temporario que o excel abrir
cTxt:="Matricula"+";"+"Data"+";"+"Hora"
FWrite(cNomTrb,cTxt+cEol)
/////LER O ARQUIVO TEXTO
FT_FUSE("c:\caminho\nome do arquivo.txt")
FT_FGOTOP()
While !FT_FEOF()
cIDENT := FT_FREADLN()
cTxt:=Substring(cIDENT,10,6)+";"+Substring(cIDENT,16,2)+"/"+Substring(cIDENT
,18,2)+"/"+Substring(cIDENT,20,2)+";"
cTxt+=Substring(cIDENT,22,2)+":"+Substring(cIDENT,24,2)+"
FWrite(cNomTrb,cTxt+cEol)
FT_FSKIP()
Enddo
//ATE AQUI
//Gera integrao com o Excel
cDirDocs
:= MsDocPath()
aStru
:=
cPath
:= AllTrim(GetTempPath())
oExcelApp
:= NIL
FClose(cNomTrb)
CpyS2T( cArqTxt, cPath, .F. )
If ! ApOleClient( 'MsExcel' )
MsgStop( 'MsExcel nao instalado' )

Return Nil
EndIf
oExcelApp := MsExcel():New()
oExcelApp:WorkBookspen( cPath+cArqTxt) // Abre uma planilha
oExcelApp:SetVisible(.T.)
lIntExcel := .T.
Return NIl

26. Embaralha / Desembaralha


Gostaria de saber se alguem conhee o funcionamento interno da funao Embaralha()
estou tentando reproduzir seu funcionamento em outra linguagem e gostaria
muito de deajuda
[]'s

Repondido por

: NALDO em 8/6/2006 09:26:00

Guaranta,
O que a funo Embaralha faz reposicionar os caracteres passados como
parmetro, por exemplo:
Local cNoEmbaralha := "123456"
Local cEmbaralha
:= Embaralha( cNoEmbaralha , 1 ) //"415263" Embaralha
cNoEmbaralha := Embaralha( cEmbaralha , 0 ) //"123456" //Desembaralha
Observe o seguinte:
No embaralhamento, foram alteradas as posies dos caracteres como segue:
O Primeiro Caracter no Embaralhado foi para a Segunda Posio Quando Embaralhado
O Segundo Caracter no Embaralhado foi para a Quarta Posio quando Embaralhado
O Terceiro Caracter no Embaralhado foi para a A ltima Posio quando
Embaralhado
O Quarto Caracter no Embaralhado foi para a Primeira Posio quando Embaralhado
O Quinto Caracter no Embaralhado foi para a Terceira Posio quando Embaralhado
O Sexto Caracter no Embaralhado foi para a Quinta Posio quando Embaralhado.
Observe com 10 Caracteres:
Local cNoEmbaralha := "1234567890"
Local cEmbaralha
:= Embaralha( "1234567890" , 1 )

//"4815926037"

Local cNoEmbaralha := Embaralha( "1234567890" , 0 )

//"1234567890"

Verifique que o Posicionamento Modificado. Sugiro vc, atravs do Debug do IDE


chamar a funo Embaralha com o mximo da caracteres possveis para obter a
lgica de embaralhamento. Inicie com 3 Caracteres uma vez que a funo Embaralha
no faz o "Embaralhamento" com apenas dois caracteres.
Ex.:
Embaralha(
Embaralha(
Embaralha(
Embaralha(
Embaralha(
Embaralha(
Embaralha(
Embaralha(

"123" , 1 )
"1234" , 1 )
"12345" , 1 )
"123456" , 1 )
"1234567" , 1 )
"12345678" , 1 )
"123456789" , 1 )
"1234567890" , 1 )

//"321"
//"4321"
//"32154"
//"415263"
//"3741526"
//"48372615"
//"372615948"
//"4815926037"

E Assim por Diante. Descobrindo como funciona ser facil criar a sua funo.

Observe que podemos Embaralhar tanto usando 0 quanto 1 como segundo parmetro. O
importante saber qual o parmetro que foi utilizado para o Embaralhamento ( se
0 ou se 1 ) como no Exemplo:
Embaralha(
Embaralha(
Embaralha(
Embaralha(
Embaralha(
Embaralha(
Embaralha(
Embaralha(

"123" , 0 )
"1234" , 0 )
"12345" , 0 )
"123456" , 0 )
"1234567" , 0 )
"12345678" , 0 )
"123456789" , 0 )
"1234567890" , 0 )

//"231"
//"4321"
//"32154"
//"246135"
//"4613572"
//"75318642"
//"531864297"
//"3691470258"

Bom Divertimento.
[]s
Naldo
Repondido por
: GUARANTA em 8/6/2006 10:07:00
Grande Naldo !!!
pow amigo... valeu mesmo... jah consigo reproduzir quase que com
exatido o que acontece com a funo... na verdade a funo em si eu jah to
refazendo ....
mas .. observa o seguinte comigo ...
No cado aqui a funo eh usada com o parametro 0 ... chequei pela
comparao dos resultados
.... Ao usar Embaralha("Administrador
",0) consegui ter esse resultado - rnA
aid dsm oti r
mas ao comparar com o que eh gerado no banco - rnA aid dsmXoti>r ... nota-se uma
pequena alterao tida pela incluso dos caracteres 'X' e '>' ... dae fui testar
pela ide .. e nela tenho o mesmo retorno do Embaralha - rnA aid dsm oti r ... .
Meu velho.. vc sabe me dizer . ou sei la tem alguma ideia ??? doc que
possa me indicar ??
[]'s

Repondido por

: NALDO em 8/6/2006 10:33:00

Guaranta,
A funo Embaralha no adiciona Caractere algum no processo de Embaralhamento.
Ela simplesmente mistura o contedo passado como parmetro. o "X" que voc
verificou no DataBase foi passado juntamente com o Contedo "Administrador" para
a Embaralha, como "Administrador X" por exemplo. Necessrio Identificar qual a
rotina e qual campo gravado para ter essa certeza.
Verifique:
Embaralha( "Administrador
Embaralha( "Administrador
[]s
Naldo.

X" , 0 ) //"rrnA aid dsmXoti"


X" , 1 ) //"itoXmsd dia Anrr"

27. Abertura de Arquivo DBF


>User Function OpenDbfFile( cPathFile , cNewAlias )
>
>Local cPathSrv
:= GetPvProfString( GetEnvServer() , "StartPath" , ""
>, GetAdv97() )
>Local cFileNoPath := RetFileName( cPathFile )
>
>Local lOpened
>
>Begin Transaction
>
>
IF !( lOpened := __CopyFile( cPathFile , cFileNoPath ) )
>
Break
>
EndIF
>
>
cNewAlias := GetNextAlias()
>
IF !( lOpened :=
>MsOpenDbf(.T.,"DBFCDX",cFileNoPath,cNewAlias,.T.,.T.,.T.,.F.)
>
Break
>
EndIF
>
>End Transaction
>
>Return( lOpened )
>
>E utiliza-la com
>
>Local cTmpAlias := ""
>IF U_OpenDbfFile( "C:\teste\teste.dbf" , @cTmpAlias )
>
dbSelectArea( cTmpAlias )
>
//.... Processe o arquivo aqui....
>
( cTmpAlias )->( dbCloseArea() )
>EndIF
>
>Obs.: Parametros da MsOpenDbf()
>
>MsOpenDbf(lNewArea,cDriver,cArquivo,cAlias,lShared,lReadOnly,lHelp,lQui
>t
>)
>
>//lNewArea - Abre a Tabela em uma nova area de trabalho ( .T. ) caso
>contrario ( .F. ) //cDriver - RDD a utilizar
>//cArquivo - Nome do Tabela
>//cAlias - Alias a ser atribuido Tabela
>//lShared - Se compartilhado .T., caso contrario .F.
>//lReadOnly - Se somente leitura .T., caso contrario .F.
>//lHelp - Se, caso nao tenha aberto a tabela, mostra help
>//lQuit - Se, caso nao tenha aberto a tabela, fecha o protheus
>
>MsOpenDbf() encapsula a funo dbUseArea() com tratamento de erro e

>retorna .T. se conseguiu abrir a tabela, .F., caso contrario.


>
>[]s
>
>Naldo.
>Repondido por Enviar e-mail <mailto:mr_naldodj@nt.universo.edu.br
>NALDO em 14/6/2006 15:43:00
>Fred,
>
>Para que seja possvel abrir um .dbf o arquivo dever estar abaixo do
>RootPath do protheus. Para tanto, utilize a funo __CopyFile() para
>copiar o arquivo como em:
>
>User Function OpenDbfFile( cPathFile , cNewAlias )
>
>Local cPathSrv
:= GetPvProfString( GetEnvServer() , "StartPath" , ""
>, GetAdv97() )
>Local cFileNoPath := RetFileName( cPathFile )
>
>Local lOpened
>
>Begin Transaction
>
>
IF !( lOpened := __CopyFile( cPathFile , cFileNoPath ) )
>
Break
>
EndIF
>
>
cNewAlias := GetNextAlias()
>
IF !( lOpened :=
>MsOpenDbf(.T.,"DBFCDX",cFileNoPath,cNewAlias,.T.,.T.,.T.,.F.) )
>
Break
>
EndIF
>
>End Transaction
>
>Return( lOpened )
>
>E utiliza-la com
>
>Local cTmpAlias := ""
>IF U_OpenDbfFile( "C:\teste\teste.dbf" , @cTmpAlias )
>
dbSelectArea( cTmpAlias )
>
//.... Processe o arquivo aqui....
>
( cTmpAlias )->( dbCloseArea() )
>EndIF
>
>Obs.: Parametros da MsOpenDbf()
>
>MsOpenDbf(lNewArea,cDriver,cArquivo,cAlias,lShared,lReadOnly,lHelp,lQui
>t
>)
>
>//lNewArea - Abre a Tabela em uma nova area de trabalho ( .T. ) caso
>contrario ( .F. ) //cDriver - RDD a utilizar
>//cArquivo - Nome do Tabela
>//cAlias - Alias a ser atribuido Tabela
>//lShared - Se compartilhado .T., caso contrario .F.

>//lReadOnly - Se somente leitura .T., caso contrario .F.


>//lHelp - Se, caso nao tenha aberto a tabela, mostra help
>//lQuit - Se, caso nao tenha aberto a tabela, fecha o protheus
>
>MsOpenDbf() encapsula a funo dbUseArea() com tratamento de erro e
>retorna .T. se conseguiu abrir a tabela, .F., caso contrario.

28. Aqui

29. Aqui

30. Aqui

31. Aqui

32. Aqui

33. Aqui

34. Aqui

35. Aqui

36. Aqui

37. Aqui

38. Aqui

39. Aqui

40. Aqui

41. Aqui

42. Aqui

43. Aqui

44. Aqui

45. Aqui

46. Aqui

47. Aqui

48. Aqui

49. Aqui

50. Aqui

51. Aqui

52. Aqui

53. Aqui

54. Aqui

55. Aqui

56. Aqui

57. Aqui

58. Aqui

59. Aqui

60. Aqui

61. Aqui

62. Aqui

63. Aqui

64. Aqui

65. Aqui

66. Aqui

67. Aqui

68. Aqui

69. Aqui

70. Aqui

71. Aqui

72. Aqui

73. Aqui

74. Aqui

75. Aqui

76. Aqui

77. Aqui

Você também pode gostar