Ajuda - Busca - Membros - Calendário
Versão Completa: Querys A Bd Mysql...
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
jxfdasilva
Olá Companheiros,

Aparentemente parece ser um assunto MySQL, mas não creio haver solução directamente, através dos comandos ou sintaxes SQL. Assim, correndo o risco, cá vai:

Tenho uma Tabela criada em MySQL e nela uma série de Campos. Acontece porém, que quando faço o Insert Into, quero evitar que os campos da tabela se dupliquem, ou seja, que se repitam os mesmos dados, em outra linha. Como possui 7 Campos, a condição é que só, e apenas só, quando todos os valores a introduzir dos 7 Campos sejam iguais, nesta condição não haja inserção. Alguma sugestão?
FK não worka.



Aquele Abraço

José Da Silva

Maputo - Mozambique
Micheus
QUOTE(jxfdasilva @ 14/02/2007 - 06:29) *
Aparentemente parece ser um assunto MySQL, mas não creio haver solução directamente, através dos comandos ou sintaxes SQL. Assim, correndo o risco, cá vai:

Tenho uma Tabela criada em MySQL e nela uma série de Campos. Acontece porém, que quando faço o Insert Into, quero evitar que os campos da tabela se dupliquem, ou seja, que se repitam os mesmos dados, em outra linha. Como possui 7 Campos, a condição é que só, e apenas só, quando todos os valores a introduzir dos 7 Campos sejam iguais, nesta condição não haja inserção. Alguma sugestão?
José, acredito que haja condições de você fazer através de comando SQL sim.
Dê uma olhada neste link(MySQL 5.0 Reference Manual). você verá que há possibilidade de você ignorar(ignore), atualizá-los (update) ou substituir (replace) itens já existentes na tabela.
Se este INSERT INTO obter os registros via SELECT, talvez você já possa aí, na cláusula WHERE evitar a obtenção de dados que já existam na tabela destino, utilizando um "WHERE NOT EXISTS...".

Seria isto?

Abraços
jxfdasilva
Olá Micheus?


Bom te ler. Vou dar uma mirada e logo faço o feedback.

Um abraço


José


schaukoski
Olá José, eu tinha me deparado com o mesmo problema aqui vai uma sugestão bem simples:

CODE
    
if TABELA.Locate('CAMPO1;CAMPO2;CAMPO3;CAMPO4;CAMPO5;CAMPO6;CAMPO7', vararrayof([VALOR1, VALOR2, VALOR3, VALOR4, VALOR5, VALOR6, VALOR7]), []) then


aonde os CAMPOS , voce coloca cada campo de sua tabela , e o VALOR1, a variável que contém o valor que voce quer procurar

a variavel VALOR1, vai procurar se existe o mesmo valor, em campo 1, se existir, ele vai procurando todos na mesma linha se existe...

não se esqueca de criar as variáveis VALOR1, ..2 ..3 etc.

Qualquer coisa posta o nome da sua tabela e os campos, que eu tento te ajudar.

Abraço
jxfdasilva
Olá schaukoski,

Obrigado pela força. Os campos são:

Tabela gratificados

Campos

Instituicao, Hora_In, Hora_Out, Data, Pagamento, Nome


Na pratica bastava apenas que o Campo Hora_In, Hora_Out e Data não coincidisse...


Fica bem amigão,


José

Maputo
jxfdasilva
Boa Madrugada a todos,


Acabei, sem com isso tenha desistido de usar sintaxe SQL, organizar desta forma (seguindo a sugestão do schaukoski ):

If SQLQuery3.Locate('Instituicao; Hora_In; Hora_Out; Data ', VarArrayOf ([Edit1.Text, CBox2.Text, CBox3.Text, DateToStr(DT1.date) ]),

[loCaseInsensitive]) then

ShowMessage(' bla bla bla ')


//Claro que me preocupei com a formatação da data:

ShortDateFormat := 'yyyy-mm-dd'; ///logo após o Begin – simples hein!


Vou tentando magicar uma solução para uma sentença em SQL.

Uma boa jornada de sono a todos…

Obrigado companheiros


Zzzz
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.