Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Cutter


SuporteTecnico

Pergunta

21 respostass a esta questão

Posts Recomendados

  • 0
é sim. exemplo:

<% Dim primeira_letra

primeira_letra = Left(Right(rs("nome"), InStr(StrReverse(rs("nome")), " ")), 1) %>
ou:
<% Dim primeira_letra
Dim x

x = Split(rs("nome"), " ")
primeira_letra = Left(x(Ubound(x)), 1) %>

Não consegui montar a sentença...

<%

Dim primeira_letra

primeira_letra = Left(Right(rsL("autor"), InStr(StrReverse(rsL("autor")), " ")), 1)

%>

<input name="cutter" type="text" size="15" alt="yes" value="<%response.Write(primeira_letra)%>" readonly="true"/>

Link para o comentário
Compartilhar em outros sites

  • 0
Estou com um novo desafio e preciso de ajuda.

Preciso de uma busca no campo "nome" da tabela, que me retorne somente a primeira letra do último sobrenome.

Exemplo:

Arthur Bragança de Vasconcellos Weintraub => deve me retornar somente a letra "W"

Será que é possível isso?

kara, já passei por problema parecido, e na ocasião, criei uma função.

Para atender seu problema, dei uma modificada nela o que não fugiu muito do que o Kuroi lhe indicou.

Segue abaixo

<%
Function RetornaLetra(strNome)
   arrNome = split( strNome , " " )
   RetornaLetra = left(arrNome( ubound( arrNome ) ) , 1 )
End Function


response.Write RetornaLetra("Arthur Bragança de Vasconcellos Weintraub")
%>

Abraço

Editado por Romero Dias
Link para o comentário
Compartilhar em outros sites

  • 0

Muito bom! Era isso mesmo, só que não para por aí...

Tem algo muito mais complexo que eu gostaria de fazer, se alguém já viu a tabela Cutter sabe do que estou falando, ela possui mais 15000 códigos.

Bem, vamos ver se consigo passar minha idéia...

Na tabela Cutter existe vários dados como estes:

cod cod_autor

422 Weil

423 Wein

424 Weinm

Preciso que o código sql faça uma busca na Tabela Cutter e faça uma "aproximação" do último sobrenome e retorne o código.

Exeplo de nome:

Arthur Bragança de Vasconcellos Weintraub

Como já conseguimos separar a primeira letra do último sobrenome, ficaria assim a visualização:

W423

Conto com a ajuda de vocês!

Muito obrigado pela a ajuda anterior.

Editado por SuporteTecnico
Link para o comentário
Compartilhar em outros sites

  • 0

Kara, você quer que sua sentença SQL retorne a última linha da tabela? Ou seja, a última linha inserida?

Seu banco é SQL Server? Se sim, segue abaixo a sentença.

SELECT TOP 1 cod , cod_autor FROM Cutter ORDER BY cod DESC

Então, no script ASP, você recupera as informações que vieram do banco e aplica a função RetornaLetra() no campo cod_autor

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

O banco de dados é access.

Como disse existem mais de 15000 dados, o script vai ter que varrer toda a tabela em busca da palavra mais próxima.

Me expressei mal, a busca será feita utilizando o último sobrenome.

Exemplo 1:

"Antônio Flávio de Oliveira"

Tabela Cutter

45 Ole

46 Oli

47 Olip

48 Oliv <-- esta aqui pega o numero 48

49 Olivi

51 Olm

52 Olo

53 Oly

54 Om

55 Ome

Exemplo 2:

"Arnaldo Süssekind"

Tabela Cutter

959 Sup

961 Sur

962 Surr

963 Surv

964 Sus <-- esta aqui pega o numero 464

965 Sut

966 Suth

967 Sutt

968 Suz

969 Svi

A sequência vai estar em ordem alfabética, também vou separar em duas colunas (numero, cod_nome) mas a posição não tem como saber.

Editado por SuporteTecnico
Link para o comentário
Compartilhar em outros sites

  • 0

Primeiro obrigado pela força kuroi!

Mas não é isso, a busca não pode retornar mais que 1 dado.

exemplo:

"Antônio Flávio de Oliveira"

1° Antes de fazer a busca temos que separar o último sobrenome, neste caso "Oliveira"

já sabemos que a variável do exemplo é "Oliveira", ótimo.

2° Na base de dados vai estar toda a lista de A a Z, mais ou menos assim:

Numero|Cod_autor

51 Kin

52 King

53 King, J.

54 King, P.

55 Kings

144 Naer

145 Naev

146 Naf

45 Ole

46 Oli

47 Olip

48 Oliv <--- Uhuuu, acharemos ele aqui! Retornaremos o numero 48. Mas como?

49 Olivi

51 Olm

52 Olo

53 Oly

Não tenho nem idéia de como fazer isso...

Link para o comentário
Compartilhar em outros sites

  • 0

tenta tirar o primero %:

Select * From tabela Where 'Oliveira' Like Cutter + '%'

se essa busca retornar mais de um dado é porque não tem o q fazer mesmo. exemplo, se no banco tiver 'Oliv' e 'Olive', como você sabe qual você quer?? se você quer 'Olive' porque tem mais letras, então, pelo asp, percorra o recordset e encontre a palavra maior com o Len(), tenta ai.

Link para o comentário
Compartilhar em outros sites

  • 0
Primeiro obrigado pela força kuroi!

Mas não é isso, a busca não pode retornar mais que 1 dado.

exemplo:

"Antônio Flávio de Oliveira"

1° Antes de fazer a busca temos que separar o último sobrenome, neste caso "Oliveira"

já sabemos que a variável do exemplo é "Oliveira", ótimo.

2° Na base de dados vai estar toda a lista de A a Z, mais ou menos assim:

Numero|Cod_autor

51 Kin

52 King

53 King, J.

54 King, P.

55 Kings

144 Naer

145 Naev

146 Naf

45 Ole

46 Oli

47 Olip

48 Oliv <--- Uhuuu, acharemos ele aqui! Retornaremos o numero 48. Mas como?

49 Olivi

51 Olm

52 Olo

53 Oly

Não tenho nem idéia de como fazer isso...

Kara, mas o problema é que não existe um padrão de dados nessa coluna Cod_autor, porq, Oliv pode ser Olivi também?

Até agora, pelo que entendi seria: você quer encontrar o Número do Autor procurando pela sua asisnatura? que estaria armazenada em Cod_autor?

Fiz uma alteração na função permitindo passar por parametro a quantidade de caracteres que você deseja exibir para o último nome.

<%
Function RetornaLetra(strNome,caracteres)
   arrNome = split( strNome , " " )
   RetornaLetra = left(arrNome( ubound( arrNome ) ) , caracteres )
End Function


'response.Write RetornaLetra("Arthur Bragança de Vasconcellos Weintraub",4)
%>
"SELECT cod FROM Cutter WHERE Cod_autor = ' " & RetornaLetra("Antônio Flávio de Oliveira",4)  &" ' ORDER BY"

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Kara, mas o problema é que não existe um padrão de dados nessa coluna Cod_autor, porq, Oliv pode ser Olivi também?

Não, a lógica é mais complexa:

É como se fosse um filtro...

O ---> na busca achou ---> O

l ---> na busca achou ---> l

i ---> na busca achou ---> i

v ---> na busca achou ---> v

e ---> na busca achou ---> não achou nada porque não existe, o código foi concluido, pois não tem a letra "e" no cód "Oliv".

i

r

a

Até agora, pelo que entendi seria: você quer encontrar o Número do Autor procurando pela sua asisnatura? que estaria armazenada em Cod_autor?

Sim quando acharmos a proximidade entre "Oliveira" e "Oliv", só tem um código para retornar que vai estar no campo numero (nesse caso é o 48)

Também não tem uma exatidão nos caracteres na coluna cod_autor tem nomes bem distintos, tipo:

133 Abbott, M.

134 Abbott, S.

111 Ba

25 Edw

26 Edwards

Sei que é muito complexo, mas ainda não desisti.

Link para o comentário
Compartilhar em outros sites

  • 0

na descricao do tópico ta escrito ASP + SQL, então achei q você usava banco sql, o codigo q passei serviria pro sql.

vi agora q seu banco é access, então o codigo convertido pra sintaxe do access seria esse:

Select * From tabela Where 'Oliveira' Like Cutter & '*'

EDITADO:

e quanto aos nomes "Abbott, M." por exemplo, esse M deve ser o primero nome da pessoa. então acho q você deveria pesquisar o nome nesse formato. exemplo, se o cara chama "Antônio Flávio de Oliveira", você procuraria por "Oliveira, A.".

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

  • 0
na descricao do tópico ta escrito ASP + SQL, então achei q você usava banco sql, o codigo q passei serviria pro sql.

vi agora q seu banco é access, então o codigo convertido pra sintaxe do access seria esse:

Select * From tabela Where 'Oliveira' Like Cutter & '*'

EDITADO:

e quanto aos nomes "Abbott, M." por exemplo, esse M deve ser o primero nome da pessoa. então acho q você deveria pesquisar o nome nesse formato. exemplo, se o cara chama "Antônio Flávio de Oliveira", você procuraria por "Oliveira, A.".

Ok, vou tentar. Desculpe pelo título do tópico, pois até então não sabia qual a melhor forma de fazer essa busca, estava pensando até em delphi...

Obrigado pela força, galerinha desse fórum responde mesmo! Gostei daqui.

Link para o comentário
Compartilhar em outros sites

  • 0

ainda, insistindo naquele codigo q passei...

da uma olhada aqui, fiz um banco access com uma tabela com esses mesmos dados q você passou:

chi.rar

por exemplo, execute esse codigo como consulta:

Select * From tabela Where 'Oliveira' Like Cod_Autor & '*'
ou:
Select * From tabela Where 'Oliveira, A.' Like Cod_Autor & '*'
veja q o retorno vai ser "oli" e "oliv". isso não tem mesmo como saber. ou você pega o primeiro, ou você da um jeito de tratar no asp. agora, esses nomes com uma letra no final. exemplo, "King, J." ou "King, P.", resolve se você passar essa ultima letra junto na query. exemplo:
Select * From tabela Where 'King, J.' Like Cod_Autor & '*'

por isso sugeri q você juntasse o sobrenome com a primera letra do primero nome.

testa ai nesse banco q fiz. se você não sabe como executar consulta no access, faz o seguinte. com o banco aberto, clica no painel Objetos a esquerda, onde esta escrito Consultas. então clique em Criar consulta no modo Design. vai aparecer uma janela com o titulo "Mostrar tabela". fecha essa janela porque não vamos usar. la em cima, embaxo da opcao Arquivo do menu, o primero botao q tiver la, ao lado do disquete, tem uma flechinha ao lado. clica na flechinha e seleciona Modo SQL. vai aparecer o editor da query. então, la dentro copie um desses codigos q eu passei e clique no botao da exclamacao acima e veja o retorno q ele vai trazer.

então testa essas querys q eu passei q você vai ver o retorno e você vai ver q ele ta selecionando os dados.

Link para o comentário
Compartilhar em outros sites

  • 0
ainda, insistindo naquele codigo q passei...

da uma olhada aqui, fiz um banco access com uma tabela com esses mesmos dados q você passou:

chi.rar

por exemplo, execute esse codigo como consulta:

Select * From tabela Where 'Oliveira' Like Cod_Autor & '*'
ou:
Select * From tabela Where 'Oliveira, A.' Like Cod_Autor & '*'
veja q o retorno vai ser "oli" e "oliv". isso não tem mesmo como saber. ou você pega o primeiro, ou você da um jeito de tratar no asp. agora, esses nomes com uma letra no final. exemplo, "King, J." ou "King, P.", resolve se você passar essa ultima letra junto na query. exemplo:
Select * From tabela Where 'King, J.' Like Cod_Autor & '*'

por isso sugeri q você juntasse o sobrenome com a primera letra do primero nome.

testa ai nesse banco q fiz. se você não sabe como executar consulta no access, faz o seguinte. com o banco aberto, clica no painel Objetos a esquerda, onde esta escrito Consultas. então clique em Criar consulta no modo Design. vai aparecer uma janela com o titulo "Mostrar tabela". fecha essa janela porque não vamos usar. la em cima, embaxo da opcao Arquivo do menu, o primero botao q tiver la, ao lado do disquete, tem uma flechinha ao lado. clica na flechinha e seleciona Modo SQL. vai aparecer o editor da query. então, la dentro copie um desses codigos q eu passei e clique no botao da exclamacao acima e veja o retorno q ele vai trazer.

então testa essas querys q eu passei q você vai ver o retorno e você vai ver q ele ta selecionando os dados.

Acho que não tem jeito mesmo, vou tentar mostrar para o usuário o mínimo de opções possíveis, pois não posso alterar os dados da Tabela Cutter (é um padrão universal)

http://www.davignon.qc.ca/cutter1.html

Vou tentar fazer o que o Romero sugeriu...

Link para o comentário
Compartilhar em outros sites

  • 0

então... na verdade é o seguinte... ou tu testa o ultimo nome a cada letra buscando uma aproximação, ou usa like e deixa a lista do q parece para ser selecionada...

o
ol
oli
oliv ---> se acho correspondente aqui para e retorna este valor.
olive

Link para o comentário
Compartilhar em outros sites

  • 0
então... na verdade é o seguinte... ou tu testa o ultimo nome a cada letra buscando uma aproximação, ou usa like e deixa a lista do q parece para ser selecionada...

o
ol
oli
oliv ---> se acho correspondente aqui para e retorna este valor.
olive
Resolvido!
<%
'-----------------------------------------------------------
Function RetornaSemLetraFinal(arrNome)
RetornaSemLetraFinal = left(arrNome,(len(arrNome)-1))
End Function
'-----------------------------------------------------------
Function RetornaSemLetraFinalPV(arrNome)
RetornaSemLetraFinalPV = left(arrNome,(len(arrNome)-4))
End Function
'-----------------------------------------------------------
SQL="SELECT CODIGOCUTTER FROM tbcutter WHERE NOMECUTTER = '" & pronto & "'"
SET RS=CONEXAO.EXECUTE(SQL)
if rs.eof then
    pronto = RetornaSemLetraFinalPV(pronto)
    Do While RS.eof
        SQL="SELECT CODIGOCUTTER, nomecutter FROM tbcutter WHERE NOMECUTTER = '" & pronto & "'"
        SET RS=CONEXAO.EXECUTE(SQL)
        pronto = RetornaSemLetraFinal(pronto)
    Loop
    if not RS.eof then 
        cod_autor=RS("codigocutter")
    End If
Else cod_autor=RS("codigocutter")
End If
%>

Obrigado a todos que opinaram...

\o/

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...