Jump to content
Fivewin Brasil

Ajuda em CDX alguem.. :)


jef2_tim

Recommended Posts

Ola meus grandes ...

Caras.. o seguinte.. estou mudando os indices pre cdx como me incentivou o nosso amigo vagner...

Bem, eu tenho uma rotina de abertura de arquivos de bancos de dados e indices... e naum estou conseguindo usa-la .. acho q terei problemas com ela agora.. queria saber se alguem tem ideias de rotinas de abertura de arquivos e indices CDX pra eu usar ou mudar a minha...

valeu amigos

um clipper abracaum ae

Link to comment
Share on other sites

Olá Jef,

Uma coisa que não pode esquecer é de colocar o Request DBFCDX, no seu prg principal icon_smile_big.gif, e nem de lincar as libs do Dbfcdx, no caso do 5.3 é a DbfCdx.Lib e a _DbfCdx.Lib, sua rotina de abertura e reorganização, para não mudar muita coisa de principio, pode ser a mesma, só coloque o Via na Abertura de arquivo, aí vc não muda quase nada e já passa para Cdx icon_smile_big.gif

Ex. :

Abertura normal em Ntx

Use Arquivo New Share Alias Arquivo

Abertura Normal em Cdx

Use Arquivo New Share Alias Arquivo Via "DbfCdx"

Sele Arquivo

Inde On Codigo To Arquivo1

Inde On Nome To Arquivo2

Set Inde To Arquivo1,Arquivo2

Esses comando funcionam perfeitamente tanto no Cdx qnto no Ntx, porém o CDX, existem os TAG que facilitam em muito icon_smile_big.gif

Abraços

Vagner Wirts

São Paulo-Brasil

Link to comment
Share on other sites

Ola Vagner...

bicho eu deixei tudo como stava.. coloquei o via dbfcdx tbm... no inicio do programa eu coloquei

REQUEST DBFCDX

RDDSETDEFAULT("DBFCDX")

tem um comando q viria depois deste q naum roda .. da pau ae tirei.. quer seria este DBFSETDRIVER("_DBFCDX")

No meu lnk coloquei a lib dbfcdx e _dbfcdx .. as duas...

Bem... o q fiz... eu tenho .. por exemplo o safrec.. que é um banco de dados de vendas.. nele tenho tipo 6 indices.. entao crei um cdx com 6 tags entende... o cdx chamo tbm de safrec.cdx

o set index to .. deve ser safrec.cdx ou os tags?

creio q o safrec.cdx .. certo?

agora.. quando to tentando indexar ta dando erro fatal.. "esta aplicacao executou uma operacao ilegal e sera fechada" ae .. dano-se.. :)

isto da mas nao é em todos.. uns passam e outros nao.. e notei q uns da corrpcao de banco de dados...

eu acho q minha rotina pode estar causando algum problema.. c tem uma ideia do q seja ???

valeu grande...

um clipper abracaum

Link to comment
Share on other sites

Bem aqui esta o exemplo de como estou fazendo.. no caso da organizacao de produtos (safpro) ... na verdade tem mais alguns indices... (Tags) mas postei estes dois pq os outros estao exatamente a mesma coisa.. nao sei pq nao esta indexando.. da pau gerall .. erro esta aplicacao f.. deu .. com o ruindows :D:D:D::DD:

If Nme_Index = "SAFPRO"

oMeter1:nTotal = RecCount()

Index On Str(SAFPRO->Codpro,6) Tag Procodgo To SafPro ;

Eval ( oMeter1:Set( RecNo() ), cSay := "Produtos -> Codigo ", oSay:Refresh(), SysRefresh() )

Index On SAFPRO->Despro Tag Prorazao To Safpro;

Eval (oMeter1:Set( RecNo() ), cSay := "Produtos -> Descri‡Æo", oSay:Refresh(),SysRefresh() )

Com ntx tava funcionando legal

valeu amigos...

um clipper abracaum

Link to comment
Share on other sites

Ola amigos.. aqui esta minha indexacao...

Primeiro...

*--------------------

FUNCTION Saf_Rdx(Auto)

*--------------------

Local noESC:=.f.

DEFINE DIALOG oDlgRdx RESOURCE "Reindexar"

oDlgRdx:lHelpIcon := .f.

Redefine CheckBox oCheck1 Var cCheck1 ID 101 Of oDlgRdx

Redefine CheckBox oCheck2 Var cCheck2 ID 102 Of oDlgRdx

Redefine CheckBox oCheck3 Var cCheck3 ID 103 Of oDlgRdx

Redefine Button oBtnSim ID 701 Of oDlgRdx ;

Action (oBtnNao:Disable, oBtnSim:Disable, Saf_Reindexa())

Redefine Button oBtnNao ID 702 Of oDlgRdx ;

Action (noESC:=.t.,oDlgRdx:End()) Cancel

Redefine Button oBtnSair ID 129 Of oDlgRdx ;

Action (noESC:=.t.,oDlgRdx:End()) Cancel

ACTIVATE DIALOG oDlgRdx CENTERED Valid noEsc

Return(.t.)

// esta é a tela onde o cara escolhe oq ele quer indexar.. se sao produtos, clientes, fornecedores,, etc.. etc.. tem mais checks.,. coloquei estes so pra dar uma ideia...

*--------------------------

Function Saf_Reindexa()

*--------------------------

Local oDlgProcess, cSay_Pro, oSay_Pro

Local noESC:=.f.

If cCheck1

Ger_Ntx("SAFPRO")

Ger_Ntx("SAFUNI")

Ger_Ntx("SAFGRU")

Ger_Ntx("SAFGPR")

Ger_Ntx("SAFCCP")

Ger_Ntx("SAFPR1")

Ger_Ntx("SAFOBP")

Ger_Ntx("SAFLAY")

Ger_Ntx("SAFALM")

Endif

If cCheck2

Ger_Ntx("SAFCLI")

Ger_Ntx("SAFCL1")

Ger_Ntx("SAFCL2")

Ger_Ntx("SAFCL3")

Ger_Ntx("SAFRGO")

Ger_Ntx("SAFSPC")

Endif

// aqui eu verifico quais checks estao precionados e chamo a funcao pra reindexar os arquivos do check

*--------------------

FUNCTION GER_NTX

*--------------------

Parameters Nme_Index

DEFINE DIALOG oDlgMet RESOURCE "Metter"

oDlgMet:lHelpIcon := .f.

Nactual := 0

Ntotal := 0

Define Font oFont Name "Ms Sans Serif" Size 6,6

Redefine Say oSay Var cSay ID -1 Of oDlgMet

Redefine vMeter oMeter1 Var nActual Total nTotal ID 102 Font oFont Of oDlgMet BarColor nRgb(0,0,0),nRgb(0,0,255) Tipo 1

ACTIVATE DIALOG oDlgMet CENTERED On Paint Ger_CDX(Nme_INdex)

Return(.t.)

//// aqui é a tela onde contem a dialog o say e o Meter.. quando eu painto ela chamo entao a funcao de cdx

*--------------------

FUNCTION GER_CDX

*--------------------

Parameters Nme_Index

If !Open_File([&Nme_Index.],[],.T.)

Return

Endif

Pack

msgalert(nme_index)

If Nme_Index = "SAFPRO"

oMeter1:nTotal = RecCount()

Index On Str(SAFPRO->Codpro,6) Tag Procodgo To SafPro ;

Eval ( oMeter1:Set( RecNo() ), cSay := "Produtos -> Codigo ", oSay:Refresh(), SysRefresh() )

Index On SAFPRO->Despro Tag Prorazao To Safpro;

Eval (oMeter1:Set( RecNo() ), cSay := "Produtos -> Descri‡Æo", oSay:Refresh(),SysRefresh() )

Index On SAFPRO->Nmefrn + SAFPRO->Despro Tag Procdfab To Safpro ;

Eval (oMeter1:Set( RecNo() ), cSay := "Produtos -> Fornecedores + Descricao ", oSay:Refresh(),SysRefresh() )

Index On SAFPRO->Nmefrn + SAFPRO->Descve + SAFPRO->Despro Tag Procdfc1 To Safpro;

Eval (oMeter1:Set( RecNo() ), cSay := "Produtos -> Fabricante + Classifica‡äes + Descricao ", oSay:Refresh(),SysRefresh() )

Index On SAFPRO->Descve + SAFPRO->Despro Tag Procdcve To Safpro;

Eval (oMeter1:Set( RecNo() ), cSay := "Produtos -> Classifica‡äes + Descricao ", oSay:Refresh(),SysRefresh() )

Index On SAFPRO->Descve + SAFPRO->Nmefrn + SAFPRO->Despro Tag Procdfc2 To Safpro;

Eval (oMeter1:Set( RecNo() ), cSay := "Produtos -> Classifica‡äes + Fabricante + Descri‡Æo ", oSay:Refresh(),SysRefresh() )

Index On SAFPRO->Numfrn + SAFPRO->Despro Tag Pronumfr To Safpro;

Eval (oMeter1:Set( RecNo() ), cSay := "Produtos -> Numero do Fabricante + Descricao ", oSay:Refresh(),SysRefresh() )

Index On SAFPRO->Nmefrn + SAFPRO->Numfrn + SAFPRO->Despro Tag Procdfnf To Safpro;

Eval (oMeter1:Set( RecNo() ), cSay := "Produtos -> Fabricante + Numero do Fabricante + Descricao ", oSay:Refresh(),SysRefresh() )

Elseif Nme_Index = "SAFCVE"

oMeter1:nTotal = RecCount()

...

e aqui é minha reindexacao... oq estaria de errado entao.. eu consegui abrir a tela.. mas nao aparece a reindexacao

um clipper abracaum pessoal

valeu

Link to comment
Share on other sites

Oi Jef, vc vai ter problemas com paint na dialog, talvez seja por isso que não consegue, tente assim

LOCAL lEsc:=.F.

PRIVATE qTotDbf:=DIRECTORY("*.DBF","D")

PRIVATE qTotCdx:=DIRECTORY("*.CDX","D")

PRIVATE ntotDbf:=0,nTotCdx:=0

PRIVATE oMetDbf,oMetCdx,fim:=.F.

define odlg

@ ..,.. METER oMeter1 VAR nTotCdx TOTAL qTotCdx FONT oFnt1 SIZE 210,10 OF oDlg BARCOLOR nRgb(0,130,132),nRgb(255,255,255)

oDlg:bStart:={|| ger_cdx(oDlg,Nme_Index),lEsc:=.T.,oDlg:End()}

ACTIVATE DIALOG oDlg CENTER VALID lEsc

FUNCTION Ger_cdx(oDlg,Nme_Index)

If Nme_Index = "SAFPRO"

------USE ..... NEW

oMeter1:nTotal = RecCount()

Index On Str(SAFPRO->Codpro,6) Tag Procodgo To SafPro ;

Eval ( oMeter1:Set( RecNo() ), cSay := "Produtos -> Codigo ", oSay:Refresh(), SysRefresh() )

...

...

end

Abraços.

Beto

betovsp@hotmail.com

(16)9148-1515

Ribeirão Preto/SP

Link to comment
Share on other sites

Ola amigos... ola beto.. primeiro lugar quero agradecer ae pela ajuda ... :)

bicho agora vem o pepino :D

siginte... eu fiz um teste.. coloquei um botao na telinha.. e chama normal .. entende.. da certo... funciona legal sem problemas.. mas nao chama no on paint.. coloquei o start e mesmo assim nada ... simplesmente nao entra na funcao ger_cdx naum entendo pq.. daquela janela nao consigo executar nenhuma funcao .. q nao seja por um botao.. ou click ou alguma outra coisa.. mas executar automaticamente nao vai...

puts... eu testei com botao.. testei ate com on click e funciona.. faz a reindexacao.. mostra o esquema da metter tuido na boa... mas tem de ter algum evento.. isto q ta me deixando cabrero

q se acha q poderia dar este pau veio...

valeu ..

Link to comment
Share on other sites

Cara eu nao entendi uma coisa

LOCAL lEsc:=.F.

PRIVATE qTotDbf:=DIRECTORY("*.DBF","D")

PRIVATE qTotCdx:=DIRECTORY("*.CDX","D")

PRIVATE ntotDbf:=0,nTotCdx:=0

PRIVATE oMetDbf,oMetCdx,fim:=.F.

eu nao to usando o meter pra me mostrar os arquivos indexados e sim registros...eu nao to entendendo na minha rotina pq esta causando problemas no on paint... entende... c aparentemente esta tudo correto cara... eu to travado nisto ..

creio so precisar do nactual e ntotal .. q sao o registro atual q esta no banco de dados.. e o total de registros daquele banco de dados...

como disse.. ta funcionando.. sem problemas.. o ON PAINT é q nao esta funcioando ...

um clipper abraco

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...