jef2_tim Posted June 22, 2004 Report Share Posted June 22, 2004 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 Quote Link to comment Share on other sites More sharing options...
betovsp Posted June 22, 2004 Report Share Posted June 22, 2004 Olá Amigo. Uso uma rotina simples, passe seu email que te mandarei. Abraços. Beto betovsp@hotmail.com (16)9148-1515 Ribeirão Preto/SP Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted June 22, 2004 Author Report Share Posted June 22, 2004 O meu amigo beto.. manda ae veio.... jef2_timber@hotmail.com valeu cara... brigadao Quote Link to comment Share on other sites More sharing options...
vagner Posted June 22, 2004 Report Share Posted June 22, 2004 Olá Jef, Uma coisa que não pode esquecer é de colocar o Request DBFCDX, no seu prg principal , 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 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 Abraços Vagner Wirts São Paulo-Brasil Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted June 22, 2004 Author Report Share Posted June 22, 2004 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 Quote Link to comment Share on other sites More sharing options...
vagner Posted June 23, 2004 Report Share Posted June 23, 2004 Olá Jef, Bom, daria para postar como vc está abrindo o arquivo e mandando indexar ?, não esqueça q têm q eliminar o cdx 1º Abraços Vagner Wirts São Paulo-Brasil Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted June 24, 2004 Author Report Share Posted June 24, 2004 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::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 Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted June 24, 2004 Author Report Share Posted June 24, 2004 ola amigos... Notei que quando o banco de dados esta vazio, sem registro algum ele da pau.. se eu coloco qualquer coisa dentro do registro ele funciona normalmente... eagora e se o cara esta com o sistema novo.. como fazer entao? valeu Quote Link to comment Share on other sites More sharing options...
betovsp Posted June 24, 2004 Report Share Posted June 24, 2004 Olá jef. Poste como vc abre o arquivo no fonte pra darmos uma olhada. Beto betovsp@hotmail.com (16)9148-1515 Ribeirão Preto/SP Quote Link to comment Share on other sites More sharing options...
siscat Posted June 24, 2004 Report Share Posted June 24, 2004 Jef, boa tarde... qual versao do Clipper voce ta' usando? Marllon Figueiredo Analista de Sistemas ERP/CRM Porto Alegre - RS marllonfigueiredo@hotmail.com Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted June 24, 2004 Author Report Share Posted June 24, 2004 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 Quote Link to comment Share on other sites More sharing options...
betovsp Posted June 24, 2004 Report Share Posted June 24, 2004 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 Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted June 24, 2004 Author Report Share Posted June 24, 2004 Ola amigos... ola beto.. primeiro lugar quero agradecer ae pela ajuda ... bicho agora vem o pepino 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 .. Quote Link to comment Share on other sites More sharing options...
betovsp Posted June 24, 2004 Report Share Posted June 24, 2004 Jef, tenta validar sua dialog: LOCAL fim:=.F. active dialog..... Ger_ntx(..) Valid(fim) Ger_ntx(..) .. .. fim:=.T. Return(fim) Beto betovsp@hotmail.com (16)9148-1515 Ribeirão Preto/SP Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted June 24, 2004 Author Report Share Posted June 24, 2004 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 Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted June 24, 2004 Author Report Share Posted June 24, 2004 Aeeeeeee Betao.. conseguimos cara... pessoal era problema de class no WS .. esta funcionando agora.. refiz a porcaria da janela e esta tudo ok... valeu por todos ae ... nos darem, luzes.. um clipper abracaum valeu Beto.. q estara no FW - Super Encontro... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.