quinta-feira, 15 de outubro de 2009

Pegar ultimo dia do mes - matos informatica - 15 10 09 08:31



LOC:DataFinal = Date(Month(LOC:DataInicial) + 1 , 1 , Year(LOC:DataInicial)) - 1


sexta-feira, 25 de setembro de 2009

Exemplo Basico de leitura de arquivo xml Clarion - Matos Informatica 25 09 09

http://f1.grp.yahoofs.com/v1/YD29SoTbKhf3kdRL-Sm8nSpF17XBFoEhHzKgN2m2cC-G05Dd80gS2q3ZlIY_Ilks98V-CdR7BERGXumFeGNuYDslnABk/ExemploLeituraArquivoExcel.txt


Exemplo básico de leitura de um arquivo XLS, criando uma Queue

SETCURSOR(CURSOR:Wait)
?Excel{PROP:Create} = 'Excel.VBAModule'
?Excel{PROP:DoVerb} = -2
?Excel{'Application.Application.Visible'} = FALSE
?Excel{'Application.Workbooks.Open("'& NomeArquivoPlanilha &'")'}
?Excel{'Application.Sheets.Item('& QualPlanilha &').Select'}

DISPLAY

?Excel{'Application.Range("A1").Select'} !Selecionar a Celula A1
?Excel{'Application.Selection.SpecialCells(11).Select'} !Selecionar a ultima linha da planilha
end# = ?Excel{'Application.Selection.Row'} !Pegar o numero da ultima linha da planilha
?Excel{'Application.Range("A1").Select'}

FREE(QFilial)

?Excel{'Application.Range("A1").Select'} !Verifica se é para ler a legenda
IF CLIP(?Excel{'Application.ActiveCell.Value'}) = 'LEGENDA'
?Excel{'Application.Range("A2").Select'}
IF CLIP(?Excel{'Application.ActiveCell.Value'}) = 'Filial'
LOOP IX# = 3 TO end# !Iniciar na linha 3 até a ultima linha
?Excel{'Application.Range("A' & IX# & '").Select'}
IF NOT CLIP(?Excel{'Application.ActiveCell.Value'}) > 0 THEN BREAK. !Verificando se a celula está sem valor,
QF:CodFilial = CLIP(?Excel{'Application.ActiveCell.Value'}) !Pegar o valor da celular selecionada
QF:Cor = ?Excel{'Application.Selection.Interior.ColorIndex'} !Pegar a cor da celular selecionada
ADD(QCoresFilial)
END
END
END



sábado, 19 de setembro de 2009

Gerando um relatorio Diretamente para Pdf - Matos Informatica Ltda

Gerando um relatorio Diretamente para Pdf -Gescla-forum



Se você possui o Clarion 6 versão Enterprise ou comprou separadamente os templates de Relatórios avançados, pode gerar um relatório diretamente para um arquivo PDF, sem que o usuário precise acessar a opção no menu de Visualização. Para fazer isto, uma vez habilitado o uso do Template, na extensão local do relatório, na guia General, configure o output name type para uma variável, e crie uma variável local que receberá o nome do relatorio, por exempo: LOC:Relpdf, do tipo sring com 256 caracteres. A variável pode ser selecionada para a extensão, uma vez que tenha sido criada.
Nas propriedades do Relatório, na giua Report Targets, selecione Report Target como Other, e Other Target como PDF.
Nas opções do Preview, configure o Skip Preview como True.
No embed Begining of Procedure After Opening Files, defina o nome do relatório.
O relatório será impresso diretamente para um PDF, sem que o usuário precise intervir.
_________________
Julio César Pedroso é analista desenvolvedor Clarion. Programa em Clarion, Windev, c# e PlPgsql. Atualmente desenvolve projetos na empresa Pedroso Informática, www.pedrosoinformatica.com.br e trabalha com a ferramenta Visual Studio 2005

domingo, 6 de setembro de 2009

Som Programa Clarion - Matos Informatica 06 09 09 08:42

http://www.par2.com/




PROGRAM
!--------------------------------------------------------------------------
! AUTHOR: Larry Sand
! Sample program to illustrate the use of PlaySound() API to play
! a wave file from disk and linked as a resource of the program.
!
! This program requires the Drum.wav file from the Clarion event manager
! example program. It also requires that the Drum.wav file be converted to
! a resource and linked into the program for the SND_RESOURCE version of the
! API call to work.
!
! The WavRes.RC contains a sample script to create the .RES for this project.
!---------------------------------------------------------------------------
MAP
MODULE('Win32')
PlaySound(*CSTRING pszSound, UNSIGNED hMod, UNSIGNED fdwSound),BOOL, PROC, PASCAL, RAW, NAME('PlaySoundA')
END
END

SND_NOWAIT EQUATE(002000h) !0x00002000L /* don't wait if the driver is busy */
SND_ALIAS EQUATE(010000h) !0x00010000L /* name is a registry alias */
SND_ALIAS_ID EQUATE(110000h) !0x00110000L /* alias is a predefined ID */
SND_FILENAME EQUATE(020000h) !0x00020000L /* name is file name */
SND_RESOURCE EQUATE(040004h) !0x00040004L /* name is resource name or atom */

WaveFileName CSTRING(257)

CODE

WaveFileName = 'Drum.wav'
IF PlaySound(WaveFileName, 0, SND_FILENAME)
MESSAGE('Played wav file from disk')
END

WaveFileName = 'DRUMROLL'
IF PlaySound(WaveFileName, SYSTEM{PROP:AppInstance}, SND_RESOURCE)
MESSAGE('Played wav file linked as a resource')
END


Informacoes Computador - Abc Free - Matos Informatica - 06 09 09 08:28



Template Abc

sábado, 5 de setembro de 2009

Outlook Ocx - Como Fazer - 05 09 09 14:16


clarion pubishr.com





Define this local variable
citem Cstring(20)


Define this local window
Window WINDOW('Send a Message'),AT(,,338,100),SYSTEM,GRAY,DOUBLE
OLE,AT(20,6,80,20),USE(?Ole1),COMPATIBILITY(020H)
END
BUTTON('Button 2'),AT(21,30,60,20),USE(?Button2),#ORIG(?Button2)
END


Embed this in a button
?ole1{prop:create}='outlook.application'
cItem=?ole1{'createItem(0)'}

if citem[1]<>'`' then
Message('no mail item created - error')
else
?ole1{citem&'.to'} ='james@clarionfoundry.com'
?Ole1{citem&'.from'}='james@craperoo.com'
?ole1{citem&'.subject'}='test message ' & random(1,9999999999999999999999)
?ole1{citem&'.body'}='text message'
?ole1{citem&'.send'}
?ole1{prop:release}=citem
citem=''
clear(citem)
end
display



http://www.clarionpublisher.com/Site/index.aspx?Sitename=Clarionfoundry

quinta-feira, 6 de agosto de 2009

Case Message / com Opcoes Clarion Matos - 06 08 09 05:49






CASE MESSAGE('Continuar?','Titulo',ICON:Question,'&Sim|&Nao|&Outra',3,2)
OF 1
MESSAGE('Aqui a resposa para Sim')
OF 2
MESSAGE('Aqui a resposa para Nao')
OF 3
MESSAGE('Aqui a resposa para Outra opcao')
END


CASE MESSAGE('Sair','Tit',ICON:Question,BUTTON:Yes+BUTTON:No,BUTTON:No,1)
OF BUTTON:No
MESSAGE(' no ')
OF BUTTON:Yes
MESSAGE('yes ')
END



quinta-feira, 18 de junho de 2009

Clarion - Comandos - 18 06 09 14:55



TESTE1 ROUTINE
DATA
Loc:teste string(255)
CODE
IF LOC:TESTE='SIM'
ELSE
END

quinta-feira, 21 de maio de 2009

Mensagem Clarion com Pergunta - Clarion/matos/amarildo

CASE MESSAGE('Você deseja Gerar a página HTML?','Sucesso na geração do Arquivo',ICON:Question,BUTTON:Yes+BUTTON:No,BUTTON:No,1)
OF BUTTON:No
CYCLE
OF BUTTON:Yes
DeleteFile('\amarildo\a.txt')
end

Line Printer - Aumentar para limitacao caracteres - 21 05 09

hpvBuffer STRING(2048) <- aqui aumenta tamanho
Correção da limitação de 500 caracter por linha do Lineprint para 2048 caracteres. Esse erro foi verificado devido a remessa dos arquivos contabeis exigir 600 caracteres. Caso alguem passe por isso é só mudar dentro do template para o tamanho que achar necessário.

quarta-feira, 13 de maio de 2009

Clarion - Queue - Pegar Campos (13 05 09)

LOOP
Campo# += 1
Nome" = WHO(ListQueue,Campo#)
if Nome" = '' then
Campo# -= 1
BREAK
END
END

message(Campo#)

terça-feira, 12 de maio de 2009

Clarion - Programa Manual


program
map
testproc(string)
end

code
testproc('teste de ')

testproc procedure(mensagem)
code
message(mensagem)

sábado, 9 de maio de 2009

Clarion - Primeiro Programa - 09 05 09 08:20

program

map
testeproc
end

code
testeproc()

testeproc procedure
code
message('ola')

terça-feira, 5 de maio de 2009


Para mostrar texto na caixa de dialogo, coloque o seguinte comando..:

?Prompt2{PROP:Text} = 'Ex1 ' & |
'Cont1 ' & |
'fina.'

segunda-feira, 4 de maio de 2009

Clarion - Xml - IqXml - Como Fazer

!After Global Includes
INCLUDE('iQXML.inc','Equates')
--
!Before File Declarations
SOFTBALL FILE,DRIVER('TOPSPEED'),PRE(TEA),CREATE,BINDABLE,THREAD
LastNameKey KEY(TEA:LastName),DUP,NOCASE
Record RECORD,PRE()
Id LONG
FirstName STRING(30)
LastName STRING(30)
Hits SHORT
END
END

ASC2:ASCIIFile FILE,PRE(ASC2),DRIVER('ASCII'),NAME(ASCIIFileName),create
RECORD RECORD,PRE()
STRING STRING(5000)
END
END
----
!Inside the Global Map
INCLUDE('iQXML.inc','Modules')

domingo, 3 de maio de 2009

Diretorio - exemplo

\banco\exemplo\diretorio

Queue - Copiar em memoria

Queue - Copiar em memoria

loop a# = 1 to record(cola) by 1
bet(Cola,q#)
end

get(cola,campo) !Busca um resitro
add(cola)
put(cola)
delete(cola)

Form - apertar um botao

Form - apertar um botao

post(Event:Accepted,?boton)

Browse - subir,descer registro

Browse - subir,descer registro

Windo Manager - init - (pr-9000)

post(event:scrollUp,?browse) !subir um registro
post(event:scrollDown,?browse) !descer um registro
post(event:scrolltop,?browse) !primeiro um registro
post(event:scrollBottom,?browse)!ultimo um registro

Menu - PopUp Menu de um browse

Menu - PopUp Menu de um browse

Window Manager - Init - Prepare Alert Key(Pr-9001)

Brw1.PopUp.AddItemMimic('Texto',?Boton)

Menu - PopUp Menu de um browse

Menu - PopUp Menu de um browse

Window Manager - Init - Prepare Alert Key(Pr-9001)

Brw1.PopUp.AddItemMimic('Texto',?Boton)

Browse - Ordenar antes de abrir

Browse - Ordenar antes de abrir

Local Objects - Brows on Tabela - InitSort (pr-10000)

Brw1.SetOrder('tbl:Campo')

Browse - Resetar

Browse - Resetar

setcursos(cursor:wait)
brw1.ResetFromFile()
Brw1.ResetFromBuffer()
ThisWindow.Reset(True)
Setcursos

Browse - Resetar

Browse - Resetar

setcursos(cursor:wait)
brw1.ResetFromFile()
Brw1.ResetFromBuffer()
ThisWindow.Reset(True)
Setcursos

Browse - Chave composta em campos

Browse - Chave composta em campos

Chave de uma tabela
-------------------
Empresa
Cliente


colocar em Range Limite sempre o ultimo campo de uma chave que se quer limitar
no caso cliente

se quizer empresa colocar

TBL:EMPRESA=GLO:EMPRESA
BRW1.ADDRANGE(TBL:EMPRESA)
BRW1.APPLYRANGE()
thisWindow.Reset(True)

Se quizer cliente colocar

TBL:Cliente=GLO:Cliente
BRW1.ADDRANGE(TBL:EMPRESA)
BRW1.APPLYRANGE()
thisWindow.Reset(True)

Report - como colocar filtro antes de imprimir

Report - como colocar filtro antes de imprimir

Open Report - code (pr-5000)

ThisReport.SetFilterr('TBL:CAMPO1=xxx')
ThisReport.ApplyFilter()

Report - como colocar ordem antes de imprimir

Report - como colocar ordem antes de imprimir

Open Report - code (pr-5000)

ThisReport.SetOrder('TBL:CAMPO1','TBL:CAMPO2','-TBL:CAMPO3')
ThisReport.ApplyOrder()

Browse - controlar browse antes de um form

Browse - controlar browse antes de um form

Local Object - Browse on tabla - ask(Byte REquest) (pr-4999)

if request = insertREcord

Browse - controlar browse antes de um form

Browse - controlar browse antes de um form

Local Object - Browse on tabla - ask(Byte REquest) (pr-4999)

if request = insertREcord

Browse - filtrar antes de mostrar - 1

Browse - filtrar antes de mostrar

Local Object - Browse on tabla - ValidateRecord (pr-4500)

if condicion then return Record:Filtered;end

Browse - filtrar antes de mostrar - 1

Browse - filtrar antes de mostrar

Local Object - Browse on tabla - ValidateRecord (pr-4500)

if condicion then return Record:Filtered;end

Browse - filtrar antes de mostrar

Browse - filtrar antes de mostrar

Local Object - Browse on tabla - initsort (pr-10000)

if condicion = 1
brw1.setfilter('(tcon:cvp_b<>0)')
brw1.ApplyFilter()
end

Browse - como colocar codigo em cada registro lido

Browse - como colocar codigo em cada registro lido

Local Object - Browse on tabla - SetQueueRecord(pr-2500)

Browse - como colocar codigo em cada registro lido

Browse - como colocar codigo em cada registro lido

Local Object - Browse on tabla - SetQueueRecord(pr-2500)

Como forcar validacao de um campo

Como forcar validacao de um campo

Control events - Selected - Generated Code (pr-4000)

?campo{prop:touched} = true

Onde colocar codigo para validar em um campo form

Onde colocar codigo para validar em um campo form

Control Events - Accept - Generated Code (pr-7000)

if condicao
beep
message('Texto com erro','Texto ventada',&ICON:EXCLAMATION,BUTTON:CANCEL,BUTTON:CANCEL,1)
select(?)
cycle
end

se quizer testar todos botoes

case message('texto','texto1',icon:question,button:yes+button:no,button:no,1)
of button:no
select(?)
cycle
of button:yes
end

Como Sair antes de abrir windows

Como Sair antes de abrir windows

return level:fatal

Colocar Codigos depois do form - inclusao-alteracao-exclusao

Colocar Codigos depois do form - inclusao-alteracao-exclusao

Window Manager - Takecompleted (pr-5001)

if sef.request = insertREcord
if sef.request = changeREcord
if sef.request = DeleteREcord

Colocar Codigos antes do form - inclusao-alteracao-exclusao

Colocar Codigos antes do form - inclusao-alteracao-exclusao

Window Manager - Takecompleted (pr-5000)

if sef.request = insertREcord
if sef.request = changeREcord
if sef.request = DeleteREcord

Saber modo - inclusao/alteracao/exclusao

Antes de abrir saber qual modo

ADD-CHANGE-DELETE-VIEW

Window Manager - Init - Open the window(pr-8000)

IF SELF.REQUEST = INSERTRECORD
IF SELF.REQUEST = CHANGERECORD
IF SELF.REQUEST = VIEWRECORD
IF SELF.REQUEST = DELETERECORD

Igualar duas tabelas

Igualar os registros de duas tabelas

tb1:record :=: tb2:record

iguala duas tabelas indepedente das posicoes dos campos

Arquivos - Acesso Sequencial

Clear(tbl:record)
tbl:campo=xxx
set(tbk:chave,tbl:chave)
loop until access:tabla.next()
xxx
end

Excluir Registro

Clear(tbl:record)
tbl:campo=xxx
access:tabla.fetch(tbl:chave)
if error()
access:Tabla:deleterecord()
relate:tabla.delete(0)
delete(tabla)
end

Alterar - Registro

Clear(tbl:record)
tbl:campo=xxx
access:tabla.fetch(tbl:chave)
if error()
tbl:campo=xxx
access:Tabla:update()
end

Incluir - Registro

Clear(tbl:record)
tbl:campo=xxx
access:tabla.insert()
if error()
end

Acessa a um registro

clear(tbl:record_
tbl:campo=xxx
access:tabla.fetch(tbl:chave)
if not error()
end

String - Instring

Texto CLASS
Frase String(200), PROTECTED
Palabra String(20), PROTECTED
Puntero Short, PROTECTED
Delimitadores String(20), PRIVATE

Construct PROCEDURE
Inicio PROCEDURE(String Frase)
SigPalabra PROCEDURE, String
END


Texto.Construct PROCEDURE()
CODE
!cualquiera de estos caracteres pueden separar palabras
SELF.Delimitadores = ' ,;.-()][}{{_:<<>\/@#ºª^?¿¡!|"'''
SELF.Puntero = 1

Texto.Inicio PROCEDURE(String Frase)
CODE
SELF.Puntero = 1
SELF.Frase = Frase

Texto.SigPalabra PROCEDURE()
DESDE SHORT
HASTA SHORT
LETRA STRING(1)
CODE
SELF.Palabra = ''
!primero busco donde comienza la siguiente palabra (elimino delimitadores)
LOOP DESDE = SELF.Puntero TO 200
IF NOT INSTRING(SUB(SELF.Frase,DESDE,1), SELF.Delimitadores,1,1)
THEN BREAK.
END

LOOP HASTA = DESDE TO 200
Letra = SUB(SELF.Frase,HASTA,1)
IF INSTRING(Letra, SELF.Delimitadores,1,1)
BREAK
ELSE
SELF.Palabra = CLIP(SELF.Palabra) & Letra
END
END
SELF.Puntero = HASTA + 1
RETURN(SELF.Frase[Desde : Hasta])

Clarion - http direto no clarion - baixar arquivo

Http - direto no clarion
\banco\exemplo\http

Clarion - Gravar direto api windows txt

\BANCO\EXEMPLO\TXT\WRITE.APP - EVOLUTION

!Variaveis
Texto cstring 10.000
FileName cstring 200
!Variavies

!Inside the Global Map
MODULE('Windows API')
_lcreat(*CSTRING,SIGNED),SIGNED,PASCAL,RAW
_hwrite(SIGNED,*CSTRING,LONG),LONG,PASCAL,RAW
_lclose(SIGNED),SIGNED,PASCAL
END

!CODE

IF NOT FILEDIALOG('Guardar como',FileName,'Text|*.TXT|Source|*.CLW',FILE:Save + FILE:LongName)
CYCLE
END
F# = _lcreat(FileName,0)
X# = _hwrite(F#,Texto,LEN(Texto))
X# = _lclose(F#)

!code

quinta-feira, 30 de abril de 2009

Clarion - xml

set, loop...
instring, sub

quarta-feira, 29 de abril de 2009

Clarion - Xml - IqXml - Links

http://translate.google.com.br/translate?hl=pt-BR&sl=en&u=http://news.clarionlife.net/archives/tag/iq-xml&ei=z2j4Saw9yMe2B9HN5bYP&sa=X&oi=translate&resnum=5&ct=result&prev=/search%3Fq%3DiQ-XML%26hl%3Dpt-BR%26lr%3D%26sa%3DG

Xml - Template iqxml - Matos

Site:
http://www.paresi.net/clarion/index.html






!after global includes
INCLUDE('iQXML.inc','Equates')
!Inside The global map
INCLUDE('iQXML.inc','Modules')



! Load the XML file to process it

! ------------------------------- If ~Xml:LoadFromFile('InvoiceExample.xml') If ~xml:FindNextNode('Customers','Customer') Xml:PrimaryKeyCascade('CustomerName') Xml:PrimaryKeyCascade('CustomerID') IRecs = XML:LoadQueue(InvoicesQueue,True,True) End XML:Free() XML:DebugMyQueue(InvoicesQueue,'The Invoice Queue') End

terça-feira, 28 de abril de 2009

Clarion - Report - Colocar Pagina no Report

Includes / After Global Includes


include('prnprop.clw')


Open Report

Report{prop:nextpageno}=Glo:Balanco_Pagina

Clarion - Xml - Ver dados

xmlDoc3 &= XMLFileToDOM(VAR:Nfe_FdNome_xml_erro)
ViewXML( xmlDoc3 )
xmlDoc3.Release()