Clipper On Line • Ver Tópico - Browse Filter - Array Filter

Browse Filter - Array Filter

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Browse Filter - Array Filter

Mensagempor JoséQuintas » 11 Mar 2020 15:40

asimoes escreveu:Como não estou com pressa nem com problema usando DBF e o LetoDBf, irei usar até precisar mudar.


Aí que está a questão.
A melhor hora pra testar algo novo é quando não tem problemas.

Fora isso....
Depende como fizeram os testes:
Uma das opções do ADS é funcionar exatamente igual SQL Server: Datas em branco vém NULL, e strings vém com Trim().
Sem essa configuração, vai trazer lixo na conexão e demorar mais.

E se usar apenas ADS igual DBF... provavelmente fica igual DBF.

Importante:

ADS LOCAL é pra trabalho local ou rede, sem uso via internet.
Ele permite ser usado exatamente igual DBF - desse jeito sem vantagem nenhuma.
Ele permite ser usado igual SQL, exatamente igual SQL SERVER, aí entra vantagem.
Datas com NULL ao invés de Ctod(""), strings salvas com Trim(), igual SQL.
Se testaram igual DBF... aí não tem vantagem.

Repetindo: se usa LeToDBF pra acessar via INTERNET, o ADS LOCAL NÃO vai substituir.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Browse Filter - Array Filter

Mensagempor asimoes » 11 Mar 2020 16:55

Quintas,

Uma coisa que me chamou a atenção é que o ADS tem um recurso do Oracle o RowID, com RowID você faz acesso direto ao registro da tabela, isso não tem no MariaDb não sei se existe no MaySql uma vez que a Oracle comprou.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Browse Filter - Array Filter

Mensagempor asimoes » 11 Mar 2020 16:59

Opa,

Descobri isso:

SELECT @rowid:=@rowid+1 as rowid
FROM admsaude, (SELECT @rowid:=0) as init
ORDER BY codigo
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Browse Filter - Array Filter

Mensagempor JoséQuintas » 11 Mar 2020 18:15

asimoes escreveu:Quintas,
Uma coisa que me chamou a atenção é que o ADS tem um recurso do Oracle o RowID, com RowID você faz acesso direto ao registro da tabela, isso não tem no MariaDb não sei se existe no MySql uma vez que a Oracle comprou.


Aí que está.
Isso, de certa forma, é pensar igual DBF.

Em TODA TABELA, o ideal é criar um campo de numeração automática, como código chave de registro.
Pode até chamar isso de RECNO, mas é uma identificação única.

Itens de pedido, aonde tem lá o pedido e o item....
Criei um campo IDItemPedido, que é incremental.

E em todas as tabelas: IDCadastro, IDProduto, IDTransportadora, IDPedido, IDFinanceiro, IDEstoque, etc.

Tudo bem, pode ser equivalente ao RecNo(), mas é uma identificação única de cada registro em cada tabela.
E o melhor: em DBF o RecNo() se altera quando se faz um PACK, mas no MySQL nunca.

Compare:

Olha o registro de estoque RecNo() = 10
Olha o registro de estoque IdEstoque = 10

Com certeza, chamar de RecNo() fica esquisito. melhor chamar de IdEstoque (Identificação da tabela Estoque).

Parece uma coisa até meio boba, mas fica muito mais profissional.
Deixa de ser um número sequencial de ordem de gravação e passa a ser uma identificação única/exclusiva para cada registro.

Na hora de atualizar... atualiza o registro com aquela ID, e nem interessa posição/RecNo()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Browse Filter - Array Filter

Mensagempor JoséQuintas » 11 Mar 2020 18:21

O que leva a outra questão: porque precisaria do RecNo() ??

Ou usa UPDATE a,b....

Ou:

Rs1 := cn:Execute( "SELECT * FROM ...." )
DO WHILE ! Rs1:Eof()
   cn:Execute( "UPDATE ... " )
   Rs1:MoveNext()
ENDDO


ou, guardar a ID, e atualizar diretamente pela ID.

Nota: é, estou mudando radical, nada de pensar em DBF pra mexer no MySQL.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Browse Filter - Array Filter

Mensagempor asimoes » 11 Mar 2020 18:22

JoséQuintas escreveu:Em TODA TABELA, o ideal é criar um campo de numeração automática, como código chave de registro.
Pode até chamar isso de RECNO, mas é uma identificação única.


Pois é se esse ID é deletado da tabela vai ficar um buraco na sequencia, verifiquei isso agora, tenho uma coluna que é um ID com auto sequencia, quando eu rodei essa query que eu postei vi os buracos no ID
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Browse Filter - Array Filter

Mensagempor asimoes » 11 Mar 2020 18:25

A questão do ID ou ROWID é para fins de auditoria, guardar algumas informações para o usuário auditar o que foi feito, principalmente rotina que exclui registro.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Browse Filter - Array Filter

Mensagempor JoséQuintas » 11 Mar 2020 18:26

E qual a diferença se a auditoria for por ID, e registrar as exclusões?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Browse Filter - Array Filter

Mensagempor asimoes » 11 Mar 2020 20:56

Já resolvi o problema, vou usar trigger na auditoria, muito fácil
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Anterior



Retornar para HwGui

Quem está online

Usuários vendo este fórum: Bing [Bot] e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro