Página 3 de 3

Enviado: 18 Mar 2008 17:23
por gvc
Se vc só usa esse DBF em um sistema, verifique se vc sempre abre todos os NTX´s quando abre o DBF.

Se vc abre em outros sistemas, verifique se esta abrindo todos os NTX´s nos outros sistemas.

O básico é que se vc altera os dados dentro do DBF (incluir/alterar/excluir), todos os NTX desse DBF devem estar abertos.
Se vc só consulta, não é necessário abrir todos os NTX. Alias, dependendo do caso, nenhum NTX.

Vc já verificou se existem muitos registro marcados como apagados no inicio do DBF?
Seu sistema tem muita inclusão/exclusão?

Boa sorte. Espero ter ajudado.

Enviado: 18 Mar 2008 18:18
por Pablo César
TerraSoftware escreveu:clipper 5.2e, sixnsx ...//... Na minha opnião não existe combinação melhor
Pergunto eu: para versão 5.3 o SIX há alguma õbservação a respeito ? Funciona bem ? E em xHarbour o SIX, funciona bem ?

Enviado: 20 Mar 2008 09:56
por apogestal
verifique os tamanhos dos campos que voc~e estipulou veja se não dá para dim inuir.!

Enviado: 20 Mar 2008 13:52
por Maligno
Pablo César escreveu:para versão 5.3 o SIX há alguma õbservação a respeito ? Funciona bem ? E em xHarbour o SIX, funciona bem ?
Há quem utilize a SIX no Clipper 5.3. É uma biblioteca como outra qualquer. Vai funcionar como funciona na versão 5.2x. Agora, quanto ao XHarbour, não sei ao certo, mas me parece que já existe uma série de recursos da SIX implementados para XHarbour.

Enviado: 20 Mar 2008 17:37
por Pablo César
Obrigado pela sua opinião Maligno. Vou baixar do seu site e começar a fazer alguns testes. Tks.

Enviado: 20 Mar 2008 17:41
por Maligno
Rode o demo dela. Acho que você vai gostar. :)

Enviado: 21 Mar 2008 09:08
por alaminojunior
Caros colegas, alterei os "index on ..." por "set index ..." Resolvido o problema.
Note que estes comandos tem usos distintos.

Index on ... serve para construir os índices
Set Index ... serve para abrí-los

Moral da história: Se vc já tem uma outra rotina de indexação, tudo ok.
Se não tem, precisaria implementar, pois um hora vai precisar, e se vc emitir um Set Index ..... e o índice não existir ou estiver desatualizado, vai dar problema.

Enviado: 21 Mar 2008 09:17
por Maligno
Acho que o ideal seria construir uma função específica para abertura de índice, que tenha a capacidade de "sentir" a falta do arquivo e, assim, criar. Não é uma tarefa trivial, já que cada arquivo tem suas próprias chaves. Especificidades desse tipo têm de ser consideradas por uma função que será de uso global. Mas solução tem.

Enviado: 21 Mar 2008 11:35
por Luciano Bonfim
Vou dar uma pequena contribuiçäo:

1) cria uma funçäo que retorne todos os DBFs que vc usa, assim:

Código: Selecionar todos


vdbf:={}
dbfs()

Procedure dbfs
AAdd(vdbf,{'ABREVIA.DBF'})
AAdd(vdbf,{'ADITIVO.DBF'})
AAdd(vdbf,{'AF.DBF'})
AAdd(vdbf,{'AP.DBF'})
AAdd(vdbf,{'AUTSER.DBF'})
AAdd(vdbf,{'CDM.DBF'})
AAdd(vdbf,{'CLIENTES.DBF'})
AAdd(vdbf,{'COPIAD.DBF'})
AAdd(vdbf,{'CPU.DBF'})
AAdd(vdbf,{'CPUINS.DBF'})
AAdd(vdbf,{'CQP.DBF'})
AAdd(vdbf,{'CQPCPU.DBF'})
AAdd(vdbf,{'DESC_EPG.DBF'})
AAdd(vdbf,{'DESC_PER.DBF'})
AAdd(vdbf,{'DESEMB.DBF'})
AAdd(vdbf,{'DEST_LD.DBF'})
AAdd(vdbf,{'DET_IAP.DBF'})
AAdd(vdbf,{'DET_INS.DBF'})
AAdd(vdbf,{'DETMAP.DBF'})
AAdd(vdbf,{'DEVOLVE.DBF'})
AAdd(vdbf,{'DF.DBF'})
AAdd(vdbf,{'DF_AP.DBF'})
AAdd(vdbf,{'DIARIAS.DBF'})
AAdd(vdbf,{'DIGITADA.DBF'})
AAdd(vdbf,{'DOCEMP.DBF'})
AAdd(vdbf,{'DOCSOL.DBF'})
AAdd(vdbf,{'DOCUMENT.DBF'})
AAdd(vdbf,{'EMPRESA.DBF'})
AAdd(vdbf,{'EMPREST.DBF'})
AAdd(vdbf,{'ENTIDADE.DBF'})
AAdd(vdbf,{'EPG_AF.DBF'})
AAdd(vdbf,{'ETA_DOC.DBF'})
AAdd(vdbf,{'ETAPAS.DBF'})
AAdd(vdbf,{'EVENTOAF.DBF'})
AAdd(vdbf,{'EVENTOAP.DBF'})
AAdd(vdbf,{'FAM_CPU.DBF'})
AAdd(vdbf,{'FAMILIAS.DBF'})
AAdd(vdbf,{'FATORK.DBF'})
AAdd(vdbf,{'FON_CPU.DBF'})
AAdd(vdbf,{'FON_INS.DBF'})
AAdd(vdbf,{'FON_PRE.DBF'})
AAdd(vdbf,{'FORMAP.DBF'})
AAdd(vdbf,{'FORNECED.DBF'})
AAdd(vdbf,{'GER_OBR.DBF'})
AAdd(vdbf,{'IMP_AF.DBF'})
AAdd(vdbf,{'IMP_AP.DBF'})
AAdd(vdbf,{'IMP_DF.DBF'})
AAdd(vdbf,{'IMPI_AF.DBF'})
AAdd(vdbf,{'IMPI_AP.DBF'})
AAdd(vdbf,{'IMPOSTOS.DBF'})
AAdd(vdbf,{'INDICES.DBF'})
AAdd(vdbf,{'INS_AF.DBF'})
AAdd(vdbf,{'INS_AP.DBF'})
AAdd(vdbf,{'INS_PER.DBF'})
AAdd(vdbf,{'INSFOR.DBF'})
AAdd(vdbf,{'INSUMOS.DBF'})
AAdd(vdbf,{'ITE_CONT.DBF'})
AAdd(vdbf,{'ITE_ENDE.DBF'})
AAdd(vdbf,{'ITE_PRJ.DBF'})
AAdd(vdbf,{'ITEM_AF.DBF'})
AAdd(vdbf,{'ITEM_EPG.DBF'})
AAdd(vdbf,{'LD.DBF'})
AAdd(vdbf,{'MAPA.DBF'})
AAdd(vdbf,{'MED_EPG.DBF'})
AAdd(vdbf,{'MENSAIS.DBF'})
AAdd(vdbf,{'MUD_ORC.DBF'})
AAdd(vdbf,{'NFSR.DBF'})
AAdd(vdbf,{'OBRAS.DBF'})
AAdd(vdbf,{'OBSERV.DBF'})
AAdd(vdbf,{'OBSPLA.DBF'})
AAdd(vdbf,{'ORCAMENT.DBF'})
AAdd(vdbf,{'PASSWORD.DBF'})
AAdd(vdbf,{'PERMIS.DBF'})
AAdd(vdbf,{'PLADOC.DBF'})
AAdd(vdbf,{'PLANEJA.DBF'})
AAdd(vdbf,{'PREC_CPU.DBF'})
AAdd(vdbf,{'PREC_INS.DBF'})
AAdd(vdbf,{'PRECED.DBF'})
AAdd(vdbf,{'PROJETOS.DBF'})
AAdd(vdbf,{'REA_AF.DBF'})
AAdd(vdbf,{'RESPONSA.DBF'})
AAdd(vdbf,{'SOLICIT.DBF'})
AAdd(vdbf,{'TAREFAS.DBF'})
AAdd(vdbf,{'TEMA_DOC.DBF'})
AAdd(vdbf,{'TIPO_DOC.DBF'})
AAdd(vdbf,{'TIPOSDOC.DBF'})
AAdd(vdbf,{'UNIDADE.DBF'})
AAdd(vdbf,{'VAL_AF.DBF'})
Return
2) depois cria outra que retorne seus índices, assim:

Código: Selecionar todos


Function cdxs
Parameters marq
Do Case
Case marq=='ABREVIA'
   aadd(v_cdx,{"cod_abr"})
   aadd(v_cdx,{"desc"})

Case marq=='ADITIVO'
   aadd(v_cdx,{"cod_obra+num_adt"})

Case marq=='AF'
   aadd(v_cdx,{"cod_obra+cod_af"})
   aadd(v_cdx,{"cod_obra+dtos(data)"}) // customizado
   aadd(v_cdx,{"cod_obra+item+dtos(data)"}) // customizado
   aadd(v_cdx,{"cod_obra+cod_for+dtos(data)"}) // customizado
   aadd(v_cdx,{"cod_obra+num_ped"})
   aadd(v_cdx,{"num_ped"})

Case marq=='AP'
   aadd(v_cdx,{"cod_obra+cod_af+cod_ap"})
   aadd(v_cdx,{"cod_obra+dtos(data)"}) // customizado
   aadd(v_cdx,{"grap"})

Case marq=='AUTSER'
   aadd(v_cdx,{"cod_obra+item"})
   aadd(v_cdx,{"cod_obra+cod_as+item"})

Case marq=='CDM'
   aadd(v_cdx,{"cdm"})
   aadd(v_cdx,{"desc1"})

Case marq=='CLIENTES'
   aadd(v_cdx,{"cod_cli"})
   aadd(v_cdx,{"nome"})

Case marq=='COPIAD'
   aadd(v_cdx,{"dtos(data)"}) // customizado

Case marq=='CPU'
   aadd(v_cdx,{"cod_cpu"})
   aadd(v_cdx,{"desc1+desc2"})
   //aadd(v_cdx,{"desc1i+desc2i"})   saiu em 16/03/2008 pois nao tava sendo usado por nenhum programa
   //aadd(v_cdx,{"cod_fam+cod_cpu"}) saiu em 16/03/2008 pois nao tava sendo usado por nenhum programa

Case marq=='CPUINS'
   aadd(v_cdx,{"cod_cpu+cod_ins+qual_fon"})
   aadd(v_cdx,{"cod_ins+qual_fon"})
   aadd(v_cdx,{"cod_cpu+qual_fon+cod_ins"})

Case marq=='CQP'
   aadd(v_cdx,{"cqp"})
   aadd(v_cdx,{"desc1"})

Case marq=='CQPCPU'
   aadd(v_cdx,{"cod_cpu+cqp"})

Case marq=='DESC_EPG'
   aadd(v_cdx,{"cod_obra+cod_af+periodo"})

Case marq=='DESC_PER'
   aadd(v_cdx,{"cod_obra+periodo"})

Case marq=='DESEMB'
   aadd(v_cdx,{"cod_obra+versao+cod_ins+item"})

Case marq=='DEST_LD'
   aadd(v_cdx,{"cod_lis+st_dest+codigo"})

Case marq=='DET_IAP'
   aadd(v_cdx,{"cod_obra+cod_af+cod_ap+tipo+numero+cod_ins1+cod_ins2"})
   aadd(v_cdx,{"cod_obra+cod_af+cod_ins1+cod_ins2"})

Case marq=='DET_INS'
   aadd(v_cdx,{"cod_obra+cod_af+cod_ins1+cod_ins2"})
   aadd(v_cdx,{"cod_obra+cod_ins1+cod_ins2"})

Case marq=='DEVOLVE'
   aadd(v_cdx,{"cod_grd+cod_doc+nr_rev+dtos(data)"}) // customizado
   aadd(v_cdx,{"cod_doc+nr_rev+cod_grd"})

Case marq=='DF'
   aadd(v_cdx,{"tipo"})

Case marq=='DF_AP'
   aadd(v_cdx,{"cod_obra+cod_af+cod_ap+tipo+numero"})
   aadd(v_cdx,{"cod_obra+tipo+numero+cod_af+cod_ap"})
   aadd(v_cdx,{"cod_obra+cod_af+cod_for+tipo+numero"})

Case marq=='DIARIAS'
   aadd(v_cdx,{"cod_ind+dtos(data)"}) // customizado

Case marq=='DIGITADA'
   aadd(v_cdx,{"cod_obra+dtos(data)+hora"}) // customizado
   aadd(v_cdx,{"cod_obra+item"})

Case marq=='DOCEMP'
   aadd(v_cdx,{"cod_grd+cod_doc+nr_rev"})
   aadd(v_cdx,{"cod_doc+nr_rev+cod_grd"})

Case marq=='DOCSOL'
   aadd(v_cdx,{"cod_sol+cod_doc+nr_rev"})
   aadd(v_cdx,{"grc+num_seq"})
   aadd(v_cdx,{"cod_doc+nr_rev"})
   aadd(v_cdx,{"doc_ret+rev_ret"})

Case marq=='DOCUMENT'
   aadd(v_cdx,{"cod_doc+nr_rev"})
   aadd(v_cdx,{"doc_origem+rev_doc"})
   aadd(v_cdx,{"cod_end+cod_doc+nr_rev"})
   aadd(v_cdx,{"cod_end2+cod_doc+nr_rev"})
   aadd(v_cdx,{"cod_end3+cod_doc+nr_rev"})
   aadd(v_cdx,{"cod_doc+myind(nr_rev)"}) // customizado

Case marq=='EMPRESA'

Case marq=='EMPREST'
   aadd(v_cdx,{"cod_grd"})
   aadd(v_cdx,{"responsave"})
   aadd(v_cdx,{"dtos(data)+cod_grd"}) // customizado

Case marq=='ENTIDADE'
   aadd(v_cdx,{"cod_ent"})

Case marq=='EPG_AF'
   aadd(v_cdx,{"cod_obra+cod_af+cod_epg"})

Case marq=='ETAPAS'
   aadd(v_cdx,{"cod_eta"})

Case marq=='ETA_DOC'
   aadd(v_cdx,{"cod_doc+nr_rev+cod_eta"})
   aadd(v_cdx,{"cod_eta+cod_doc+nr_rev"})

Case marq=='EVENTOAF'
   aadd(v_cdx,{"cod_obra+cod_af+dtos(data)"}) // customizado
   aadd(v_cdx,{"cod_obra+dtos(data)+cod_af"}) // customizado

Case marq=='EVENTOAP'
   aadd(v_cdx,{"cod_obra+cod_af+cod_ap+dtos(data)"}) // customizado
   aadd(v_cdx,{"cod_obra+dtos(data)+cod_af"}) // customizado
   aadd(v_cdx,{"cod_obra+cod_af+dtos(data_af)"}) // customizado

Case marq=='FAMILIAS'
   aadd(v_cdx,{"cod_fam"})
   aadd(v_cdx,{"desc"})

Case marq=='FAM_CPU'
   aadd(v_cdx,{"cod_fam"})
   aadd(v_cdx,{"desc"})

Case marq=='FATORK'
   aadd(v_cdx,{"cod_obra+versao+cod_ins"})

Case marq=='FON_CPU'
   aadd(v_cdx,{"cod_cpu+qual_fon+cod_fon"})
   aadd(v_cdx,{"qual_fon+cod_fon"})

Case marq=='FON_INS'
   aadd(v_cdx,{"cod_ins+qual_fon+cod_fon"})
   aadd(v_cdx,{"qual_fon+cod_fon"})

Case marq=='FON_PRE'
   aadd(v_cdx,{"cod_fon"})

Case marq=='FORNECED'
   aadd(v_cdx,{"cod_for"})
   aadd(v_cdx,{"nome"})

Case marq=='GER_OBR'
   aadd(v_cdx,{"obrao"})

Case marq=='IMPI_AF'
   aadd(v_cdx,{"cod_obra+cod_af+sigla1+sigla2"})

Case marq=='IMPI_AP'
   aadd(v_cdx,{"cod_obra+cod_af+cod_ap+sigla1+sigla2"})

Case marq=='IMPOSTOS'
   aadd(v_cdx,{"sigla"})

Case marq=='IMP_AF'
   aadd(v_cdx,{"cod_obra+cod_af+sigla"})

Case marq=='IMP_AP'
   aadd(v_cdx,{"cod_obra+cod_af+cod_ap+sigla"})

Case marq=='IMP_DF'
   aadd(v_cdx,{"cod_obra+cod_af+cod_ap+tipo+numero+sigla"})

Case marq=='INDICES'
   aadd(v_cdx,{"cod_ind"})

Case marq=='INSUMOS'
   aadd(v_cdx,{"cod_ins"})
   aadd(v_cdx,{"cod_reut"})
   aadd(v_cdx,{"cod_fam+cod_ins"})
   aadd(v_cdx,{"desc1+desc2"})
   //aadd(v_cdx,{"desc1i+desc2i"}) saiu em 16/03/2008 pois nao tava sendo usado por nenhum programa

Case marq=='INS_AF'
   aadd(v_cdx,{"cod_obra+cod_af+cod_ins+item"})
   aadd(v_cdx,{"cod_obra+cod_ins+item"})
   aadd(v_cdx,{"cod_obra+cod_af+item"})
   aadd(v_cdx,{"cod_obra+item"})
   aadd(v_cdx,{"cod_ins"})

Case marq=='INS_AP'
   aadd(v_cdx,{"cod_obra+cod_af+cod_ap+tipo+numero+cod_ins+item"}) // entrou item em 13/03/2008
   aadd(v_cdx,{"cod_obra+cod_af+cod_ins+item"})
   aadd(v_cdx,{"cod_obra+cod_af+cod_ap+tipo+numero+item"})
   aadd(v_cdx,{"cod_obra+cod_af+item"})
   aadd(v_cdx,{"cod_obra+item"})

Case marq=='INS_PER'
   aadd(v_cdx,{"cod_cpu+cod_ins+cod_inc+qual_fon"})
   aadd(v_cdx,{"cod_inc"})
   aadd(v_cdx,{"cod_cpu+cod_ins+qual_fon+cod_inc"})

Case marq=='ITE_CONT'
   aadd(v_cdx,{"cod_prj+nivel+item_nivel"})

Case marq=='ITE_ENDE'
   aadd(v_cdx,{"nivel+item_nivel"})

Case marq=='ITE_PRJ'
   aadd(v_cdx,{"cod_prj+nivel+item_nivel"})

Case marq=='ITEM_AF'
   aadd(v_cdx,{"cod_obra+cod_af+item"})
   aadd(v_cdx,{"cod_obra+item"})

Case marq=='ITEM_EPG'
   aadd(v_cdx,{"cod_obra+cod_af+cod_epg+item"})
   aadd(v_cdx,{"cod_obra+item"})

Case marq=='LD'
   aadd(v_cdx,{"cod_lis"})

Case marq=='MED_EPG'
   aadd(v_cdx,{"cod_obra+cod_af+cod_epg+periodo"})

Case marq=='MENSAIS'
   aadd(v_cdx,{"cod_ind+ano+mes"})

Case marq=='MUD_ORC'
   aadd(v_cdx,{"cod_obra+periodo+item"})
   aadd(v_cdx,{"cod_obra+item+periodo"})

Case marq=='NFSR'
   aadd(v_cdx,{"cod_obra+cod_af+cod_ap+tipo+numero+tiposr+numerosr"})

Case marq=='OBRAS'
   aadd(v_cdx,{"cod_obra+versao"})
   aadd(v_cdx,{"num_doc"})
   aadd(v_cdx,{"cod_prj+cod_obra+versao"})

Case marq=='OBSERV'
   aadd(v_cdx,{"cod_cpu"})
   aadd(v_cdx,{"cod_ins"})
   aadd(v_cdx,{"cod_obra+versao+item"})

Case marq=='OBSPLA'
   aadd(v_cdx,{"cod_obra+item"})

Case marq=='ORCAMENT'
   aadd(v_cdx,{"cod_obra+versao+item"})
   aadd(v_cdx,{"cod_cpu+cod_obra+versao+item"})
   aadd(v_cdx,{"cod_obra+versao+cod_cpu"})
   //aadd(v_cdx,{"cod_cpu"}) saiu em 16/03/2008 para usar a TAG 2 (so orc130.prg usava)

Case marq=='PASSWORD'
   aadd(v_cdx,{"usuario"})

Case marq=='PERMIS'
   aadd(v_cdx,{"usuario+modulo"})

Case marq=='PLADOC'
   aadd(v_cdx,{"cod_doc+nr_rev"})
   aadd(v_cdx,{"st_origem+cod_origem"})

Case marq=='PLANEJA'
   aadd(v_cdx,{"cod_obra+versao+item"})

Case marq=='PRECED'
   aadd(v_cdx,{"cod_obra+versao+cod_ins+item"})

Case marq=='PREC_CPU'
   aadd(v_cdx,{"cod_cpu+ano_mes+qual_fon"})
   aadd(v_cdx,{"ano_mes"})

Case marq=='PREC_INS'
   aadd(v_cdx,{"cod_ins+ano_mes+qual_fon"})
   aadd(v_cdx,{"ano_mes"})

Case marq=='PROJETOS'
   aadd(v_cdx,{"cod_prj"})
   aadd(v_cdx,{"cod_cli+substr(cod_prj,3)+substr(cod_prj,1,2)"}) // customizado
   aadd(v_cdx,{"substr(cod_prj,3)+substr(cod_prj,1,2)"}) // customizado

Case marq=='REA_AF'
   aadd(v_cdx,{"cod_obra+cod_af+dtos(data)"}) // customizado

Case marq=='VAL_AF'
   aadd(v_cdx,{"cod_obra+cod_af+item+dtos(data)"}) // customizado
   aadd(v_cdx,{"cod_obra+item"})
   aadd(v_cdx,{"cod_obra+cod_af+item+cod_ins+dtos(data)"}) // customizado

Case marq=='RESPONSA'
   aadd(v_cdx,{"num_doc"})
   aadd(v_cdx,{"nome"})

Case marq=='SOLICIT'
   aadd(v_cdx,{"cod_sol"})
   aadd(v_cdx,{"st_dest+codigo"})

Case marq=='TAREFAS'
   aadd(v_cdx,{"cod_doc+nr_rev+dtos(inicio)"}) // customizado

Case marq=='TEMA_DOC'
   aadd(v_cdx,{"cod_tema"})

Case marq=='TIPOSDOC'
   aadd(v_cdx,{"cod_doc+nr_rev+dtos(data)"}) // customizado

Case marq=='TIPO_DOC'
   aadd(v_cdx,{"cod_tipo"})

Case marq=='UNIDADE'
   aadd(v_cdx,{"unidade"})

Case marq=='MAPA'
   aadd(v_cdx,{"cod_map"})

Case marq=='FORMAP'
   aadd(v_cdx,{"cod_map+cod_for"})

Case marq=='DETMAP'
   aadd(v_cdx,{"cod_map+cod_ins+item"})

Case marq=='INSFOR'
   aadd(v_cdx,{"cod_map+cod_ins+cod_for"})
EndCase
Return

3) depois cria outra que diga pro seu sistema quais arquivos abrir qando vc entrar em deerminada rotina ou módulo de seu sistema, assim:

Código: Selecionar todos


function AbrirDbfs
para mprograma
local x,y,va:={}
mprograma=alltrim(lower(mprograma))
do case
   case mprograma="orc010()"
      aadd(va,{"AF"})
      aadd(va,{"CLIENTES"})
      aadd(va,{"FON_PRE"})
      aadd(va,{"FORNECED"})
      aadd(va,{"INDICES"})
      aadd(va,{"OBRAS"})
      aadd(va,{"ORCAMENT"})
      aadd(va,{"PLANEJA"})
      aadd(va,{"PROJETOS"})
      aadd(va,{"RESPONSA"})
   case mprograma="orc020()"
      aadd(va,{"ABREVIA"})
      aadd(va,{"AF"})
...

bla .. bla.. bla..

...

endcase
return(va)

4) no incio do seu sistema e na entrada de cada módulo ou rotina vc faz assim:

Código: Selecionar todos


function abrir
para mexclusivo,mindexar,mlimpar,va
local nomeDBF,nomeCDX,x,y
private v_cdx:={}

// para poder indexar corretamente campos acentuados
REQUEST HB_CODEPAGE_PT850
HB_SETCODEPAGE( "PT850" )

if !mindexar
   preencheSB("Abrindo Arquivos ...")
endif

for x=1 to len(va)
   nomeDBF=strtran(va[x,1],".DBF","")

   SELECT 0
   if netuse(nomeDBF,mexclusivo,20)
      v_cdx:={}
      cdxs(nomeDBF)
      if len(v_cdx)#0
         if mindexar
            pack
            for y=1 to len(v_cdx)
               nomeCDX=nomeDBF+strzero(y,2)
               GTprocessmessages()
               OrdCreate( nomeDBF, nomeCDX, v_cdx[y,1])               
            next
            use
         else
            OrdListAdd( nomeDBF )
         endif
      else
         if mindexar .or. mlimpar
            use
         endif
      endif
   else
      close databases
      return(.f.)
   endif
next
if !mindexar
   restauraSB()
endif
return(.t.)
assim sempre que vc mexer em algum índice ou arquivo basta mexer nas funçöes que os definam

Enviado: 21 Mar 2008 11:48
por Maligno
Taí uma idéia. Só será preciso adaptar a última função pro Clipper. :)

Aliás, uma sugestão: na função 3, onde se define quais arquivos abrir, seria interessante incluir um filtro para que sejam ignorados os DBFs que não forem necessários para determinada situação da rotina chamadora. Exemplo: se for contas a pagar, não será necessário abrir o cadastro de clientes.

Enviado: 21 Mar 2008 21:10
por Luciano Bonfim
Caro Maligno,

é isso mesmo que a funçäo abrir_dbfs faz, eu passo como parâmetro o programa que vou abrir e ela me retorna apenas os DBFs necessários....

quanto as funçöes do xharbour/hwgui foi mal é que eu copiei e colei e esqueci que tava no forum do clipper, mas a única coisa que elas fazem é mostrar uma mensagem de abrindo arquivos na barra de status...