Ir para conteúdo

POWERED BY:

Arquivado

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

ricardo coelho designer

Resposta table não existe

Recommended Posts

Gente desculpe solicitar novamente, mas já tentei de tudo e não consigo entender o que posso fazer, para que apareça a resposta que a tabela não existe na base de dados.Segue abaixo o código solicito a ajuda de vcs. Agradeço a todos.

<%if request.QueryString ("nomes") = "" Thenresponse.write "Selecione a o bd para visualizar as tabelas"elseSet Cn = CreateObject("ADODB.Connection")ConnString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("bancodedados/"&request.QueryString ("nomes")&"")Cn.Open ConnStringSet cat = CreateObject("ADOX.Catalog")cat.ActiveConnection = cnfor i = 0 to cat.tables.count - 1if lcase(cat.tables(i).type) = "table" Thenset rs = server.createobject("adodb.recordset")rs.open "select * from " & cat.tables(i).name, cn, 1,3,1response.write "<br>" & "Tabela: " & cat.tables(i).name & "<br>"do until rs.eoffor x = 0 to rs.fields.count - 1response.write "Campo: " & rs.fields(x).name & " / Valor: " & rs.fields(x).value & "<br>"nextrs.movenextloopend ifnextrs.closeCn.CloseSet rs = NothingSet Cn = Nothingend if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da forma que está ele vai mostrar todas as tabelas, qual tabela você está tentando checar se existe???

Pelo que vi no seu código você só pega o nome do banco de dados e varre a coleção de tabelas dele, se for do tipo table você mostra e varre a tabela, sem um parâmetro de comparação não tem como checar se existe ou não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da forma que está ele vai mostrar todas as tabelas, qual tabela você está tentando checar se existe???

Pelo que vi no seu código você só pega o nome do banco de dados e varre a coleção de tabelas dele, se for do tipo table você mostra e varre a tabela, sem um parâmetro de comparação não tem como checar se existe ou não.

Em primeiro lugar obrigado por me ajudar.

 

Nesse código ele recebe o nome da Base de dados e me retorna o conteúdo, mas acontece que quando uma base não tem tabela ele da um erro

(Erro de tempo de execução do Microsoft VBScript (0x800A01A8)

Objeto necessário: ''

/accessadmin/tabelas.asp, line 80)

Mas ao invés desse erro eu preciso que ele me responda que não existe uma table nessa base.

Ai que tá o problema não estou conseguindo entender como faço isso.

Bom é isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte, coloque estas linhas na seguinte posição, selecione um banco que não tenha tabelas e veja o resultado

...Set cat = CreateObject("ADOX.Catalog")cat.ActiveConnection = cnResponse.Write cat.Tables.CountResponse.Endfor i = 0 to cat.tables.count - 1if lcase(cat.tables(i).type) = "table" Then...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte, coloque estas linhas na seguinte posição, selecione um banco que não tenha tabelas e veja o resultado

...Set cat = CreateObject("ADOX.Catalog")cat.ActiveConnection = cnResponse.Write cat.Tables.CountResponse.Endfor i = 0 to cat.tables.count - 1if lcase(cat.tables(i).type) = "table" Then...
Coloquei e aparece um numero 6 , e quando seleciona outra tabela vai aparecendo outros numeros.Não entendi ainda????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte, coloque estas linhas na seguinte posição, selecione um banco que não tenha tabelas e veja o resultado

...Set cat = CreateObject("ADOX.Catalog")cat.ActiveConnection = cnResponse.Write cat.Tables.CountResponse.Endfor i = 0 to cat.tables.count - 1if lcase(cat.tables(i).type) = "table" Then...
Coloquei e aparece um numero 6 , e quando seleciona outra tabela vai aparecendo outros numeros.Não entendi ainda????

Seguinte, coloque estas linhas na seguinte posição, selecione um banco que não tenha tabelas e veja o resultado

...Set cat = CreateObject("ADOX.Catalog")cat.ActiveConnection = cnResponse.Write cat.Tables.CountResponse.Endfor i = 0 to cat.tables.count - 1if lcase(cat.tables(i).type) = "table" Then...
Coloquei e aparece um numero 6 , e quando seleciona outra tabela vai aparecendo outros numeros.Não entendi ainda????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente ainda não consegui chegar em nenhum resultado que me ajude a dizer simplesmente que a tabela não existe.Tentei o codigo abaixo e não consegui deo erroErro de tempo de execução do Microsoft VBScript (0x800A000D)Tipos incompatíveis/accessadmin/tabelas.asp, line 67.Estou quebrando a cabeça para tentar entender mas não consegui.Agradeço desde já.

<%if request.QueryString ("nomes") = "" Thenresponse.write "Selecione a o bd para visualizar as tabelas"elseSet Cn = CreateObject("ADODB.Connection")ConnString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("bancodedados/"&request.QueryString ("nomes")&"")Cn.Open ConnStringSet cat = CreateObject("ADOX.Catalog")cat.ActiveConnection = cnfor i = 0 to cat.tables.count - 1if cat.tables(i) = "" thenresponse.write "não existe tabela nessa base de dados"end ifif lcase(cat.tables(i).type) = "table" Thenset rs = server.createobject("adodb.recordset")rs.open "select * from " & cat.tables(i).name, cn, 1,3,1response.write "<br>" & "Tabela: " & cat.tables(i).name & "<br>"do until rs.eoffor x = 0 to rs.fields.count - 1response.write "Campo: " & rs.fields(x).name & " / Valor: " & rs.fields(x).value & "<br>"nextrs.movenextloopend ifnextrs.closeCn.CloseSet rs = NothingSet Cn = Nothingend if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta contar quantos itens do tipo "Table" existem no banco, se não existir nenhum, você mostra a mensagem que não existem tabelas, senão, você percorre a coleção de tabelas normalmente.

Olha até encontrei, o erro não aparece mais, mas não consegui ver o texto que não tem table. Da uma olhada no codigo abaixo.
cat.ActiveConnection = cnOn Error Resume Nextrs.open "select * from " & cat.tables(i).name, cn, 1,3,1if err.number < 0 thenresponse.write "não existe tabela"end iffor i = 0 to cat.tables.count - 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas assim não vai dar erro, tente assim:

<%if request.QueryString ("nomes") = "" Then   response.write "Selecione a o bd para visualizar as tabelas"elseSet Cn = CreateObject("ADODB.Connection")ConnString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("bancodedados/"&request.QueryString ("nomes")&"")Cn.Open ConnStringSet cat = CreateObject("ADOX.Catalog")cat.ActiveConnection = cntot_tables = 0for i = 0 to cat.tables.count - 1   if lcase(cat.tables(i).type) = "table" then	  tot_tables = tot_tables + 1   end ifnextif tot_tables = 0 then   response.write "não existe tabela nessa base de dados"else   for i = 0 to cat.tables.count - 1	  if lcase(cat.tables(i).type) = "table" Then		 set rs = server.createobject("adodb.recordset")		 rs.open "select * from " & cat.tables(i).name, cn, 1,3,1		 response.write "<br>" & "Tabela: " & cat.tables(i).name & "<br>"		 do until rs.eof			for x = 0 to rs.fields.count - 1			  response.write "Campo: " & rs.fields(x).name & " / Valor: " & rs.fields(x).value & "<br>"			next			rs.movenext		 loop	  end if   nextend ifrs.closeCn.CloseSet rs = NothingSet Cn = Nothingend if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz da forma que colocou e deu o seguinte erro:Erro de tempo de execução do Microsoft VBScript (0x800A01A8)Objeto necessário: ''/accessadmin/tabelas.asp, line 92que é a linha que tem esse código.rs.closeOlha acho que isso vai alem da minha compreensão. rsrsr.

Mas assim não vai dar erro, tente assim:

<%if request.QueryString ("nomes") = "" Then   response.write "Selecione a o bd para visualizar as tabelas"elseSet Cn = CreateObject("ADODB.Connection")ConnString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("bancodedados/"&request.QueryString ("nomes")&"")Cn.Open ConnStringSet cat = CreateObject("ADOX.Catalog")cat.ActiveConnection = cntot_tables = 0for i = 0 to cat.tables.count - 1   if lcase(cat.tables(i).type) = "table" then	  tot_tables = tot_tables + 1   end ifnextif tot_tables = 0 then   response.write "não existe tabela nessa base de dados"else   for i = 0 to cat.tables.count - 1	  if lcase(cat.tables(i).type) = "table" Then		 set rs = server.createobject("adodb.recordset")		 rs.open "select * from " & cat.tables(i).name, cn, 1,3,1		 response.write "<br>" & "Tabela: " & cat.tables(i).name & "<br>"		 do until rs.eof			for x = 0 to rs.fields.count - 1			  response.write "Campo: " & rs.fields(x).name & " / Valor: " & rs.fields(x).value & "<br>"			next			rs.movenext		 loop	  end if   nextend ifrs.closeCn.CloseSet rs = NothingSet Cn = Nothingend if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso resolve:

<%if request.QueryString ("nomes") = "" Then   response.write "Selecione a o bd para visualizar as tabelas"elseSet Cn = CreateObject("ADODB.Connection")ConnString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("bancodedados/"&request.QueryString ("nomes")&"")Cn.Open ConnStringSet cat = CreateObject("ADOX.Catalog")cat.ActiveConnection = cnSet rs = server.createobject("adodb.recordset")tot_tables = 0for i = 0 to cat.tables.count - 1   if lcase(cat.tables(i).type) = "table" then	  tot_tables = tot_tables + 1   end ifnextif tot_tables = 0 then   response.write "não existe tabela nessa base de dados"else   for i = 0 to cat.tables.count - 1	  if lcase(cat.tables(i).type) = "table" Then		 if rs.state = 1 then rs.close end if		 rs.open "select * from " & cat.tables(i).name, cn, 1,3,1		 response.write "<br>" & "Tabela: " & cat.tables(i).name & "<br>"		 do until rs.eof			for x = 0 to rs.fields.count - 1			  response.write "Campo: " & rs.fields(x).name & " / Valor: " & rs.fields(x).value & "<br>"			next			rs.movenext		 loop	  end if   nextend ifif rs.state = 1 then rs.close end ifCn.CloseSet rs = NothingSet Cn = Nothingend if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu o seguinte erro:Tipo de erro:Erro de compilação do Microsoft VBScript (0x800A03EA)Erro de sintaxe/accessadmin/tabelas.asp, line 79, column 30if rs.state = 1 then rs.close end if

Isso resolve:

<%if request.QueryString ("nomes") = "" Then   response.write "Selecione a o bd para visualizar as tabelas"elseSet Cn = CreateObject("ADODB.Connection")ConnString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("bancodedados/"&request.QueryString ("nomes")&"")Cn.Open ConnStringSet cat = CreateObject("ADOX.Catalog")cat.ActiveConnection = cnSet rs = server.createobject("adodb.recordset")tot_tables = 0for i = 0 to cat.tables.count - 1   if lcase(cat.tables(i).type) = "table" then	  tot_tables = tot_tables + 1   end ifnextif tot_tables = 0 then   response.write "não existe tabela nessa base de dados"else   for i = 0 to cat.tables.count - 1	  if lcase(cat.tables(i).type) = "table" Then		 if rs.state = 1 then rs.close end if		 rs.open "select * from " & cat.tables(i).name, cn, 1,3,1		 response.write "<br>" & "Tabela: " & cat.tables(i).name & "<br>"		 do until rs.eof			for x = 0 to rs.fields.count - 1			  response.write "Campo: " & rs.fields(x).name & " / Valor: " & rs.fields(x).value & "<br>"			next			rs.movenext		 loop	  end if   nextend ifif rs.state = 1 then rs.close end ifCn.CloseSet rs = NothingSet Cn = Nothingend if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aleluia...

 

Valeu cara você me ajudou muito, valeu pela paciência nada pior que explicar para um iniciante... sei como é...

 

Muito obrigado por tudo...

 

 

Tira o End If, destas linhas:

if rs.state = 1 then rs.close end if
Assim

if rs.state = 1 then rs.close

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.