SQL
Tenho a seguinte linha:
Adodc1.RecordSource = "Select * From Tabela1 Where Nome1 Like '" & Combo1.Text & "'"
e quero fazer um ciclo
For n=1 to 18
aqui fica a mesma linha, mas em vez de Nome1, deverá ser sucessivamente Nome1, Nome2, ... Nome18
next n
Alguém me pode ajudar? A sintaxe que eu tenho tentado ou dá erro ou não resulta, mas suponho que é possÃvel.
Obrigado
Adodc1.RecordSource = "Select * From Tabela1 Where Nome1 Like '" & Combo1.Text & "'"
e quero fazer um ciclo
For n=1 to 18
aqui fica a mesma linha, mas em vez de Nome1, deverá ser sucessivamente Nome1, Nome2, ... Nome18
next n
Alguém me pode ajudar? A sintaxe que eu tenho tentado ou dá erro ou não resulta, mas suponho que é possÃvel.
Obrigado
Tenta assim:
Não deu pra testar pq to sem VB aqui. Mas acho q funciona sim
[txt-color=#000080]Dim[/txt-color]n[txt-color=#000080]as Byte[/txt-color]
[txt-color=#000080]For[/txt-color]n = 1 [txt-color=#000080]to[/txt-color] 18
Adodc1.RecordSource = "Select * From Tabela1 Where Nome" & n & " Like '" & Combo1.Text & "'"
Não deu pra testar pq to sem VB aqui. Mas acho q funciona sim
Hehe, hj eu briguei com as tags de formatação...
[txt-color=#000080]Dim[/txt-color] n as Byte
[txt-color=#000080]For[/txt-color] n = 1 [txt-color=#000080]to[/txt-color] 18
Adodc1.RecordSource = "Select * From Tabela1 Where Nome" & n & " Like '" & Combo1.Text & "'"
Olá Montito
A coisa é um bocado mais complicada do que eu expliquei.
Eu tenho 18 campos em cada ficha (Nome1, Nome2, ... Nome18), para além de outros.
Com um Combo, é escolhido um dos nomes que pode estar em qualquer uma das 18 posições de qualquer das fichas. Essa parte do combo está feita e mostra os nomes sem repetições.
Eu quero que o Datagrid mostre apenas as fichas que contenham o nome escolhido. O código agora está assim:
Dim m As Integer
Dim n As Byte
For m = 1 To Adodc1.Recordset.RecordCount
For n = 1 To 18
Adodc1.RecordSource = "Select * From Tabela1 Where Nome" & n & " Like '" & Combo1.Text & "'"
Next n
Next m
Adodc1.CommandType = adCmdUnknown
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
DataGrid1.Refresh
mas não funciona. No Adodc1.Refresh dá o erro "Não foi fornecido nenhum valor para um ou mais parà ¢metros necessários".
Tirando o Adodc1.Refresh, não funciona.
Pode ajudar-me?
E em vez de Dim n As Byte, não será Integer?
A coisa é um bocado mais complicada do que eu expliquei.
Eu tenho 18 campos em cada ficha (Nome1, Nome2, ... Nome18), para além de outros.
Com um Combo, é escolhido um dos nomes que pode estar em qualquer uma das 18 posições de qualquer das fichas. Essa parte do combo está feita e mostra os nomes sem repetições.
Eu quero que o Datagrid mostre apenas as fichas que contenham o nome escolhido. O código agora está assim:
Dim m As Integer
Dim n As Byte
For m = 1 To Adodc1.Recordset.RecordCount
For n = 1 To 18
Adodc1.RecordSource = "Select * From Tabela1 Where Nome" & n & " Like '" & Combo1.Text & "'"
Next n
Next m
Adodc1.CommandType = adCmdUnknown
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
DataGrid1.Refresh
mas não funciona. No Adodc1.Refresh dá o erro "Não foi fornecido nenhum valor para um ou mais parà ¢metros necessários".
Tirando o Adodc1.Refresh, não funciona.
Pode ajudar-me?
E em vez de Dim n As Byte, não será Integer?
do jeito que esta o codigo sempre que chegar na linha set datagrid1..... o recordsource será sempre o 18, pois vc sempre le do 1 ao 18 e só depois sai do loop....
vc pode escrever o comando SQL de duas maneiras, usando IN ou usando OR
pelo que entendi vc tem 18 campos e precisar localizar o nome solicitado em um dos 18 certo?
se for isso mesmo a instrucao ficara assim:
ADODC1.RECORDSOURCE = "SELECT * FROM TABELA1 WHERE NOME1=' " & COMBO1 & " ' OR NOME2 = ' " & COMBO1 & " ' OR NOME3 = ' " & COMBO1........
ATE O CAMPO 18.
NAO PRECISA DE FOR NEXT.... O SQL SOZINHO FARA A PESQUISA NOS CAMPOS...
quando sua ultima pergunta de usar integer no lugar de byte o melhor mesmo é usar byte, consome menos memoria.
quanto vc define uma variavel como byte seu valor estará entre 0 e 255 e quando vc define como integer seu valor estará entre -32765 e +32765 ( se o valor não for este é bem proximo 32 mil e uns quebrados )
entao, sabendo que o for next vai do 1 ao 18, apenas 1 byte resolve.
sds,
vc pode escrever o comando SQL de duas maneiras, usando IN ou usando OR
pelo que entendi vc tem 18 campos e precisar localizar o nome solicitado em um dos 18 certo?
se for isso mesmo a instrucao ficara assim:
ADODC1.RECORDSOURCE = "SELECT * FROM TABELA1 WHERE NOME1=' " & COMBO1 & " ' OR NOME2 = ' " & COMBO1 & " ' OR NOME3 = ' " & COMBO1........
ATE O CAMPO 18.
NAO PRECISA DE FOR NEXT.... O SQL SOZINHO FARA A PESQUISA NOS CAMPOS...
quando sua ultima pergunta de usar integer no lugar de byte o melhor mesmo é usar byte, consome menos memoria.
quanto vc define uma variavel como byte seu valor estará entre 0 e 255 e quando vc define como integer seu valor estará entre -32765 e +32765 ( se o valor não for este é bem proximo 32 mil e uns quebrados )
entao, sabendo que o for next vai do 1 ao 18, apenas 1 byte resolve.
sds,
VSALAZAR
A sua ajuda é a que eu preciso, mas sou mesmo muito ignorante e não percebo nada de SQL.
Tentei passar a linha e dá-me erro de sintaxe. Tentei corrigir e diz-me que não foi fornecido o valor de um ou mais parà ¢metros.
Devo ser eu que termino mal a linha de comando.
vc importa-se de escrever a linha outra vez, com o final, porque deve ser falta de "'" ou "".
Basta terminar em três, não é preciso as 18.
Obrigado
A sua ajuda é a que eu preciso, mas sou mesmo muito ignorante e não percebo nada de SQL.
Tentei passar a linha e dá-me erro de sintaxe. Tentei corrigir e diz-me que não foi fornecido o valor de um ou mais parà ¢metros.
Devo ser eu que termino mal a linha de comando.
vc importa-se de escrever a linha outra vez, com o final, porque deve ser falta de "'" ou "".
Basta terminar em três, não é preciso as 18.
Obrigado
Olha, já consegui resolver.
Vou encerrar o tópico.
Obrigado.
Vou encerrar o tópico.
Obrigado.
Tópico encerrado , respostas não são mais permitidas