segunda-feira, 7 de dezembro de 2009
quarta-feira, 2 de dezembro de 2009
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
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
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
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
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
quarta-feira, 5 de agosto de 2009
sábado, 1 de agosto de 2009
sexta-feira, 31 de julho de 2009
sexta-feira, 24 de julho de 2009
terça-feira, 21 de julho de 2009
segunda-feira, 20 de julho de 2009
quarta-feira, 15 de julho de 2009
quinta-feira, 25 de junho de 2009
quinta-feira, 18 de junho de 2009
quarta-feira, 17 de junho de 2009
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
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.
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#)
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
segunda-feira, 11 de maio de 2009
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')
map
testeproc
end
code
testeproc()
testeproc procedure
code
message('ola')
terça-feira, 5 de maio de 2009
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')
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
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)
loop a# = 1 to record(cola) by 1
bet(Cola,q#)
end
get(cola,campo) !Busca um resitro
add(cola)
put(cola)
delete(cola)
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
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)
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)
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')
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
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
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)
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()
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()
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
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
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
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
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
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)
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)
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
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
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
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
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
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
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
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
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
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
tbl:campo=xxx
access:tabla.fetch(tbl:chave)
if error()
tbl:campo=xxx
access:Tabla:update()
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])
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 - 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
!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
quarta-feira, 29 de abril de 2009
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')
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
Open Report
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()
ViewXML( xmlDoc3 )
xmlDoc3.Release()
Assinar:
Postagens (Atom)