Você está na página 1de 25

Abrangncia

Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

O controle de Semaforo permite !e o sistema controle a "!mera#o A!tom$tica de %oc!mentos On &ine. 'emos basicamente ( f!n#)es !e gerenciam o controle do mesmo. So elas * GETSXENUM( EXPC1) +, Obtem o n-mero se !encial do alias especificado no par.metro. ROLLBACKSXE +, %escarta o n-mero pendente do sem$foro. / !sado !ando o !s!$rio cancela a opera#o 0o n!mero no 1 apro2eitado3. CONFIRMSXE +, 4onfirma o n-mero s!gerido. 5sta f!n#o de2e ser c6amada !ando da confirma#o da gra2a#o do registro. MAYIUSE +, 46eca fisicamente se !m determinado ar !i2o e7iste. O ar !i2o poder$ conter o n-mero se !encial.

09 Comandos

!"#n#dos $!%o Us&a'#o (U C(s)

8e2iso* 1(9079:00: Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10 Vers)es Anteriores

5ste rec!rso cria no2as e infinitas possibilidades para modificar a maneira pela !al escre2emos o c;digo de !ma f!n#o e a maneira pela !al podemos resol2er problemas comple7os. 5le a<!da a facilitar a man!ten#o do c;digo= e a implementa#o de normas. 5stes comandos so trad!>idos= analisados e modificados antes !e o compilador comece a trabal6ar para gerar !m ar !i2o ob<eto. O respons$2el por esta trad!#o 1 o pr1+processador !e 1 !m trad!tor inteligente !e at!a antes da gera#o do c;digo ob<eto. 5m s!a maioria= isto se res!me a encontrar os comandos no c;digo fonte e trad!>i+los para instr!#)es e f!n#)es e !i2alentes !e se ac6am no corpo da f!n#o o! no conte-do de ar !i2os .4? 0ar !i2os de cabe#al6o3. 5ste tipo de ar !i2o 0.4?3= cont1m di2ersos comandos !e sero !tili>ados por todas as f!n#)es !e conten6am a instr!#o @incl!deA em se! c;digo. 5stes mesmos comandos poderiam estar emb!tidos na f!n#o= mas para facilitar a man!ten#o= !m -nico ar !i2o .4?= pode ser incl!Bdo 0comando incl!de3 em 2$rias f!n#)es ao mesmo tempo. "o 6$ a necessidade de colocar o comando incl!de em cada f!n#o. Cma -nica men#o ao .4? no ar !i2o .D8E= ser2ir$ ao prop;sito de todas as f!n#)es nele emb!tidas. 5stes comandos so direti2as do pr1+processador e come#am sempre com o caracter @FA diretamente G s!a frente e de2em estar escritos em caracteres tipo cai7a alta. Os mais !tili>ados no Drot6e!s so* F%5HI"5 FIH%5H= o! FIH"%5H F5&S5 F5"%IH FI"4&C%5

4ada !m destes comandos pode ser colocado em !al !er parte do ar !i2o fonte= !e ser$ lido pelo pr1+processador. "o entanto= para facilitar a 2is!ali>a#o da e7istncia destes comandos e man!ten#o da f!n#o= estes comandos de2em ser colocados no inBcio do fonte. O pr1+processador s!bstit!ir$= cada ocorrncia da constante no fonte= ser$ s!bstit!Bda pela e7presso o! 2alor= !e esti2er contida diretamente G frente da mesma. A e7emplo de sinta7e e c;digo fonte para este comando 1* F%5HI"5 J'5S4 F%5HI"5 J&5S4 :7 lastKeL03

if Jn&astKeL MM J'5S4 85'C8"

5ndif if J&5S4 MM J'5S4 85'C8" 5ndif

5sta direti2a 1 m!ito -til !ando temos !m 2alor constante 2$rias 2e>es repetido dentro do c;digo fonte= !e poder$ ser alterado com fre Nncia no decorrer da 2ida -til da f!n#o. FIH%5H o! FIH"%5H O4O"S'A"'5, Oinstr!#)es, F5&S5 Oo!tras instr!#)es, F5"%IH

5sta direti2a do pr1+processador permite !e 2oc prepare aplica#)es para compila#o condicional= o! em o!tras pala2ras= se a Oconstante,= definida anteriormente 2ia direti2a %5HI"5 o! pelo Drot6e!s foi definida 0IH%5H3= as Oinstr!#)es, sero incorporadas ao c;digo ob<eto e as Oo!tras instr!#)es,= sero despre>adas. Pas se a Oconstante, no foi definida OIH"%5H, as Oinstr!#)es, sero incorporadas e as Oo!tras instr!#)es, sero despre>adas. FI"4&C%5 @OA8QCIVO,A Cma instr!#o I"4&C%5 di> ao pr1+processador para inserir o conte-do de o!tro ar !i2o em !m local determinado dentro da f!n#o. 5ste ar !i2o especificado= de2e focali>ar o!tras instr!#)es do pr1+processador !e possam ser com!ns a di2ersos m;d!los da rotina. Uso d! S)'#n*s

Dara !e o sistema possa ser !tili>ado em o!tros paBses com lBng!as diferentes ao in21s de inserirmos diretamente os te7tos no fonte do relat;rio !tili>amos o rec!rso de strings= onde atra21s de !m incl!de acessaremos o te7to em trs lBng!as diferentes 0Dort!g!s= 5span6ol e Ingls3 dependendo da forma da compila#o. / con2encionado !e o nome do incl!de se<a o mesmo nome do fonte do relat;rio para !e a man!ten#o deste relat;rio se<a o mais simples possB2el. E+!m$%o,

8elat;rio +, HAR8001.D8S Incl!de +, HAR8001.4?

0- Con)a.#%#/ando

8e2iso* 1(9079:00: Abrangncia Verso 5.07 Verso 5.08

A contabili>a#o de registros em !m sistema 58D 1 necess$rio toda 2e> !e 6o!2erem opera#oes en2ol2endo 2alores na empresa= como por e7emplo= a emisso de !ma nota fiscal= !m recebimento de din6eiro= !m pagamento na fol6a= entre o!tros. Dara !em est$ programando 1 f!ndamental !e este conceito este<a bastante sidimentado. Dara se definir a contabili>a#o em !al !er rotina de2e+se * %efinir os lan#amentos padroni>ados !e sero !tili>ados para a rotina 0cada m;d!lo o! famBlia de m;d!lo poss!i !ma se !encia l;gica3 Dreparar o programa para efet!ar as at!ali>a#)es e a contabili>a#o. 5ste detal6e 1 m!ito importante pois o lan#amento padro 1 !ma f;rm!la e o posicionamento dos registros 1 f!ndamental. 57emplo * "a rotina de e7cl!sao de nota fiscal de2e+se e7ec!tar a contabili>a#o antes do comando db%elete03. A c6amada do lan#amento cont$bil de2e estar em !m l!gar estrat1gicamente correto= pois teoricamente 1 a -ltima coisa a ser feita na rotina. "o 1 aconsel6$2el e7ec!tar a contabili>a#o e depois efet!ar o!tros comandos.

57istem trs f!n#)es !e de2ero ser !tili>adas= para !e se<a criado !m ar !i2o te7to= contendo as informa#)es a serem contabili>adas. 4omo temos : sistemas cont$beis 0SITA4O" e SITA4'R3 com procedimentos diferenciados programamos de forma identica para ambos por1m internamente as rotinas efet!am comandos diferentes. Os comandos para a contabili>a#o so * A F&n01o 2!adP'o3a

5ste f!n#o cria o cabe#al6o da contabili>a#o. / tratada de forma diferenciada para os m;d!los SITA4O" e SITA4'R. S#n)a+!,

n?dlDr2 *M ?eadDro2a0c&oteAtf= c"omDrog= S!bstr0cCs!ario=7=63= Uar !i2o= .'.3 Onde* "?dlDr2 +, Vari$2el !e conter$ o n!m. 0?andle3 do ar !i2o 0.&A"3 criado. c&oteAtf +, 4;digo do lote do m;d!lo 057.* Ati2o Hi7o* @8866A3 c"omDrog +, "ome do Drograma 057.* @A'HA060A3

cCs!ario +, Cs!$rio ar !i2o* nome do ar !i2o 057.* cAr !i2o *M V V3

A "&n01o !)P'o3a()

5m primeiro l!gar= de2e+se estar posicionado no registro= !e cont1m o 2alor G ser contabili>ado S#n)a+!,

57p"1 *M %etDro2a057p":=57p41=57p4:=57p4(3 onde 57p"1 57p": 57p41 57p4: 57p4( +, Valor 'otal da 4ontabili>a#o +, ?andle retornado da f!n#o anterior +, 4;digo do &an#amento Dadro +, "ome da rotina Teradora +, &an#amento Dadro

A "&n01o RodaP'o3a()

5sta f!n#o ir$ cria a finali>a#o da contabili>a#o. S#n)a+!,

8odaDro2a057p"1= 57p":3 onde 57p"1 +, ?andle retornado da f!n#o anterior 57p": +, Valor 'otal da contabilili>a#o

"o Hinal= o! se<a= ap;s todos registros serem processados !tili>ar a f!n#o 4A100I"4&03= c!<o ob<eti2o 1 ler o ar !i2o gerado 0.&A"3= e gerar os lan#amentos no ar !i2o SI: 0&an#amentos cont$beis3. E+!m$%o,

4A100Incl0 cAr !i2o= n?dlDr2= nOpc7= c&ote4ontabil= l%igita= lAgl!t= cOn&ine= d%ata3 Onde* Ar !i2o +, "ome do ar !i2o n?dlDr2 +, "!mero do ?eader nOpc7 +, "!mero da Opcao escol6ida

c&ote4ontabil +, "!mero do &ote l%igita +, Se Postra o! nao lAgl!t +, Se Agl!tina o! no cOn&ine +, %etermina se sera On &ine o! pelo cDro2a

11 Con4!#)o d! F#%#a% ! Com$a')#%5am!n)o d! A'6&#3

8e2iso* 1(9079:00: Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10 Vers)es Anteriores

O Sistema permite a cria#o de 2$rias Hiliais para !ma mesma empresa cadastrada= de modo !e Hiliais da mesma empresa compartil6em o! no as mesmas informa#)es como 4adastro de Drod!tos= 4lientes= etc. 5ste tratamento 1 feito internamente atra21s dos campo WWJHI&IA& obedecendo a seg!inte regra* A'6&#3os Com$a')#%5ados

Q!ando o ar !i2o esta config!rado para trabal6ar no modo compartil6ado 0W:JPO%O M V4X3= este campo ser$ gra2ado com @ @ 0 espa#os 3. %este modo o registro ficara disponB2el para todas as Hiliais. A'6&#3os E+4%&s#3os

Q!ando o ar !i2o esta config!rado para trabal6ar no modo e7cl!si2o 0 W:JPO%OM V4X 3= esta campo ser$ gra2ado com o c;digo da Hilial At!al. %este modo o registro focara disponi2el apenas para a Hilial !e o gra2o!. Dara !e o registro realmente fi !e disponB2el o! no para s!as respecti2as Hiliais = 'O%AS as rotinas !e manilp!lam registros diretamente na base de dados de2er$ 2erificar a Hilial atra21s da H!n#o 7Hilial03 = alem disto a maioria dos Bndices poss!em o campo HI&IA& na c6a2e * Sinta7e * WHI&IA&05WD413 onde= 57p41 M Alias do ar !i2o A f!n#o 7Hilial03 2erifica se o ar !i2o 1 e7cl!si2o o! compartil6ado e ira retornar @ @ se o ar !i2o for 4ompartil6ado e o c;digo da Hilial se o ar !i2o for e7cl!si2o . Dor e7emplo * 99 Dara e7ec!tar !m dbSeeK no ar !i2o de clientes * %bSelectArea0@SA1A3 %bSeeK07Hilial0@SA1A3Yc4od4liYc&o<a3 O! !m processamento no ar !i2o * %o Z6ile [5OH03 .A"%. WWJHI&IA&MM7Hilial0@01A3

Sendo o campo HI&IA& parte da c6a2e de 'odos os Bndices do sistema= este procedimento garante !e a !tili>a#o dos registros ser$ e7cl!si2a da Hilial !e crio! os mesmos no caso do ar !i2o ser 57cl!si2o= o! disponB2el para todas as Hiliais !ando o mesmo esti2er config!rado como 4ompartil6ado. \amais !se !m campo filial de !ma tabela para e7ec!tar !m dbSeeK03 em o!tra tabela. Dois !ma tabela poder$ ser compartill6ada 0campo filial em branco3= en !anto !e a o!tra poder$ ser compartil6ada 0campo filial preenc6ido3. A 2ari$2el cHilAnt cont1m a filial !e o !s!$rio est$ operando= e a 2ari$2el c5mpant cont1m a empresa e a filial T74n#4as $a'a F#%)'a*!m

"os sistemas Picrosiga= a filtragem dos dados em ambiente 4ode Rase os @%RHsA 1 feita de maneira geral pela H!n#o I"%85TCA0Darams=3 = o !e de forma geral no impede o !so de instr!#)es como S5' HI&'58 'O= %RS5'HI&'5803= %RHI&'5803 o! !al !er o!tro comando de sinta7e 7Rase. A I"%85TCA03 1 !ma f!n#o interna !e re-ne 2$rios atrati2os e facilidades para o se! !so= entre elas a possibilidade de se inde7ar e filtrar os registros atra21s dos par.metros fornecidos= ela tamb1m 1 preferencialmente !sada para !e o c;digo fi !e mais @limpoA e de f$cil interpreta#o pois dentro de s!a estr!t!ra re-ne !ma s1rie de comandos de inde7a#o e filtragem !e agili>a o processo de cria#o de Bndices e filtros em ar !i2os de trabal6o com menos lin6as de c;digo= 2e<amos o 57emplo * C5a3!s P'#m8'#as

S!a f!n#o 1 garantir !nicidade. 5m toda rela#o= por defini#o= tem+se !ma o! mais c6a2es candidatas. %essas c6a2es= !ma ser$ prim$ria e se 6o!2er mais de !ma na rela#o= essas o!tras sero definidas como c6a2e alternada. C5a3!s Es)'an*!#'as

/ !m atrib!to c!<a f!n#o 1 permitir relacionamento. 5m !ma tabela na !al o atrib!to 1 c6a2e e7terna o! estrangeira= em o!tra= o atrib!to de2e ser c6a2e prim$ria= e os 2alores dos campos so necess$rios. In)!*'#dad! R!"!'!n4#a%

'odos os 2alores da c6a2e estrangeira tem= obrigatoriamente= !e ter 2alor correspondente na c6a2e prim$ria !e se relaciona] mas nem todos os 2alores encontrados na c6a2e prim$ria= precisam ter se!s correspondentes na c6a2e estrangeira !e se relaciona. Dor e7emplo= na tabela de clientes= o campo A1J4O% 0c;digo do cliente3= 2ai estar relacionado com o!tra tabela !e indica !ais so os pedidos de 2enda colocados. %esta forma= nem todos os clientes precisam ter pedidos de 2enda colocados] mas= necessariamente= todos os pedidos de 2enda precisam de !m cliente. 4omo o D8O'?5CS foi pro<etado para o ambiente SQ&= onde a integridade referencial das tabelas 1 definida no pr;prio banco de dados atra21s de regras internas= de2emos tomar alg!mas preca!#)es com esse t;pico*

Verificar a integridade da col!na em todas as tabelas relacionadas* no pode+se alterar o taman6o do c;digo do cliente em apenas !ma tabela= caso esse c;digo se<a alterado de2e+se 2erificar as tabelas de cabecal6o e itens das notas fiscais= de tit!los a pagar e receber= etc. O sistema conta com o rec!rso de gr!pos de tabelas relacionadas= !e permite alterar o taman6o de di2ersas col!nas de !ma 2e> s; = garantindo a integridade das col!nas Verificar a integridade dos cadastros com todas as tabelas relacionadas* no pode+se e7cl!ir o c;digo do cliente se e7iste !m pedido de 2endas em aberto para esse cliente= de2e+se 2erificar todas as tabelas relacionadas antes de at!ali>ar a base de dados.Al1m disso na incl!so de cadastros de2emos !tili>ar as f!n#)es e7istc6a2 e e7istcpo para garantir !e as informa#)es de c6a2e no se<am repetidas e !e o acesso a tabelas e7ternas se<a 2alidado de maneira consistente. Verificar a at!ali>a#o da informa#o em todas as tabelas relacionadas* a integridade no se res!me a 2alida#)es de cadastros e taman6o de col!nas= de2e+se garantir no ato do desen2ol2imento !e 'O%OS os pontos relacionados ao t;pico en2ol2ido se<am analisados e se necess$rio at!ali>ados. Dor e7emplo= se ser$ at!ali>ado o saldo em esto !e de determinado prod!to "^O %5V5+S5 at!ali>ar somente o ar !i2o de saldos em esto !e= de2e+se a2aliar se o prod!to !tili>a rastreabilidade para nesse caso at!ali>ar o ar !i2o de saldos por lote= de2e+se a2aliar se o prod!to !tili>a controle de locali>a#o fisica para nesse caso at!ali>ar o ar !i2o de saldos por locali>a#o= etc. %e2e+se fa>er !m est!do antes de !al !er altera#o em at!ali>a#o de base de dados.

1- P'o*'amando 4om S45!d&%! d! R!%a)o'#os

8e2iso* 1(9079:00: Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10

4omo o sistema permite !e a emisso de relat;rios possa ser programada 0sc6ed!le3 1 f!ndamental !e se !tili>e as rotinas padr)es para a emisso dos mesmo. O controle do sc6ed!le 1 feito pela f!n#o SetDrint. Sendo assim= no 1 s!portado interface com data entrL d!rante o processo de relat;rio= 2isto !e isto in2iabili>ar$ a !tili>a#o do mesmo. A no ser em relat;rios especBficos e !e se<am in2i$2eis a !tili>a#o de s6ed!le 0e7. Impresso de 46e !es3 este procedimento de2er$ ser adotado corretamente. 4aso e7ista alg!ma entrada de dados !e se<a possB2el ser ass!mida !al !er 2alor apenas no sc6ed!le de2e+se adotar o seg!inte procedimento * Csar a 2ari$2el JJcInternet= !e se esti2er com 2alor .'. 0Verdadeiro3 estamos no processo de sc6ed!le.

19 U)#%#/ando Ro)#nas A&)oma)#4as

8e2iso* 1(9079:00: Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10 Vers)es Anteriores

A cada dia estamos criando rotinas com interface a!tom$tica para mel6orar a entrada de dados 2ia o!tros e !ipamentos= tais como coletores de dados= interface de o!tros softZares= etc. Dor1m= para nossa pr;pria portabilidade e !tili>a#o de rotinas padroni>adas= temos adotado o pr;prio programa standard= cont!do sem interferencia do !s!$rio 0digitador3. Dara tal= criamos !m mecanismo onde todos os programas !e necessitem desta regra de2em ser capa>es de @inserirA dados de forma a!tom$tica. Abai7o mostraremos como proceder * 'ome como e7emplo o PA'A:50.D8W . O 2etor a8otA!to 1 passado para o programa citado. Se este 2etor conti2er elementos= significa !e ser$ !tili>ada a 8otina A!tom$tica. 5ste 2etor de2e= !ando da !tili>a#o das rotinas a!tom$ticas= conter os dados mBnimos necess$rios para a at!ali>a#o dos ar !i2os. Ve<a a estr!t!ra do 2etor a ser en2iado para a rotina a!tom$tica. A8otA!to *M _ c4ampo= 4onte-do= Valida#o` Onde 44ampo +, 1 o campo a ser at!ali>ado= 4onte-do +, 1 o conte-do !e c4ampo 2ai receber Valida#o +, 1 a 2alida#o !e c4ampo 2ai receber.

O.s!'3a01o, A :a%#da01o $od! s!' &ma "&n01o o& &m 3a%o' ;NIL<= S! "o' ;NIL<> as 3a%#da0?!s a s!'!m &)#%#/adas $a'a o '!s$!4)#3o 4am$o s!'1o as !+#s)!n)!s no SX@= S! as 3a%#da0?!s n1o "o'!m as do SX@> !%as d!3!m s!' $assadas n&ma "&n01o= 57emplo* A8otA!to *M _ _ a%(J'Pa =a001a ="I& ` = ] _ a%(J4O%a =padr0a10100a=153 ="I& ` = ] _ a%(JCPa =aC"a ="I& ` = ] _ a%(JQCA"'a =1 ="I& ` = ] _ a%(JODa =a00000b01001a ="I& ` = ] _ a%(J&O4A&a =a01a ="I& ` = ] _ a%(J5PISSAOa =d%ataRase ="I& ` `

Dara o processo de incl!so simples= sem getdados= a 2ari$2el padro a ser !tili>ada nos programas c6ama+se a8otA!to= e para processo de incl!so com cabe#al6o e itens= as 2ari$2eis a serem !tili>adas so* aA!to4ab para o cabe#al6o= e aA!toItens para os itens da getdados.

Dara !ma incl!so simples= tomar como e7emplo o PA'A:50.D8W. Dara !ma incl!so com cabe#al6o e Btem= tomar como e7emplo o 4O"A050.D8W.

10 Ind#4!s

8e2iso* 1(9079:00: Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10 Vers)es Anteriores

A !tili>a#o de Bndices para a pes !isa de2e ser bem analisada a fim de e2itar lentido o! processamentos red!ndantes nos relat;rios. Os Bndices a<!dam a otimi>ar as pes !isas e la#os de processamentos= por isto no de2em ser s!btili>ados o! !tili>ados de forma errcnea. 4aso a necessidade do relat;rio e7i<a !ma otimi>a#o !e no 1 possB2el obter com os Bndices padr)es do sistema 1 possB2el criar Bndices tempor$rios atra21s da f!n#o Indreg!a tornando assim os relat;rios mais $geis e bem estr!t!rados. C'#ando ! !%!)ando A'6&#3os d! )'a.a%5o (T!m$o'8'#os)

Q!ando criamos !m ar !i2o de trabal6o o! !m Bndice de trabal6o 0!tili>ando a f!n#o Indreg!a3 no final do programa de2emos apaga+los. Dara cria#o de !m Bndice de 'rabal6o 0'empor$rio3 com Indreg!a* cAr "t7 *M 4ria'rab0 "I&= .H. 3 994riando Ar !i2o Ind8eg!a0 aS8Aa= cAr "t7= cInd4ond= = cHor= S'800(9 3 99Selec.registros...a

Dara deletar este Bndice de trabal6o no final do processamento* %bSelectArea0 @S8AA 3 99Selecionando a area %bSetOrder0 1 3 99Dosicionando na ordem de origem f5rase0 cAr "t7 Y OrdRag57t03 3 99%eletando ar !i2o de trabal6o

4aso o programa !e crie !m ar !i2o de trabal6o e no o apag!e no final de se! processamento= este ficar$ oc!pando espa#o em disco no ambiente de trabal6o. Isto poder$ gerar problemas f!t!ros para o cliente. Dor isto= 1 f!ndamental= !e ap;s s!a !tili>a#o o mesmo se<a descartado. U)#%#/ando A&!'Bs no P'o)5!&s

Dodemos !tili>ar !erLs no Drot6e!s !ando acessamos bancos de dados 2ia 'op4onnect. As !erLs= !ando bem constr!Bdas= mel6oram enormemente a eficincia 0 2elocidade 3 das cons!ltas aos dados e red!>em a sobrecarga no ser2idor de aplica#o= 'op4onnect e Ranco de %ados.

"ormalmente !ma !erL 1 !tili>ada em s!bstit!i#o a !m &oop 0 S6ile 3 na base de dados de programa#o con2encional. Q!erLs mais comple7as !tili>ando <oins poder ser constr!Bdas com a mesma f!n#o de 2$rios loops. #4as Im$o')an)!s C BF 3!'s&s SAL

A princBpio no e7istem diferen#as na programa#o para a 2erso SQ&= <$ !e pelo pr;prio fato de ser !ma ling!agem interpretada= o sistema 1 !em se encarrega de e7ec!tar os comandos e f!n#)es ade !adamente no ambiente em !e trabal6a. Pas 1 importante manter alg!mas informa#)es em mente ao programar para o ambiente SQ&. %e2e+se lembrar !e estamos trabal6ando com !m banco de dados relacional= !e se !tili>a de tabelas ao in21s de ar !i2os= e onde o sistema no tem acesso aos dados de forma nati2a e sim atra21s do 'op 4onnect. 5ssa forma de acesso adiciona ao sistema alg!mas das caracterBsticas e 2antagens oferecidas pelo STR% em !so 0por e7emplo= o Oracle= PSSQ& Ser2er o! o %R:3 como por e7emplo seg!ran#a e integridade referencial= e as imensas facilidades da ling!agem SQ&= mas por o!tro lado tem+se tamb1m as implica#)es da con2erso dos comandos no padro 7Rase para a perfeita compreenso no ambiente SQ&. Imagine a montagem de !ma e7presso de filtro para !m Bndice condicional. 'ome a seg!inte e7presso como e7emplo* a%'OS051JV5"4'O3 ,M %'OS0m2Jpar013a. 5m !m ambiente padro 7Rase= como o "'W o! o A%S= pode+se !tili>ar 2ari$2eis sem !al !er problema em !ma e7presso de filtro pois a mesma ser$ a2aliada registro a registro d!rante a montagem do Bndice. Pas no ambiente SQ&= o filtro nada mais 1 do !e !ma tabela tempor$ria= onde esto selecionados apenas os registros conforme a condi#o indicada. A sele#o de dados em tabelas pelo SQ& 1 mais r$pida= mas em conpensa#o o STR% no tem como recon6ecer a 2ari$2el informada na e7presso. 5la e7iste apenas no sistema o!= mais especificamente= no se! programa. Dor isso= de2e+se s!bstit!ir a e7presso anteriormente e7emplificada pela seg!inte 0 !e tamb1m f!ncionaria perfeitamente em !m ambiente 7Rase3* a%'OS051JV5"4'O3 ,M VaY%'OS0m2Jpar013YaXa. 5sta e7presso 1 mel6or !e anterior simplesmente por !e no se !tili>a da 2ari$2el e sim do conte-do da mesma= o !e pode ser compreendido em !al !er ambiente. 'oda essas e7plica#)es so 2$lidas= da mesma maneira= a filtros criados atra21s do comando S5' HI&'58. Ainda e7istem o!tros detal6es a se considerar !ando se trabal6a com Bndices em !m ambiente SQ&. / !e na 2erdade no e7istem Bndices condicionais nesse ambiente. O filtro 1 criado independente do Bndice. 5nto= 2oc pode criar !m I"%85TCA com !m filtro e m!dar a ordem= mas o filtro permanecer$ ati2o= em !al !er ordem. %o mesmo modo= no se pode manter dois Bndices= com filtros diferentes= pois !m filtro sobrescre2eria o o!tro. O!tro ponto de aten#o de2e ser a f!n#o 7Rase c6amada %RS5'I"%5W. Dodem ocorrer alg!ns erros ao tentar+se !tili>ar essa f!n#o para abrir !m Bndice de trabal6o criado. Dor esses moti2os e pelo fato de tornar o processamento mais lento de2e+se e2itar ao m$7imo o !so de Bndices de trabal6o no ambiente SQ&. %a mesma maneira !e a f!nco %RS5'I"%5W= os comandos 4ODd 'O e ADD5"% H8OP tamb1m de2em ter !ma aten#o especial. "o ambiente SQ& esses comandos so e7ec!tados entre !ma tabela e !m ar !i2o %RH 0e 2ice+2ersa3 o! entre dois ar !i2os %RH. Dor e7emplo= o comando 4ODd 'O pode ser !sado para copiar os dados da tabela ati2a para !m %RH local e o comando ADD5"% H8OP pode ser !sado para importar os dados de !m ar !i2o local para a tabela ati2a. Os dois podem ser !sados entre dois ar !i2os= mas n!nca pode+se !sar= por e7emplo= o comando ADD5"% H8OP para importar os dados de !ma tabela para o!tra.

0D Pon)os d! En)'ada

8e2iso* 1(9079:00: Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10 Vers)es Anteriores

%entro dos processos operacionais dos programas 1 possB2el criar @abert!rasA !e possibilitam a e7ec!#o de processos distintos a partir de !ma rotina do sistema. O.E!)#3o dos Pon)os d! En)'ada

%ei7ar o sistema fle7i21l = pois isso permite !ma grande 2ariedade de desen2ol2imento pelos nossos analistas de s!porte de acordo com a necessidade de cada tipo de cliente9implanta#o. Dermitir !e o sistema se<a o mais abrangente possB2el de acordo com cada tipo de segmento de neg;cio. A&ando 4'#a' &m Pon)o d! En)'ada

O ponto de entrada tem res!ltado !ando permite !e !m processo possa ser modificado= desde !e ele no se<a crBtico para o sistema. 57emplo* Pontagem das parcelas de pagamento de !m pedido 5le 1 -til em processos !e podem ser diferentes de acordo com o tipo de neg;cio de cada empresa o! estrat1gia adotada. 57* 8elat;rio de Dedido= 4adastro de 4lientes S#n)a+! $a'a 4'#a' &m Pon)o d! En)'ada,

H!nction 'PeA01003 &ocal l8etorno *M .H. &ocal &'PeP4& *M 57istblocK0a'PeP4la3 99 O @57istblocKA detecta se e7iste !ma f!n#o no reposit;rio do AD5 com esse D5. If l'PeP4& l8etorno *M 57ecblocK0@'PeP4IA=.H.=H.=_aValor`3 99 aValor 1 !m arraL !e seria recebido pelo !s!ario em DA8APIWR 5ndif 8et!rn0 l8etorno 3

P'o4!d#m!n)os $a'a s&a 4'#a01o

A2aliar com crit1rio a cria#o do Donto de 5ntrada= pois 1 importante locali>a+lo n!m ponto !e se<a -til= no red!dante e !e realmente d condi#)es de atender ao solicitante.

O Donto de entrada no 1 !ma ferramenta de corre#o de e2ent!ais fal6a do sistema e sim para a<!dar no desen2ol2imento de neg;cios especBficos. %oc!mentar no %5P com nome=momento no !al o momento em !e ele 1 disparado= parametros !e ele en2ia=retorno esperado 0se 6o!2er3 e o !e ele e7ec!ta com o retorno.

0@ C&#dados 4om o Pos#4#onam!n)o d! R!*#s)'os

8e2iso* 1(9079:00: Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10 Vers)es Anteriores

O posicionamento correto de registros 1 f!ndamental para a f!ncionalidade completa dos programas. Alg!mas dicas para posicionamento de registros so * 52itar %RTO'OD03= !sar %RS55e0WHI&IA&033 para os ar !i2os de dados do sistema. O comando %RTO'OD03 somente ser$ !tili>ado !ando da real necessidade de se efet!ar !ma leit!ra desde o inBcio do ar !i2o independente do tratamento de filial. 4omo no mesmo ar !i2o de dados= poderemos ter registros de 2$rias filiais= desta forma ficar$ garantido o posicionamento no primeiro registro da filial corrente. Ao e7ec!tar !m %RS55e03= 2erificar se locali>o! o registro= e7emplo* If [ SR1+,0dbSeeK07Hilial0aSR1a333 99 "o ac6ei o registro 5ndif

Pesmo !e se<a ;b2io a e7istncia do registro= fa#a o teste pois o programa de2e pre2er !e a base de dados no 1 to confi$2el como de2eria= e !m alerta a<!da a identificar estes casos. 5m casos de relat;rios= atentar+se para imprimir a mensagem de forma consciente. Se for e7ec!tada a f!n#o 854&O4e0cAlias= .H.3= para altera#o do registro at!al= em !m ar !i2o no estado de 5OH03 0caso fal6e !m %RS55e03 3 ser$ abortado o programa e gra2ado !m ar !i2o te7to de nome PS8&O4e.5OH !e poder$ ser !sado para a2erig!a#)es. O comando SOH'S55e determina se ser$ !sada !ma b!sca relati2a d!rante !m proc!ra em !m banco de dados. Se este comando esti2er em O"= e for !tili>ada !ma f!n#o %RS55e03= e nen6!ma correspondncia for encontrada= o ponteiro de registro ficar$ no pr;7imo registro do Bndice !e poss!a !m 2alor mais alto !e a e7presso !tili>ada nesta f!n#o. 5ste comando de2er$ ser !tili>ado com a m$7ima aten#o= pois caso este<a ligado= poder$ locali>ar !m registro errado. Q!anto ao comando %O S?I&5 no es !ecer de incl!ir a condi#o referente G filial= !ando esta leit!ra for de registros de !ma filial3. 57emplo * dbSelectArea0aSR1a3 dbSeeK07Hilial0aSR1a33 %o S6ile [ 5of03 .And. R1JHI&IA& MM 7Hilial0aSR1a3 99 Drocessamento dbSKip03 5nddo

Ao criar !ma f!n#o !e ir$ desposicionar registros= !se a f!n#o T5'A85A03 e 85S'A85A03= para 2oltar t!do G posi#o original. 57emplo* %bselectarea0aS%1a3 aAreasd1 *M Tetarea03 99 Arma>ena o ambiente do ar !i2o S%1 S%1+,0dbsetorder0(33 S%1+,0dbseeK07filial0aS%1a3 Y %'OS0a0190(901a3= .'.33 %o S6ile [ 5of03 .And. %1JHI&IA& MM 7filial0aS%1a3 .And. %'OS0%1J5PISSAO3 OM %'OS0m2Jpar0:3 99 Drocessamento %bsKip03 5nddo 8estarea0aAreasd13 99 8esta!ra o ambiente do ar !i2o S%1

F&n01o Pos#4#on!

Dodemos tamb1m b!scar !ma informa#o em determinado campo !sando apenas !ma f!n#o. S#n)a+!, Dosicione0cAlias= nOrdem= c46a2e= c4ampo3

E+!m$%o, Dosicione0aSR1a= 1= 7Hilial0aSR1a3 Y c4odigo= aR1J%5S4a3 %esta forma= ser$ efet!ada !ma b!sca no SR1= na ordem 1= c6a2e da b!sca 7Hilial0aSR1a3 Y c4odigo e ser$ retornado o conte-do do campo aR1J%5S4a. "ote !e esta f!n#o= no resta!ra a posi#o original do ar !i2o al2o 0no caso SR13. / necess$rio colocar a HI&IA& do ar !i2o na c6a2e passada como par.metro= caso ela e7ista na c6a2e do indice. F&n01o E+#s)4$o

8etorna se determinada c6a2e e7iste o! no no ar !i2o. S#n)a+! , 57ist4po0cAlias=c46a2e=nOrdem3

E+!m$%o , 57ist4po0aSR1a= 1= c4odigo= aR1J%5S4a3 %esta forma= ser$ efet!ada !ma b!sca no SR1= na ordem 1= c6a2e c46a2e. 5 ser$ retornado se a

c6a2e foi encontrada o! no 0.'. o! =H=3. "este caso no 1 necess$rio passar a filial. 5la ser$ inserida a!tomaticamente na c6a2e de pes !isa pela f!n#o. R!s)a&'ando Fnd#4! ! %#m$ando "#%)'os

"os relat;rios de2emos analisar !e a f!n#o @SetDrintA= possibilita efet!ar filtros = escol6a da ordem e gera#o em disco o! impressora = no final dos programas de relat;rio de2emos resta!rar a ordem original do ar !i2os e limpar o filtro e desati2ar a impressora. 99'1rmino do relatorio dbSelectArea0aS8Aa3 Set Hilter to dbSetOrder013 Set %e2ice 'o Screen If a8et!rnf5g M 1 Set Drinter 'o 4ommit o!rspool0Znrel3 5ndif PSJH&CS?03

0G O&)'os C&#dados

8e2iso* 1(9079:00: Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10 Vers)es Anteriores

Cm dos c!idados !e de2emos ter !ando da cria#o de relat;rios contendo 2alores 1 a !tili>a#o dos s!btotais e totais= a fim de e2itar erros !e podem ser desastrosos d!rante !ma tomada de deciso errada de2ido a 2alores errados. A !tili>a#o de somat;rias de2e ser bastante criteriosa a fim de no cometermos o erro de mist!rarmos !nidades de medidas diferentes no mesmo c$lc!lo. Con"'on)ando '!%a)H'#os ! 4ons&%)as

Q!ando elaboramos !m sistema= e7istem m!itos relat;rios !e geram dados para o!tros relat;rios e cons!ltas. %e2emos tomar c!idado para !e no aconte#am di2ergncias de informa#)es de !m para o o!tro= como por e7emplo= no caso de 2alores. Cm bom e7emplo disso= 1 a rotina de impresso de fol6a de pagamento. 5ste relat;rio e7ibe informa#)es !e so !tili>adas em o!tros relat;rios= tais como= 2alores para o HT'S= g!ia de recol6imento de impostos. Cma sol!#o para !e no se ocorra !ma di2ergncia de 2alores= seria !tili>ar !ma -nica f!n#o o! rotina de processamento. Isto e2itaria !e ao se alterar o sistema= por moti2o de lei o! o!tro !al !er= o programador alterasse por e7emplo Gs rotinas de relat;rio de fol6a de pagamento e g!ia de impostos e es !ecesse de alterar por e7emplo G rotina de relat;rio de HT'S. 57emplos como Saldos Ranc$rios= Q!antidades de 5sto !es= Valores de Hat!ramento= entre o!tros= de2em ser confrontados entre relat;rios e cons!ltas para no gerarem informa#)es errcneas ao cliente. "ormalmente estes problemas ocorrem em f!n#)es de crit1rios de filtragens diferenciados entre eles. Dara e2itar este tipo de problema 1 f!ndamental !e o analista ao efet!ar alg!ma man!ten#o em alg!m relat;rio o! cons!lta atente+se ao fato de asseg!rar !e esta altera#o no infl!encie o!tras sit!a#)es. 5ste 1 !m tipo de no conformidade simples de ser e2itada e !e pode ca!sar problemas s1rios para os !s!$rios al1m de ser de dificil arg!menta#o !ando nos !estionado= pois e2idencia falta de aten#o o! crit1rio na man!te#o o! falta de con6ecimento sobre o f!ncionamento do sistema. P'o.%!mas 4om Loo$#n* d! P'o*'amas

O Drot6e!s !tili>a a tecnologia 4liente9Ser2idor. Isto significa !e o aplicati2o no 1 mais e7ec!tado indi2id!almente em cada m$ !ina= ele ser$ e7ec!tado no ser2idor do aplicati2o. At1 a 2erso b.07 !m programa tra2ado significa2a !e apenas a esta#o esta2a comprometida 0o e7ec!t$2el esta2a na mem;ria da esta#o3. 4om o Drot6e!s= todo o processamento est$ no Ser2er e !ando o programa est$ em looping estaremos gradati2amente @!sando todo a 4DC do Ser2erA e

conse !entemente parando todo o processamento. Se ao desen2ol2ermos !ma rotina e a mesma entrar em looping 0ti2er apenas !ma entrada e no ti2er !ma saBda do processamento3= este processamento !tili>ar$ todos os rec!rsos do ser2idor comprometendo 0red!>indo drasticamente a performance do aplicati2o3= o! at1 impedindo= o !so do aplicati2o por todos os demais !s!$rios. Se isso acontecer em !ma empresa onde e7istem apenas 5 !s!$rios= o administrador da rede poder$ reiniciar o ser2idor= por1m onde e7iste !m n-mero consider$2el de !s!$rios poder$ 6a2er !m pre<!B>o para a empresa !e !tili>a nosso sistema. 57emplo* dbSeeK07Hilial0@S51A3Y%'OS0d%tIni33 %o S6ile S51+,0[5of033 99 demais comandos = etc. O++++++++++ Halta !m %bSKip03 5nddo

"o e7emplo acima= a rotina ficar$ em looping 0pois falta !m comando de saBda da rotina= !m %bSKip03 seria o mais apropriado3= !tili>ando todos os rec!rsos de processamento do ser2idor= fa>endo com !e o mesmo pare de f!ncionar. O!tro e7emplo* a4ampos *M _` %o Z6ile .'. Aadd0a4ampos= @'esteA3 5nddo

No !+!m$%o a4#ma o 4aso 7 a#nda ma#s 4'I)#4o> $o#s a%7m &)#%#/a' )odo o '!4&'so d! $'o4!ssam!n)o do s!'3#do'> !m dado mom!n)o 5a3!'8 &ma 6&!da do a$%#4a)#3o> d!3#do a %#m#)a01o da 3a'#83!% )#$o A''aB> 4'#ada a4#ma= E 6&ando !s)! %#m#)! "o' &%)'a$assado> o s#s)!ma s!'8 #n)!''om$#do a.'&$)am!n)! ! )odos os d!ma#s &s&8'#os "#4a'1o #m$oss#.#%#)ados d! &)#%#/a'!m o s#s)!ma= Man#$&%a01o d! A'6&#3os E+)!'nos ao P'o)5!&s

A manip!la#o de ar !i2os considerados e7ternos ao Drot6e!s de2er$ ter !m tratamento diferenciado. O ar !i2os a serem manip!lados 0alterados9cons!ltados3 de2ero ser copiados do 4lient para o Ser2er e 2ice+2ersa !tili>ando !ma cone7o 0'D4+ID=IDW=etc3. Dara copiar os ar !i2os= foram criadas d!as f!n#)es !e sero e7ec!tadas 2ia cone7o= a 4DdS:'03 encarregada de copiar do Ser2er para o 4lient9'erminal e a 4Dd':S03 encarregada de copiar do 4lient9'erminal para o Ser2er. O editor de te7to Sord da Picrosoft= os ar !i2os de imagens 0RPD=\D5T=etc3 e7igem !m l!gar fBsico para abert!ra dos doc!mentos9imagens= na2egando pela Internet por e7emplo so copiados 2ia cone7o para !m diret;rio tempor$rio no comp!tador para serem 2is!ali>ados. O AD5 trabal6a da mesma forma= atra21s dessas considera#)es e !tili>ando a ar !itet!ra

4lient9Ser2er 2ia cone7o os ar !i2os sero copiados. 5m alg!ns P;d!los do Drot6e!s so encontradas rotinas de Importa#o957porta#o de lan#amentos= e7igindo serem !tili>adas as f!n#)es 4Dd':S03 e 4DdS:'03 para manip!la#o dos ar !i2os. Dor e7emplo= !ma importa#o de lan#amentos da Hol6a de Dagamento poder$ ser feita diretamente do 4lient sem precisar copiar para o Ser2er mas se o!tro !s!$rio precisar 2is!ali>ar os lan#amentos de origem da importa#o no ter$ acesso= agora se for reali>ado a c;pia do 4lient para o Ser2er todos podero 2is!ali>ar 0aconsel6$2el3. Isso acontece no P;d!lo de 4ontrole de %oc!mentos= !ando todos os ar !i2os 0doc!mentos3 so copiados entre o 4lient e o Ser2er para !e todos 2is!ali>em e manip!lem. Cm e7emplo !e no 6$ necessidade de c;pia so os ar !i2os gerados para contabili>a#o 04D8OVA3= pois estes so gerados no pr;prio Ser2er no 6a2endo necessidade de c;pia. Os ar !i2os !e podero ser copiados de2ero estar necessariamente embai7o do 8ootDat6 na config!ra#o do Ser2er= isto 1= o diret;rio %O4S do e7emplo abai7o de2er$ ser s!b+diret;rio do 8ootDat6. 57emplo de c;pia do Ser2er para o 4lient* 4DdS:'0ah%O4Sh5W5PD&O.%O4=a4*hSI"%OSSh'5PDa=.'.3

Onde os par.metros so* 1o. 1 o O"ome do Ar !i2o, a ser copiado para o 4lient :o. 1 o O"ome do %iret;rio, do 4lient e9o! local fBsico onde ser$ copiado o ar !i2o. (o. se dese<a compactar o ar !i2o 0recomend$2el3 57emplo de c;pia do 4lient para o Ser2er* 4Dd':S0a4*hSI"%OSSh'5PDh5W5PD&O.%O4=ah%O4Sa=.'.3

Onde os par.metros so* 1o. 1 o O"ome do Ar !i2o, a ser copiado para o Ser2er :o. 1 o O"ome do %iret;rio, do Ser2er (o. se dese<a compactar o ar !i2o 0recomend$2el3 As f!n#)es poss!em !m retorno 'r!e0.'.3 o! Halse0.H.3 indicando se a c;pia foi reali>ada com s!cesso o! no. !s!n3o%3!ndo T!%as

A aparncia e ob<eti2idade das telas n!m sistema 1 base f!ndamental da interface Sistema 7 Cs!$rio. O AD5 <$ cria= a!tomaticamente= a grande parte das telas de !m m;d!lo= tais como a RroZse= a Tet%ados e 5nc6oice. Alg!mas o!tras telas necessitam de constr!#o @man!alA= o! se<a= com a !tili>a#o de comandos= tais como @SAdA = @T5'A e @&AR5&A= na %ialog.

Droc!re sempre colocar em tela as informa#)es !e mais se ob<eti2am com o ass!nto abordado. Sempre !e possB2el= d preferncia aos campos obrigat;rios primeiro. Isso facilita a digita#o do !s!$rio= !e no precisar$ passar de campo em campo 0no caso de estar !tili>ando a tecla O'AR,3 at1 c6egar ao campo dese<ado. A ordem dos campos tamb1m 1 importante para a f$cil locali>a#o das informa#)es. Q!ando o 2ol!me de informa#)es 1 m!ito grande= di2ida os campos em folders= o! se<a= pastas= agr!pando os campos em ass!ntos. Isso ir$ dei7ar a tela menos pol!Bda e e2itar$ !e o !s!$rio na2eg!e por !ma tela s;. Dara fa>er essa facilidade= preenc6a o campo W(JHO&%58= no SW(= com !m n-mero= agr!pando+os de acordo com a tipo de informa#o e no SWA= com o A&IAS do ar !i2o em pa!ta= a ordem= !e e !i2ale ao n!mero informado no W(JHO&%58 e a descri#o nos trs idiomas. 5ssa descri#o !e ser$ a informa#o contida na pasta do folder. 57emplo* Os campos Si1J5"%58= Si1J"CP e Si1JRAI88O de2em estar com o campo W(JHO&%58 preenc6ido com o conte-do @1A. "o SWA= o WAJA&IAS de2er$ ser Si1= o WAJO8%5P M @1A 0mesmo 2alor preenc6ido no W(JHO&%583= no WAJ%5S48I4= @5ndere#o 8esidencialA e= nos demais= o mesmo te7to em o!tros idiomas. O Holder= al1m de agr!par e facilitar a proc!ra pelos campos= e2ita a rolagem 2ertical da tela= facilitando a 2is!ali>a#o das informa#)es. 52ite tela com m!itos bot)es. Isso poder$ conf!ndir o !s!$rio e ind!>i+lo ao erro. Ctili>e telas se !enciais= con6ecidas como Si>ard 0semel6ante aos de instala#o de !m softZare3. %essa forma= o !s!$rio ficar$ mais atento aos fatos= dific!ltando o erro. Pas c!idado* no fa#a disso !ma incans$2el se !ncia de telas= pois isso acabar$ desmoti2ando o !s!$rio a !tili>ar o sistema. 5nfim= as telas de2em ser limpas e ob<eti2as= de tal forma !e impe#a o !s!$rio de sair de se! ob<eti2o final. 'odo c!rioso ir$ apertar todos os bot)es da tela o! preenc6er todos os campos com !al !er tipo de informa#o. Dortanto= este<a atento a taman6o dos labels= para !e os mesmos no e7cedam o taman6o da cai7a de di$logo definida. Isso= al1m de no ser est1tico= pre<!dica o entendimento da informa#o. Sa%3ando A''aB<s $ad'?!s

Q!ando temos \anelas !e necessitem apresentar mais de !ma getdados= de2emos sal2ar os elementos= acols= a6eader e n= da tela anterior para apresentar !ma no2a <anela. As principais 2ari$2eis so* Acols M ArraL contendo as lin6as !sada !e sero apresentadas na Tetdados A?eader M ArraL contendo o cabe#o das col!nas da Tetdados " M Vari$2el p!blica !e indica a posi#o do at!al no acols 0a &in6a !e est$ sendo editada na Tetdados3

Dara sal2a+las podemos* a4olsAnt *M a4lone0Acols3 a?eaderAnt *M a4lone0a?eader3 n5lemAnt *M n

5 para resta!ra+las* a4ols *M a4lone0a4olsAnt3 a?eader *M a4lone0a?eaderAnt3 n *M n5lemAnt

Você também pode gostar