Jump to content

Recommended Posts

Posted

Olá,

Tenho duas tabelas de SQL, ambas com dados quase idênticos, tendo em comum o 'id' e o 'label'

Table1:                    Table2:
id   label   type          id   label   type
1    aaa     xpto           1   aaa     xpto
2    bbb     xpto
3    ccc     flop

No meu programa tenho duas listviews, listview1 e listview 2.

Eu quero preencher a listview1 com os dados da Table2 e depois preencher a listview2 com os dados da Table1 MAS sem colocar os que já estão na listview1, ou seja, quero ficar com isto:

listview1:        listview2:
id   label        id   label
2    bbb          1    aaa
3    ccc

Qual o comando SQL que devo usar?

Este comando que uso para preencher a listview1 funciona mas eu estou a 'forçar' o item que quero evitar (o 'aaa'):

SQLcommand.CommandText = "SELECT id, label FROM Table1 WHERE Type = 'xpto' AND PartNumber <> 'aaa'"

Eu quero é uma coisa genérica, do género que seja percorrida toda a tabela para ver se o item já existe. Estou com a cabeça feita num oito de tanto tentar e não conseguir fazer isto. Alguém sabe como?

Obrigado.

Posted

do género que seja percorrida toda a tabela para ver se o item já existe

Eis a tua resposta.

Eu puxava a tabela toda para a aplicação e depois, através de um ciclo, ia passar a listview toda à caça do item para adicionar a linha actual da tabela puxada caso não fosse encontrado.

For Each LVI As ListViewItem In ListView1.Items
'lógica de comparação
Next

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Posted

Eis a tua resposta.

Eu puxava a tabela toda para a aplicação e depois, através de um ciclo, ia passar a listview toda à caça do item para adicionar a linha actual da tabela puxada caso não fosse encontrado.

For Each LVI As ListViewItem In ListView1.Items
'lógica de comparação
Next

Pois, só se for assim. Penso que deve haver algum comando SQL que faça isso mas enquanto não sei, vou fazer como sugeres.

Posted

AH, espera. há duas tabelas. Não tinha percebido. Fiquei com a impressão de ser só uma.

Sim, penso que seja possível. Não tenho nada onde possa testar neste momento e como não uso isso com muita frequência também não te posso adiantar nada.

Há-de passar por aqui alguém que saiba isso de cor concerteza 😛

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Posted

conheces o select minus???... existe para oracle...nao sei se para SQL server ou outros existe,... mas é disso que precisas

Eu acho que o meu problema não pode ser resolvido por comandos SQL. Isto porque o que eu quero mesmo é não repetir items nas duas listboxs. Implementei como o ribeiro55 disse e está a funcionar bem.

Posted

Eu acho que o meu problema não pode ser resolvido por comandos SQL. Isto porque o que eu quero mesmo é não repetir items nas duas listboxs. Implementei como o ribeiro55 disse e está a funcionar bem.

Desculpa mas estás errado.. isso em oracle faz-se como te disse.

Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Posted

Olá,

Tenho duas tabelas de SQL, ambas com dados quase idênticos, tendo em comum o 'id' e o 'label'

Table1:                    Table2:
id   label   type          id   label   type
1    aaa     xpto           1   aaa     xpto
2    bbb     xpto
3    ccc     flop

No meu programa tenho duas listviews, listview1 e listview 2.

Eu quero preencher a listview1 com os dados da Table2 e depois preencher a listview2 com os dados da Table1 MAS sem colocar os que já estão na listview1, ou seja, quero ficar com isto:

listview1:        listview2:
id   label        id   label
2    bbb          1    aaa
3    ccc

Qual o comando SQL que devo usar?

Este comando que uso para preencher a listview1 funciona mas eu estou a 'forçar' o item que quero evitar (o 'aaa'):

SQLcommand.CommandText = "SELECT id, label FROM Table1 WHERE Type = 'xpto' AND PartNumber <> 'aaa'"

Eu quero é uma coisa genérica, do género que seja percorrida toda a tabela para ver se o item já existe. Estou com a cabeça feita num oito de tanto tentar e não conseguir fazer isto. Alguém sabe como?

Obrigado.

usas o comando distinct (para devolver so os valores diferentes) e o join para unires as duas tabelas

Tens aqui exemplos

http://www.1keydata.com/sql/sqldistinct.html

http://www.1keydata.com/sql/sqljoins.html

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.