SQL A PARTIR DE OPTIONS

USUARIO.EXCLUIDOS 07/07/2005 13:43:46
#92710
PREZADOS AGRADEÇO PELA ATENÇÃO DE TODOS QUE SEMPRE TEM RESPONDIDO QUANDO SOLICITAMOS ALGUMA AJUDA.

BEM APÓ“S TER RECEBIDO A AJUDA DE UM USUàRIO DO FORUM, FIZ AS ALTERAÇÕES NO PROGRAMA E DEU CERTO. PORéM QUANDO FUI SALVAR NO OUTRO HD FIZ A TROCA DOS FONTES E SOBREPUS O ALTERADO E NÃO ME LEMBRO MAIS COMO FAZER A ALTERAÇÃO NOVAMENTE. A DÃÅ¡VIDA é A SEGUINTE:

TENHO UMA CONSULTA DE AUTORES NO PROGRAMA. TENHO 09 OPTION BUTTONS PARA SELECIONAR E NO BANCO DE DADOS TAMBEM TEM NOVE CAMPOS ONDE REGISTRO OS AUTORES DOS LIVROS. QUANDO O USUARIO SELECIONA UM OPTION BUTON ELE BUSCA NO CAMPO ESPECIFICO NO BANCO DE DADOS E MOSTRA NO GRID OS AUTORES ENCONTRADOS.

ALGUM PODERIA ME DAR UMA DICA, POIS TENTEI E NÃO DEU CERTO.

GRATO.

LUIZ.

[txt-color=#008000]** Título Original ("PRECISO NOVAMENTE DE AJUDA") editado por KpellaJr
** Por favor, não use MAIÃÅ¡SCULAS, significa que está gritando e dificulta a leitura. [/txt-color]
USUARIO.EXCLUIDOS 07/07/2005 15:42:25
#92738
pelo q entendi eh mais ou menos assim...
If Opt1 = True Then
With adodcteste
.RecordSource = "SELECT * FROM Tabela where autor = 01;"
.Refresh
End With
end if
if Opt2 = true then
With adodcteste
.RecordSource = "SELECT * FROM Tabela where autor = 02;"
.Refresh
End With
end if
e assim por diante, tem outras maneiras mas essa eh bem simples...
LCSD 07/07/2005 15:51:00
#92740
Resposta escolhida
LGNSantos

Boa Tarde

Quanto a sua dúvida, se forem sequenciais os números, então pode usar um Array de Options, assim o código ficará reduzido:

Private Sub Option1_Click(Index As Integer)
Dim iAutor as Integer
iAutor = index +1
With adodcteste
.RecordSource = "SELECT * FROM Tabela where autor = ;" & iAutor
.Refresh
End With
End Sub


Elimina-se 9 IF... END IF. Se forem outros valores, armazene na TAG de cada Option, e ficaria assim:

Private Sub Option1_Click(Index As Integer)
Dim iAutor as Integer
iAutor = CINT(Option1(index).Tag) +1
With adodcteste
.RecordSource = "SELECT * FROM Tabela where autor = ;" & iAutor
.Refresh
End With
End Sub


Teste e veja se resolveu
[s50]

Por favor não use este tipo de Título
[s55]

USUARIO.EXCLUIDOS 08/07/2005 09:23:39
#92859
deixa eu explicar de novo.

Tenho um form com: 9 option buttons, um grid, um text box e um label para aparecer o autor selecionado no grid maior. No banco de dados tenho 09 campos para quando for cadastrar uma referencia de um livro onde tenha mais de um autor serão cadastrados separados, um em cada campo, ex.: autor, autor1, autor2, autor3, autor4, etc... Quando marcar o option3 e digitar o nome do autor no textbox ele vai mostrar na grid o nome deste autor digitado. O que acontece é que também não está mostrando o nome do autor4 por exemplo na grid. Ele pesquisa no autor4, mas mostra do autor1.

Grato.

Luiz.
LCSD 08/07/2005 09:35:29
#92863
Luiz

Por favor, se você não colocar a sua Rotina nós não poderemos ajudar.

Poste o código de pesquisa aqui. Se você olhar atentamente, o código que postei SUBSTITUI 9 IF's..... END IF's porque usa Array de Componentes (option).

No aguardo
[s55]
FABIO.ALEXANDRE 08/07/2005 10:05:11
#92877
BOM , VER C TE AJUDAR A FAZER ASSIM

C COLOCA NA TAG DE CADA OPTION O NOME DO CAMPO E NO DATAFIELD OTIPO EXEMPLO

ISSO C COLOCA NA PROPRIEDADE DO COMPONENTE Tà

OPTION1.TAG=NOME_CAMPO_DO_BANCO_AUTOR
OPTION1.DATAFIELD=C

OPTION2.TAG=NOME_CAMPO_DO_BANCO_ISDN
OPTION2.DATAFIELD=C

OPTION3.TAG=NOME_CAMPO_DO_BANCO_CODIGO
OPTION3.DATAFIELD=N

NA HORA DA CONSULTA VAI FICAR + OU - ASSIM

PRIVATE SUB COMMAND1_CLICK()

DIM OBJ_OPTION AS OBJECT
DIM RS AS NEW ADODB.RECORDSET
FOR EACH OBJ_OPTION IN CONTROLS
IF UCASE(TYPENAME(OBJ_OPTION))="OPTIONBUTTOM" THEN
IF OBJ_OPTION.VALUE=1 THEN
IF TRIM(OBJ_OPTION.TAG ) <> "" THEN
RS.OPEN "SELECT * FROM TABELA WHERE " & OBJ_OPTION.TAG & "= " & IIF(OBJ_OPTION.DATAFIELD="C","'","") & TEXT1 & IIF(OBJ_OPTION.DATAFIELD="C","'","") ,CONEXAO,CUROS,LOCK
SEUS COMANDO
EXIT FOR
END IF
END IF
END IF
NEXT

BOM ESSA é A IDEIA. C PODE USAR ISSO COM UM ARRAY DE OPTION

ESPERO TER AJUDADO
USUARIO.EXCLUIDOS 08/07/2005 14:09:18
#92951
MEU OPTION NÃO TEM DATAFIELD. E AI.
USUARIO.EXCLUIDOS 08/07/2005 14:21:32
#92956
Luiz não sei se entendi direito, mas não seria mais fácil usar um único campo no DB para guardar o autor, assim a pesquisa ficaria mais simples e prática.

Guardar somente o índice dele no campo, e ao selecionar o optiom button você grava somente o índice dele que corresponderá ao do seu autor.

Por outro lado eu faço diferente, pois como os autores podem ser ampliados ou reduzidos, em número, isso seria uma tabela e o melhor seria carregar em um combo, particularmente um DBCombo não ligado a nenhum Data, pois não uso isso e faço o código na mão mesmo. Inclusive incluí aqui um código para autopreenchimento dos DBCombos que não encontrei na Web, então implementei um.

Assim fica muito mais fácil, usar:
- cboAutor.BoundText = Indice da tabela autor
- cboAutor.Text = Nome do autor

Se isso não for útil, desculpe é só ignorar.

USUARIO.EXCLUIDOS 08/07/2005 14:34:54
#92963
O NEGOCIO é QUE O BANCO DE DADOS INICIAIS JA ESTA COM 520 LIVROS CADASTRADOS E PRONTO. TENHO QUE IR FAZENDO UM PROG A PARTIR DESTES DADOS PRONTOS.

INFELIZMENTE.

GRATO.
FABIO.ALEXANDRE 08/07/2005 19:37:55
#93053
FAZ ASSIM ENTAUM

ISSO C COLOCA NA PROPRIEDADE DO COMPONENTE Tà

OPTION1.TAG=NOME_CAMPO_DO_BANCO_AUTOR;C
OPTION2.TAG=NOME_CAMPO_DO_BANCO_ISDN ;C
OPTION3.TAG=NOME_CAMPO_DO_BANCO_CODIGO;N


NA HORA DA CONSULTA VAI FICAR + OU - ASSIM

PRIVATE SUB COMMAND1_CLICK()

DIM OBJ_OPTION AS OBJECT
DIM RS AS NEW ADODB.RECORDSET
DIM VAR_CCONSULTAT() AS STRING

FOR EACH OBJ_OPTION IN CONTROLS
IF UCASE(TYPENAME(OBJ_OPTION))="OPTIONBUTTOM" THEN
IF OBJ_OPTION.VALUE=1 THEN
IF TRIM(OBJ_OPTION.TAG ) <> "" THEN
VAR_CCONSULTAT=SPLIT(OBJ_OPTION.TAG,";")
RS.OPEN "SELECT * FROM TABELA WHERE " & VAR_CCONSULTAT(0) & "= " & IIF(VAR_CCONSULTAT(1)="C","'","") & TEXT1 & IIF(VAR_CCONSULTAT(1)="C","'","") ,CONEXAO,CUROS,LOCK
SEUS COMANDO
EXIT FOR
END IF
END IF
END IF
NEXT

BOM ESSA é A IDEIA. C PODE USAR ISSO COM UM ARRAY DE OPTION

ESPERO TER AJUDADO
USUARIO.EXCLUIDOS 09/07/2005 08:26:14
#93074
Não funcionou. Deixa eu explicar novamente.

Tenho um form com Um campo textbox onde vou digitar os dados para a consulta. Tenho 09 option buttons, uma grid e um label. Quando digitar o nome do autor na textbox e selecionar qual o autor ele vai buscar todos os autores de acordo com o autor que selecionei (option 7 por exemplo) e vai mostrar no grid os autores encontrados. A label vai mostrar num tamanho maior o autor que selecionar no grid.

Espero ter melhorado o texto.

Grato.

Luiz.
Tópico encerrado , respostas não são mais permitidas