Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Juliano Gomes

Selelecionar o maior código da tabela

Recommended Posts

pessoal em delphi para selecionar o maior codigo - do campo auto incremento código de uma tabela - eu escrevo assim:

 

strSql = 'SELECT MAX(CODIGO) FROM TABELA'

no mysql como isso é possivel???

 

abraços!

 

só pra concertar... em delphi nao.. em firbird...

 

a duvida continua...

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, é exatamente a mesma SQL.Só recuperar depois como o Field zero do objeto Recordset. Ou se prefeirir use:strSql = 'SELECT MAX(CODIGO) AS maiorcodigo FROM TABELA'e recupere com objrs("maiorcodigo")

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao, esse seu exemplo deu certinho quando eu quero recuperar apenas a variavel "maiorcodigo" da tabela, porem o que eu realmente preciso é:

 

selecione todos os registros do maior codigo da tabela tal

 

por que depois eu preciso recuperar todos os campos no meu formulario em asp....

 

 

 

olha o que eu fiz e o erro gerado pra voce poder entender minha duvida:

 

<!--#include file="coneccao.asp" --><%Dim strSql, oRS					 	strSql = "SELECT MAX(CODIGO) AS MAIORCODIGO FROM veiculos"Set oRS = Server.CreateObject("ADODB.Recordset")oRS.Open strSQL, oConn, 2, 3		%><td colspan="2" class="white"><div align="center"><span class="style3"><%=oRS("NOME")%> </span></div></td>
ERRO GERADO:

 

Tipo de erro:ADODB.Recordset (0x800A0CC1)O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado./automoveis/Default.asp, line 143
Linha 143 = <td colspan="2" class="white"><div align="center"><span class="style3"><%=oRS("NOME")%> </span></div></td>

 

 

Obs: se eu trocar <%=oRS("NOME")%> por <%=oRS("MAIORCODIGO")%> ta tudo certo, porem eu preciso que a sql selecione todos os registros do maior codigo da tabela para eu poder ir jogando eles em sequencia no formulario...

 

ex:

<td colspan="2" class="white"><div align="center"><span class="style3"><%=oRS("NOME")%> </span></div></td><td colspan="2" class="white"><div align="center"><span class="style3"><%=oRS("MARCA")%> </span></div></td><td colspan="2" class="white"><div align="center"><span class="style3"><%=oRS("MODELO")%> </span></div></td>

se você puder me ajudar agradeço e muito...

 

 

abração!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm

 

Talvez ??

 

SELECT * FROM veiculos T1 WHERE `CODIGO` = (SELECT MAX(`CODIGO`) FROM veiculos)

Diga se deu certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao deu certo ainda brother...

ja tentei das seguintes formas:

 

SELECT * FROM veiculos T1 WHERE `CODIGO` = (SELECT MAX(CODIGO) AS MAIORCODIGO FROM veiculos)

SELECT * FROM veiculos T1 WHERE CODIGO = (SELECT MAX(CODIGO) AS MAIORCODIGO FROM veiculos)

SELECT * FROM veiculos  WHERE `CODIGO` = (SELECT MAX(CODIGO) AS MAIORCODIGO FROM veiculos)

SELECT * FROM veiculos WHERE CODIGO = (SELECT MAX(CODIGO) AS MAIORCODIGO FROM veiculos)

SELECT * FROM veiculos  WHERE CODIGO = (SELECT MAX(CODIGO) AS MAIORCODIGO)

 

 

nada disso deu certo...

 

 

erro:

 

Tipo de erro:

ADODB.Recordset (0x800A0CC1)

O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem certeza de que está escrevendo os nomes dos campos exatamente como estão na tabela veiculos?Tente executar:SELECT TOP 1 * FROM veiculose ver se da o mesmo erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ainda nao deu....

 

a estrutura da minha tabela é a seguinte:

 

CREATE TABLE VEICULOS(  CODIGO			INTEGER NOT NULL,  TIPO			  INTEGER NOT NULL,    MARCA			  VARCHAR(50) NOT NULL,  MODELO			  VARCHAR(50) NOT NULL,  COR			VARCHAR(50) NOT NULL,  NOME			  VARCHAR(50) NOT NULL,  ANO				   VARCHAR(4) NOT NULL,  VALOR			DECIMAL(15, 2) NOT NULL,  OPCIONAIS		 	VARCHAR(300) NOT NULL,  FOTO				  VARCHAR(150),  UNIDADE_VENDA		VARCHAR(50) NOT NULL,  CONSTRAINT PK_VEICULOS PRIMARY KEY (CODIGO));

Compartilhar este post


Link para o post
Compartilhar em outros sites

É muito estranho.A query, com certeza, é essa:SELECT * FROM veiculos WHERE CODIGO = (SELECT MAX(CODIGO) FROM veiculos)Eu testei aqui e funcionou certinho.Deve haver alguma coisa mais no seu código que está atrapalhando a recuperação dos campos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tah, vou postar o meu código, mas é o mesmo que ja postei acima... eu tambem to meio confuso pq teoricamente tinha que funcionar...

 

<td width="18"> <!--#include file="coneccao.asp" --><%Dim strSql, oRS					 	strSql = "SELECT MAX(CODIGO) AS MAIORCODIGO FROM veiculos"Set oRS = Server.CreateObject("ADODB.Recordset")oRS.Open strSQL, oConn, 2, 3			%>			  			  </td><td colspan="2" class="white"><div align="center"><span class="style3"><%=oRS("MAIORCODIGO")%> </span></div></td></tr>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tentou selecionar todos os regitros para ver no que dá?

Tipo:

<%Dim strSql, oRS						 strSql = "SELECT * FROM veiculos"Set oRS = Server.CreateObject("ADODB.Recordset")oRS.Open strSQL, oConn, 2, 3			%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema não poderia estar em sua conexão?outra duvida, porque jogar em um array? nunca precisei usar isso e funciona perfeitamente!Tente tirar do array! De uma conferida com conexão. Sei la =x

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigos fiz o teste do 'select * from tabela ' pra ver o que era retornado...

 

<%' essa é a minha conexao com o banco....Set oConn = Server.CreateObject("ADODB.Connection")oConn.Open("DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=automoveis; UID=root;PASSWORD=masterkey; OPTION=3" )%><%Dim strSql, oRS					 	strSql = "SELECT * FROM veiculos"Set oRS = Server.CreateObject("ADODB.Recordset")oRS.Open strSQL, oConn, 2, 3					%><%If oRS.EOF ThenResponse.Write "<div align='center'><font color='#FF0000'>Nenhum termo encontrado.</font></div>"Else %>			  <%Do While Not oRS.EOF%>			  <hr>			  <div align="justify">				<p><span class="style33">Marca..:</span> <b><%=oRS("MARCA")%></b><br>					<span class="style33">Modelo:</span> <%=oRS("MODELO")%><br>					<span class="style33">Cor.......:</span> <%=oRS("COR")%><br>					<span class="style33">Nome......:</span> <%=oRS("NOME")%><br>					<span class="style33">Ano.....:</span> <%=oRS("ANO")%><br>					<span class="style33">Preço:</span> <font color="#663300"> <%=oRS("VALOR")%><br>					  </font>					<%oRS.MoveNextLoopEnd IfoRS.CloseSet oRS = NothingoConn.CloseSet oConn = Nothing%>

 

O retorno foi: "Nenhum termo encontrado."

 

a minha tabela automoveis no mysql tem 2 registros... ele deveria me retornar os mesmos...

esse código eu utilizei ja em uma pagina que eu desenvolvi pra fazer pesquisa no banco e lá funciona certo... nao to conseguindo entende o por que de nao funcionar nesse caso...

 

ja to ficando maluco http://forum.imasters.com.br/public/style_emoticons/default/yay.gif uhauhuah

 

e agora???

 

abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%' essa é a minha conexao com o banco....Set oConn = Server.CreateObject("ADODB.Connection")oConn.Open("DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=automoveis; UID=root;PASSWORD=masterkey; OPTION=3" )%><%Dim strSql, oRS						 Set oRS = Server.CreateObject("ADODB.Recordset")	strSql = "SELECT * FROM veiculos"set oRS = oConn.execute(strSql)					%><%If oRS.EOF ThenResponse.Write "<div align='center'><font color='#FF0000'>Nenhum termo encontrado.</font></div>"Else %>			  <%Do While Not oRS.EOF%>			  <hr>			  <div align="justify">				<p><span class="style33">Marca..:</span> <b><%=oRS("MARCA")%></b><br>					<span class="style33">Modelo:</span> <%=oRS("MODELO")%><br>					<span class="style33">Cor.......:</span> <%=oRS("COR")%><br>					<span class="style33">Nome......:</span> <%=oRS("NOME")%><br>					<span class="style33">Ano.....:</span> <%=oRS("ANO")%><br>					<span class="style33">Preço:</span> <font color="#663300"> <%=oRS("VALOR")%><br>					  </font>					<%oRS.MoveNextLoopEnd IfoRS.CloseSet oRS = NothingoConn.CloseSet oConn = Nothing%>

 

Tenta assim... e posta dizendo se funcionou... falow abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim... e posta dizendo se funcionou... falow abraços

Mesmo retorno:"Nenhum termo encontrado."

 

Abre seu MySQl e veja se tem registros gravados nesta Tabela!

a minha tabela automoveis no mysql tem 2 registros... ele deveria me retornar os mesmos...

 

da uma olhadinha:

Imagem Postada

 

 

 

a imagem está aqui: http://xokleng.up.md/downloads/registros.jpg

 

bahhhh servidor de bosta....

 

aqui entao:

 

http://www.colegioestadual.com.br/japa/imagens/registros.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo. mais o erro que está acusando é que na Sua Tabela não a registros gravados nos campos!Faça o seguinte, imprime sua SQL na tela e veja oque retorna.Response.Write(sql)Response.End()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo. mais o erro que está acusando é que na Sua Tabela não a registros gravados nos campos!Faça o seguinte, imprime sua SQL na tela e veja oque retorna.Response.Write(sql)Response.End()

Response.Write(sql) ou Response.Write(strSql) ???Response.Write(sql) = nadaResponse.Write(strSql) = SELECT * FROM veiculos

Compartilhar este post


Link para o post
Compartilhar em outros sites

para ver se ta retornando faça assim.strSql = "SELECT * FROM veiculos WHERE codigo=1"if not oRS.eof thenResponse.Write(oRS("marca"))end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo, ja havia testado isso antes pra ver se retornava algo, mas testei agora denovo pra me certificar, e nao acusou nenhum erro, mas tambem nao imprimiu nada na tela... a tela ficou em branco...que tranquera hein...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é estranho cara!da uma olha nas suas permissões e veja se você tem permissão para Leitura! eu acho que não é isso mais naum custa nada dar um olhadinha!E outra coisa. testa sua SQL dentro no MySQL e ve se retorna alguma coisa dentro no banco mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.