Jump to content
Fivewin Brasil

CDX


personal

Recommended Posts

Edu, Agora sim, Senti Firmeza de Macho. Bem, testei até 100.000 Registros, e a única coisa errada que notei no meu Pentium III de 750 mhz, foi a palavra inexistente: 'ZAPERAR.

Correto: 'ZAPEAR'. E também que o bagulho é lerdo pra cacete(irritante). Vou testar de outras formas. Me parece que tem alguma coisa errada... vamos esperar. Marllon, quero sua opinião de 'GAÚCHO', Pois o Edu... Edu, como que faço para Modificar uma mensagem, quando eu já a POSTEI?? Eu sou tão VURRO, que não sei ainda. Como você faz? Abraços.

João Santos

São Paulo-Brasil

(11) 3106-2832

Link to comment
Share on other sites

  • Replies 55
  • Created
  • Last Reply

Top Posters In This Topic

João, durante o teste, o programa mostra 3 números:

1. Código gerado pelo último + 1

2. O número do registro atual

3. a diferença entre eles

Quando a duplicação ocorre este terceiro número começa a ser diferente de zero, -1...-2...-3...-4...etc.

É isto que õcorre com o CDX e não ocorre com o NTX.

Quando isto ocorre, por exemplo -3, você procurará no DBF e encontrará duplicações.

Não é facil localizar as duplicações, mas elas estão lá.

Para localizar as duplicações usando o DBE você pode indexar UNIQUE, depois mandar deletar todos, indexar normal, ai os que restarem não deletados serão os duplicados.

Quem não usa DBE terá que inventar outro método equivalente ou fazer um PRG para facilitar.

Até...

Jorge Adourian

Suporte On Line Clipper 24h: www.solclipper.hpg.com.br

Pare de usar DBU conheça o DBE em www.dbe.hpg.com.br

Informe-se: Aulas Particulares para São Paulo-SP

Editado por - jorgeado on 09/02/2003 14:25:12

Link to comment
Share on other sites

Rapazes (???) é o seguinte.

Vou deixar este teste pra depois.

No momento estou fazendo um teste com CDX em um arquivo com 876.000 registros, e comparando com o NTX anterior.

1 - Pelo menos até agora mada estranho.

2 - Na rede nada estranho ( 5 terminais )

3 - Na mesma máquina, não consigo, a forma de eu abrir os EXE, não permitem que eu abra dois na mesma máquina, isto é uma função minha, que trava para não ter abertura de sistemas por engano ( tipo minimizar e depois sem ver abrir outro EXE)

ps.: Todo o processo de indices, foi feito em modo exclusivo.

Vou continuar até dar o erro (duplicar), ou eu sentir confiança. inclusive vou adicionar um arquivo com mais de 1.500.000 registros.

Ah... foram gerados 6 indices de campos diferentes.

T+ :þ) icon_smile_approve.gif

Cara que coisa de Clodovil...

Oliveira, Sérgio A.

PERSONAL - LINS

Editado por - personal on 09/02/2003 21:43:01

Link to comment
Share on other sites

Sérgio, você disse que seu teste é com indices em modo exclusivo ?

Você quer dizer o que que cada terminal cria um indice particular ?

Que Sistema é este ???

Pode me esclarecer.

Desta forma nunca vai duplicar nada !!!

Até...

Jorge Adourian

Suporte On Line Clipper 24h: www.solclipper.hpg.com.br

Pare de usar DBU conheça o DBE em www.dbe.hpg.com.br

Informe-se: Aulas Particulares para São Paulo-SP

Link to comment
Share on other sites

Jorge, bom dia.

Fiz uns testes preliminares com a rotina que vc postou e fiquei intrigado.

Executei o teste com o RDD CDX e para minha surpresa encontrei registros duplicados. Nao contente executei para NTX e tambem apareceram duplicidades.

Alterei o codigo do seu programa teste para utilizar o ADS e o TOPCONNECT e pasme, tambem apareceram duplicidades.

Para cada teste eu gerei um arquivo com 100.000 registros.

Minha versao do ADS eh a 6.11 e o TOPCONNECT estava acessando um banco MSSQL 7.0 com servidor W2000. A diferenca eh que o SQL abortava a execucao quando tentava duplicar a chave, (mas isso eh recurso do banco e os RDDs do clipper nao tem esta opcao).

Parti para uma analize do programa e fiz algumas alteracoes compilei e executei novamente e apos as alteracoes as duplicidades diminuiram mas nao desapareceram, vou analizar mais um pouco, mas acho que um acesso torrencial como o executado por esta rotina so tende a ter problemas pois conforme foi dito, os RDDs do clipper nao tem critica de chave duplicada, isto deve ficar a cargo do desenvolvedor, em minha opiniao utilizar o ultimo registro imputado para gerar uma chave de indice nao eh a melhor forma, a nao ser que se utilize um semaforo para controlar o acesso, pois existe a probabilidade de duas ou mais sessoes recuperarem o mesmo registro simultaneamente... principalmente num batch destes.

Abracos

Marllon Figueiredo

Analista de Sistemas ERP/CRM

Porto Alegre - RS

marllonfigueiredo@globo.com

Link to comment
Share on other sites

Marllon, quero enfaizar que nunca tive erro com o NTX peço que repita com o NTX com o meu EXE colocado em Dicas, pois repito testei muito e nunca tive nem 1 duplicação.

Caso eu tivesse tido eu teria com certeza colocado em dúvida a lógica, mas nunca ocorreu.

Você tem dado o ZAP a cada novo RDD ???

Que ambiente você usou nos testes, vários micros ou várias janelas ???

Até...

Jorge Adourian

Suporte On Line Clipper 24h: www.solclipper.hpg.com.br

Pare de usar DBU conheça o DBE em www.dbe.hpg.com.br

Informe-se: Aulas Particulares para São Paulo-SP

Editado por - jorgeado on 10/02/2003 11:45:11

Link to comment
Share on other sites

Sim Jorge, eu executei ZAP a cada novo teste e tbm rodei varias vezes para cada RDD.

Executei tanto em janelas (4) em um Pentiun 1G com 128MB como em 4 estacoes windows 98 com servidor Novell 4.11 e ADS 6.11 e em outras 4 estacoes tbm win 98 com servidor win2000 e banco MSSQL7, os resultados foram praticamente os mesmos. (as estacoes eram Intel e AMD)

So nao testei em servidor Linux.

Eu executei os testes com o executavel e tbm com o fonte que vc enviou (o fonte eu compilei com clipper 5.2 e 5.3b e linkei rtlink, exospace e com blinker, ambos apresentaram problemas!!!!

citação:

Marllon, quero enfaizar que nunca tive erro com o NTX peço que repita com o NTX com o meu EXE colocado em Dicas, pois repito testei muito e nunca tive nem 1 duplicação.

Caso eu tivesse tido eu teria com certeza colocado em dúvida a lógica, mas nunca ocorreu.

Você tem dado o ZAP a cada novo RDD ???

Que ambiente você usou nos testes, vários micros ou várias janelas ???

Até...

Jorge Adourian

Suporte On Line Clipper 24h: www.solclipper.hpg.com.br

Pare de usar DBU conheça o DBE em www.dbe.hpg.com.br

Informe-se: Aulas Particulares para São Paulo-SP

Editado por - jorgeado on 10/02/2003 11:45:11


id=quote>id=quote>

Marllon Figueiredo

Analista de Sistemas ERP/CRM

Porto Alegre - RS

marllonfigueiredo@globo.com

Link to comment
Share on other sites

Realmente promessa e divida :)), hoje mesmo estarei enviando o executavel do meu sistema pra vc dar uma olhada, o Vagner ja recebeu uma demo, so nao enviei porque ainda esta cheio de bugs pois estou em processo de conversao, mas ja que vc insiste... a noite te envio um meil com o programa.

Abracos....

citação:

Garoto, não se irrite, não comentei, porque não achei oportuno, nem gostaria de melindrá-lo, óbvio, que você não precisa estudar mais, quero dizer, não muito mais, só mais um pouco(risos). Você sabe, que eu sei, que você sabe. (Eita). Além disso, minhas baterias anti-aéreas estavam apontadas para o Dr. Jorge Adourian(Com todo o respeito), tanto é que ele já abriu mão da teimosia e postou em DICAS. Vejo onde você não pode ver, e você ver onde eu não posso ver, meu caro amigo. Além do mais, uma briga com você, só no futuro, se você não cumprir aquela 'promessa' que me fez. Ai, vou colocar as 'baterias' de 'primeiro mundo' contra você (ai, que medo(risos) ). Abraços, baixe o modelo que o Dr. Jorge Postou e teste por Favor, aliás, vale para todos. Gilmer, é com você. Vocês, sabem o que quero... Abraços.

João Santos

São Paulo-Brasil

(11) 3106-2832


id=quote>id=quote>

Marllon Figueiredo

Analista de Sistemas ERP/CRM

Porto Alegre - RS

marllonfigueiredo@globo.com

Link to comment
Share on other sites

Eu nao tenho medo de terrorismo...

hehehehehehehehehe

so vou enviar o executavel pra vc babar!! (rs)

citação:

Valeu Garoto, viu? Com democracia SADANIANA, é mais fácil conseguir as coisas... (he he he he). Abraços.

João Santos

São Paulo-Brasil

(11) 3106-2832


id=quote>id=quote>

Marllon Figueiredo

Analista de Sistemas ERP/CRM

Porto Alegre - RS

marllonfigueiredo@globo.com

Link to comment
Share on other sites

Alo Galera,

Mineirim Marllon,

Experimente dar um SKIP(0) antes de dar um DBGOTO(). Já tive estes problemas (inclusive relatei aqui no fórum) e os resolvi desta maneira.

É que quando vc executa esta função os índices são atualizados na TORA, e ai o erro possívelmente desaparece.

Um abraço,

Alexandre Pereira

Link to comment
Share on other sites

Grande Jorge, (já pensô se o cara tiver 1.50m (rs)... brincadeira)

Fiz novos testes e algumas alteracoes na sua rotina.

Seguinte, os arquivos DBF/CDX/NTX tem a caracteristica de quando um arquivo é aberto, o servidor envia uma copia da tabela e do indice para a estacao, ou seja, pode ser que em algum momento o arquivo/indice que está em uma estacao esteja temporariamente diferente do de outra estacao, com isto o retorno das funcoes Recno() e dbGoBottom() podem ser incompativeis com a real situacao da tabela/indice. Isto é verdade pelo simples fato de sempre termos que executar um DBCommit() ao final de cada gravacão na tabela.

As alteracoes que fiz foram visando estas questoes e o resultado no final dos testes foi 0 (zero) duplicidades utilizando qualquer RDD.

Estou postando o arquivo PRG com as alteracoes para que vc possa testar tbm.

*** CDX.PRG - TESTE DE INCLUSÇO REPETITIVA COM DRIVER DBFCDX ***

* ESTRUTURA DO TESTE.DBF ***

* 1 CODIGO C 6

* 2 NOME C 50

*******************************

FUNCTION MAIN()

LOCAL AUXLOOP

LOCAL M_DBF:={{'CODIGO','C', 6,0},;

{'NOME ','C',50,0}}

LOCAL VRDD:=ALERT('SELECIONE O RDD !',{'CDX','NTX'})

REQUEST DBFCDX

CLS

DO CASE

CASE VRDD==1

RDDSETDEFAULT('DBFCDX')

CASE VRDD==2

RDDSETDEFAULT('DBFNTX')

OTHERWISE

QUIT

ENDCASE

IF .NOT. FILE('TESTE.DBF')

DBCREATE('TESTE.DBF',M_DBF)

ENDIF

IF ALERT('Indexar ?',{'Sim','Nao'})==1

USE TESTE.DBF EXCLUSIVE

IF ALERT('Zaperar ?',{'Sim','Nao'})==1

ZAP

ENDIF

INDEX ON FIELD->CODIGO TO TESTE

USE

ENDIF

USE TESTE.DBF SHARED

SET INDEX TO TESTE

DO WHILE INKEY(.1) <> 27

set order to 0

APPEND BLANK

set order to 1

IF .NOT. NETERR()

IF RLOCK()

DO WHILE .T.

nRecno := Recno()

cCodigo := G_CODIGO()

IF ! DBSEEK(cCodigo)

dbGoTo(nRecno)

FIELD->CODIGO := cCodigo

FIELD->NOME := FIELD->CODIGO

DBCOMMIT()

DBUNLOCK()

EXIT

ENDIF

// AUXLOOP:=RECNO()

// SEEK FIELD->CODIGO

// IF RECNO()==AUXLOOP

// FIELD->NOME:=FIELD->CODIGO

// EXIT

// ENDIF

// DBGOTO(AUXLOOP)

// FIELD->CODIGO:=''

ENDDO

@ 13,13 SAY FIELD->CODIGO+'/'+STR(RECNO())+'/'+STR(VAL(FIELD->CODIGO)-RECNO())

// DBCOMMIT()

// DBUNLOCK()

ENDIF

ENDIF

ENDDO

USE

RETURN NIL

FUNCTION G_CODIGO()

LOCAL RETORNO

Local cUltimo

//LOCAL AUXREG:=RECNO()

// estou utilizando Lastrec() pq o mesmo retorna realmente

// o ultimo registro do arquivo dbf

// enquanto que db gobottom() se posiciona no ultino

// registro controlado pelo indice

//DBGOBOTTOM()

cUltimo := Str(LastRec())

//RETORNO:=STR(VAL(FIELD->CODIGO)+1,6)

RETORNO:=STR(VAL(cUltimo),6)

//DBGOTO(AUXREG)

RETURN RETORNO

*------------------------------------ FIM ------------------------------------*

É isso, vamos ver se resolvemos esta parada.

ps. outra coisa, só para esclarecer, deixei rodando este programa em uma rede Novell com 5 estacoes e gerei 5 arquivos com 1.000.000 de regiostros cada utilizando o CDX e o NTX e não tive duplicacoes de chave.

Abracos....

Marllon Figueiredo

Analista de Sistemas ERP/CRM

Porto Alegre - RS

marllonfigueiredo@globo.com

Link to comment
Share on other sites

Alex, obrigado

valeu a dica, más a discusão aqui é outra coisa que aparentemente ocorre com os indexe CDX.

Abraços....

citação:

Alo Galera,

Mineirim Marllon,

Experimente dar um SKIP(0) antes de dar um DBGOTO(). Já tive estes problemas (inclusive relatei aqui no fórum) e os resolvi desta maneira.

É que quando vc executa esta função os índices são atualizados na TORA, e ai o erro possívelmente desaparece.

Um abraço,

Alexandre Pereira


id=quote>id=quote>

Marllon Figueiredo

Analista de Sistemas ERP/CRM

Porto Alegre - RS

marllonfigueiredo@globo.com

Link to comment
Share on other sites

Ednaldo Rolim?? Não me decepcione... Estou Esperando sua resposta. Você viu o que eu vi? Senão, Mail-me. Posso ter me enganado. Não farei comentários por enquanto. Marllon, Parabéns. Obrigado por enquanto. edrol@uol.com.br

o Homem Ocupado. (The Best) - Vagner Wirts que vida boa hein? Só no Keijim...

João Santos

São Paulo-Brasil

(11) 3106-2832

Link to comment
Share on other sites

Marllon, iniciei ontem os testes com sua versão, e já tive erros novos.

Mas, gostaria de te pedir uma coisa.

Como você sabe um PRG pode ser escrito de muitas formas, e cada progamador tem lá suas manias.

Acredito que antes de nos envolvermos em novas lógicas, deviarmos primeiro achar respostas para fatos relacionados a lógica original que eu coloquei nas Dicas.

A pergunta é:

Porque comigo o NTX nunca duplica e porque com você duplicou. Vamos até mesmo esquecer o CDX por enquanto, pois esta resposta pode nos levar a novas idéias e soluções.

Eu testei na época que descobri o BUG, com vários Micros em Rede, como você deve ter lido na Carta que enviei a CA, mas atualmente testo em janelas DOS em um único Micro.

O mistério é que o NTX nunca duplica e o CDX sempre duplica. E ainda para piorar com você não ocorreu o mesmo.

Qual o mistério ???

Me ajude a responder esta pergunta.

Jorge Adourian

Suporte On Line Clipper 24h: www.solclipper.hpg.com.br

Pare de usar DBU conheça o DBE em www.dbe.hpg.com.br

Informe-se: Aulas Particulares para São Paulo-SP

Editado por - jorgeado on 11/02/2003 12:48:44

Link to comment
Share on other sites

Jorge, o que eu posso dizer????

apos os ajustes que fiz eu nao tive mais problemas!

Ja com a rotina original eu tive duplicidade de dados tanto em NTX como em CDX e ate no SQL.

Esta noite vou deixar rodando em todas as estacoes (11) na empresa e amanha cedo vou ver o que deu.

Com relacao a logica de programacao, eu concordo plenamente com voce, mas nao podemos deixar de admitir, ate pela nossa experiencia, que tem formas que sao mais eficientes que outras certo. :))

Vamos aos testes...

Abracos

Marllon Figueiredo

Analista de Sistemas ERP/CRM

Porto Alegre - RS

marllonfigueiredo@globo.com

Link to comment
Share on other sites

Marllon, discutir lógica é o mesmo que discutir futebol.

EXATAMENTE por isto eu não que entrar em discução quanto á lógica.

Aceite a lógica como ela é, e me ajude a esclarecer o MISTÉRIO.

Depois podemos discutir a lógica em outro momento.

Veja...Porque eu não quero discutir a lógica, porque ela funciona no NTX comigo e ela funciona por pior que ela seja na opinião de quem for.

Este é o mistério que temos que responder.

Eu acho que precisamos da união do Grupo em torno da quetsão, pois se muitos testarem, talvez com os resultados possamos reponder o tal mistério.

Mas parece que ninguem se interessou, ou preferem receber pronto o resultado. É MAIS COMODO NÃO É ???

Caros colegas, aceitem a lógica que está em Dicas, como ela é, e nos ajudem a esclarecer o MISTÉRIO.

Até...

Jorge Adourian

Suporte On Line Clipper 24h: www.solclipper.hpg.com.br

Pare de usar DBU conheça o DBE em www.dbe.hpg.com.br

Informe-se: Aulas Particulares para São Paulo-SP

Editado por - jorgeado on 11/02/2003 13:36:18

Link to comment
Share on other sites

Bem, vocês devem descobrir o problema somente em rede, pois fora da rede não deu nada em minha máquina com o executável que você postou. Então onde está a lógica? Se um Edifício esta com a arquitetura errada, o que deve ser feito Dr. Jorge? Não entendo? Onde está o erro de indice? É indice ou lógica? Vocês querem nos enlouquecer? Já quase enlouquecido, abraços.

João Santos

São Paulo-Brasil

(11) 3106-2832

Link to comment
Share on other sites

>Mas parece que ninguem se interessou, ou preferem receber >pronto o resultado. É MAIS COMODO NÃO É ???

É mais comodo tambem alfinetar o pessoal do fórum do que

simplesmente dizer:

" Ô pessoal ajudem ai, estamos tentando resolver um problema e quanto mais pessoas se engajarem a testar

mais rápido teremos a resposta..."

[]´s

Edu-DESIS

PS ( Estou em um cliente esta semana vc pensou nisso antes de sair alfinetando os outros?? )

Editado por - desis on 11/02/2003 16:26:38

Link to comment
Share on other sites

Edu, não me leve a mal !!!

Eu sei que nem todos poderão participar a qualquer hora, pois temos que cumprir compromissos e ganhar dinheiro antes, não é ?

É que este assunto já está dando no SACO !!!

Até...

Jorge Adourian

Suporte On Line Clipper 24h: www.solclipper.hpg.com.br

Pare de usar DBU conheça o DBE em www.dbe.hpg.com.br

Informe-se: Aulas Particulares para São Paulo-SP

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...