[firebase-br] CONSTRAINT - UNIQUE

Mário Reis mariodosreyx em gmail.com
Qui Ago 8 07:01:35 -03 2019


Olá bom dia Gabriel,

Sim estou usando o Delphi XE7. Porém, no delphi faço parse do ficheiro de
pagamento em XML para um ficheiro FB3 e para um campo exactamente igual ao
campo onde estou a validar e tudo corre na Store Procedure, ou melhor, nop
Servidor FB3
a uma velocidade de processamento, estonteante, mesmo fazendo um log de
todos os passos. Todo o processo de chekagem ou validação e comparação é
feito no Firebird.
A única diferença é que o Campo DOCOBS na tabela COBRANCAS é Varchar(50)
charset WIN1252 collate PXW_INTL850 enquanto no ficheiro de trabalho para
recepção do XML é o mesmo Varchar... tem 35 de comprimento;
Já usei a função Trim(both), mas dá no mesmo porque ao assignar um campo de
35 de comprimento para um de 50 ele assume 50 e ajusta-se à esquerda e
depois so comparo um campo de 50 com outro de 50?!
Vou agora explorar as funções de "String Compare" do Firebird 30 porque não
costumo usar; apenas comparo se strVar_A = str_var_B.
Conhece algumas? De qualquer forma obrigado.
Atentamente


Com os meus melhores cumprimentos
Mário Agostinho Reis
919262146

Esta mensagem contém informação de natureza confidencial e é
exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
receber este email agradecemos que não o copie nem o reenvie e que nos
notifique do ocorrido através do email de resposta.


Gabriel Bonzanini <gabriel.bonzanini em gmail.com> escreveu no dia quarta,
7/08/2019 à(s) 17:48:

> Mário, se você estiver usando Delphi, tente passar o valor do parâmetro
> AsAnsiString ao invés de AsString.
>
> Em qua, 7 de ago de 2019 13:38, Mário Reis <mariodosreyx em gmail.com>
> escreveu:
>
> > Boa tarde companheiros
> > Uma situação bizarra que nunca me ocorreu antes! Tenho uma varavel nu
> > S.Procedure assim definida
> > DECLARE VARIABLE WDOCOBS TYPE OF COLUMN COBRANCAS.DOCOBS on de este , com
> > 50 de comprimento está definido com charset WIN1252 e COLLATION
> PXW_INTL850
> > (sempre usei assim e nunca até hoje tivera problemas)!
> > porém hoje ao receber  carregar esta variavel com
> > "ACRA0CGDI0CORE020190701003001000003" (onde aqui  o i aparece como um I
> em
> > debug apresenta-se como um numero 1 romano, ou seja, traço por cima traço
> > ao alto e traço por baixo.
> > e o meu select não encontra nunca esta chave já se for hardcoded ,
> > encontra!!!
> > Assim, não encontra
> > Serlect * from cobranca c1
> > where c1.docobs=:wdocobs
> > row_count=0;
> > Assim,  encontra
> > Serlect * from cobranca c1
> > where c1.docobs='ACRA0CGDI0CORE020190701003001000003'
> > row_count=1;
> > Alguma ideia? Estou há horas a tentar entender isto
> >
> > Com os meus melhores cumprimentos
> > Mário Agostinho Reis
> > 919262146
> >
> > Esta mensagem contém informação de natureza confidencial e é
> > exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por
> engano,
> > receber este email agradecemos que não o copie nem o reenvie e que nos
> > notifique do ocorrido através do email de resposta.
> >
> >
> > Gladiston Santana <gladiston em vidy.com.br> escreveu no dia terça,
> 6/08/2019
> > à(s) 12:38:
> >
> > > constraint é uma regra de campo, aceita qualquer tipo de lógica que
> você
> > > possa impor com os comandos SQL, neste caso usando algo como
> > > COALESCE(VALUE,'')<>''.
> > > Eu não gosto muito de manter nulos em campos de lookup, pois nulos tem
> de
> > > ser tratados em agregadores e podem fazer-nos penar em algumas
> situações
> > > então em muitas situações em faço assim, por exemplo, numa tabela de
> > > clientes tem o campo de estado( END_UF), mas o estado informado deve
> > > existir na tabela de estados(ADMIN_UF), contudo é permissível não
> > informar
> > > o estado, mas não quero nulos. Daí imponho uma regra assim:
> > > CREATE TABLE CLIENTES (
> > > ...
> > >     END_UF   CHAR(2) DEFAULT '*' NOT NULL CHECK ((VALUE='*') OR
> > >        (EXISTS(SELECT * FROM ADMIN_UF WHERE UF=VALUE))) */,
> > > ...)
> > > Na regra acima ou é um estado pré-cadastrado ou então é "*". Nulos não
> > > entram.
> > >
> > > Sobre o unique, só me faz lembrar de indices, indices não subtraem ou
> > negam
> > > informações, apenas os ordena.
> > > São permitidos expressões como usando coalesce para tratar nulos.
> > > Normalmente o fazemos em conjunto com uma expressão matematica para
> > > ordernar as melhores compras num leque de opções ou algo do genêro,
> sem a
> > > intenção de provocar uma pesquisa mais rapida. Atualmente, com o
> advento
> > de
> > > tabelas temporarias e procedures selecionáveis é muito dificil
> > justificar o
> > > uso de indices desse tipo.
> > >
> > > [] ´s e sucesso.
> > >
> > > Em sex, 2 de ago de 2019 às 10:05, Moacir Kuhn <moacir em softin.com.br>
> > > escreveu:
> > >
> > > > Senhores,
> > > >
> > > >
> > > >
> > > > È possível criar uma CONSTRAINT  - UNIQUE levando em consideração
> > apenas
> > > os
> > > > registros que tenham conteúdo no campo desejado, desprezando os
> > > > NULL/Brancos?
> > > >
> > > >
> > > >
> > > > Att,MOacir
> > > >
> > > >
> > > >
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas:
> > > http://www.firebase.com.br/pesquisa_lista.html
> > >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas:
> > http://www.firebase.com.br/pesquisa_lista.html
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista