Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Pessoa!
Gostaria de uma ajudinha
Tenho duas tabelas a imoveis e a fotos
Na tabela imoveis tenho a coluna referencia onde esta referencia terá várias fotos (fotos que ficará na tabela fotos), porém fiz um insert para a tabela imoveis e outro para tabela imóveis, porém quando é para inserir está inserindo somente 1 registro na tabela fotos, alguém pode me ajudar?
if rsCadastro.eof then
sSQL = "INSERT INTO IMOVEIS (REFERENCIA,) VALUES('"&REFERENCIA.text&"') "
objConnection.execute sSQL
sSQL2 = "INSERT INTO FOTOS (NROFOTO, ARQUIVO, REFERENCIA) VALUES('2','2','"&REFERENCIA.text&"')"
objConnection.execute sSQL2
else
atualiza = "UPDATE imoveis SET CADASTRO = '"&CADASTRO.text&"' Where REFERENCIA='"&REFERENCIA.text&"' "
objConnection.execute atualiza
atualiza1 = "UPDATE FOTOS SET ARQUIVO = '10.jpg' where REFERENCIA='"&REFERENCIA.text&"' "
objConnection.execute atualiza1
end if
Criei o loop porém ele está fazendo somente o primeiro insert o nº onde deveria armazenar as fotos ele não está mais gravando.
olha este exemplo:
if qtd_produtos = ""
produtos= Split(Request.Form("produtos"), ",")
For i = 1 To Request.Form("produtos").Count
Response.write request.form("produtos")(i)&"<BR>" & request.form("qtd_produtos")(i)&"<BR>"
SQL = "INSERT INTO lista (lista_prodID,lista_quant) Values ('"&request.form("produtos")(i)&"','"&request.form("qtd_produtos")(i)&"')"Acho que não expliquei direito:
Tenho um arquivo xml nele contém uma tag que se repete que é a tag imagem, preciso pegar essa tag do Nod list e armazenar no banco de dados em mysql da tabela fotos. Consegui armazenar somente uma de cada referencia, sendo que tenho referencias que possuem mais de 1 imagem.
Segue código: O Insert para a tabela imóveis ok.
Insert da tabela fotos dá erro, ou quando não apresenta erro grava apenas uma foto na tabela FOTOS sendo que possui 2 a mais fotos.
<%
Set objConnection = Server.CreateObject("ADODB.Connection")
objConnection.Open("DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;PORT=3306;DATABASE=;USER=root;PASSWORD=;OPTION=3;")
Set objXMLDoc = Server.CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.load("C:\inetpub\wwwroot\teste\doc_xml.xml")
Set Root = objXMLDoc.documentElement
Set NodeList = Root.getElementsByTagName("Imovel")
For iLoop = 0 to NodeList.length - 1
vREFERENCIA = NodeList.item(iLoop).selectSingleNode("REFERENCIA").text
vCADASTRO = NodeList.item(iLoop).selectSingleNode("CADASTRO").text
vurlimagem = NodeList.item(iLoop).selectSingleNode("urlimagem").text
'
' Ler na mY sQL
'
Set rsCadastro = Server.CreateObject("AdoDB.Recordset")
SelCadastro = "SELECT * FROM imoveis where REFERENCIA= '"&vREFERENCIA&"' "
rsCadastro.Open SelCadastro,objConnection
'response.Write(SelCadastro & "<br> <br>")
if rsCadastro.eof then
'
' Insere na Tabela Imóveis
'
sSQL = "INSERT into imoveis (REFERENCIA, CADASTRO) VALUES('"&vREFERENCIA&"', '"&vCADASTRO&"') "
objConnection.execute sSQL
'
' Insere na tabela Fotos
'
InsereFotos = "INSERT into fotos (NROFOTO, ARQUIVO, REFERENCIA) VALUES('"&vurlimagem&"','"&vurlimagem&"','"&REFERENCIA.text&"') "
objConnection.execute InsereFotos
else
Set rsFotos = Server.CreateObject("AdoDB.Recordset")
SelFotos = "SELECT * FROM fotos where REFERENCIA= '"&vREFERENCIA&"' "
rsFotos.Open SelFotos,objConnection
response.Write(SelFotos)
do while not rsFotos.eof
response.write(vurlimagem)
response.write("<br>")
rsFotos.movenext
loop
'
' Atualiza
'
sSQL1 = "UPDATE imoveis SET CADASTRO = '"&vCADASTRO&"' where REFERENCIA='"&vREFERENCIA&"' "
objConnection.execute sSQL1
sSQL2 = "UPDATE fotos SET ARQUIVO = '"&vurlimagem&"' where REFERENCIA='"&vREFERENCIA&"' "
objConnection.execute sSQL2
end if
'
' Executa SQL
'
Set rsCadastro = Server.CreateObject("AdoDB.Recordset")
rsCadastro.Open SelCadastro,objConnection
Next
%>
qual o erro gerado
Não apresenta erro, apenas não grava todas as fotos da refencia na tabela fotos, grava apenas a primeira as demais ele pula para a próxima
vc tem que colocar a variavel do for (aquela que irá armazenar a quantidade) na sua SQL, tipo o exemplo que postei.
Será q vc poderia me ajudar? Não tenho muita experiência me perco usando o for :(
Agradeço desdse já
segue como modelo aquele exemplo que postei de for
Olá,
Fiz o código porém está apresentando mensagem de erro:
ADODB.Recordset erro '800a0cc1'
O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.
vurlimagem = Split(rsCadastro("ARQUIVO"), ",")
Segue código:
Set rsCadastro = Server.CreateObject("AdoDB.Recordset")
SelCadastro = "SELECT * FROM imoveis where REFERENCIA= '"&vREFERENCIA&"' "
rsCadastro.Open SelCadastro,objConnection
if rsCadastro.eof then
sSQL = "INSERT INTO IMOVEIS (REFERENCIA, CD_PROPRIETARIO, CADASTRO) VALUES('"&vREFERENCIA&"', '"&vCD_PROPRIETARIO&"', '"&vCADASTRO&"') "elseif qtd_fotos = "" then
vurlimagem = Split(rsCadastro("ARQUIVO"), ",")
For i = 1 To rsCadastro("ARQUIVO").Count
sSQL2 = "INSERT INTO FOTOS (NROFOTO, ARQUIVO, REFERENCIA) VALUES('"&vREFERENCIA&"','"&qtd_fotos&"','"&vREFERENCIA&"')"
objConnection.execute sSQL2
next
end if
Se alguém puder ajudar.
Obrigada!
tem que passar a variável do for na cláusula SQL:
SQL = "INSERT INTO lista (lista_prodID,lista_quant) Values ('"&request.form("produtos")(i)&"','"&request.form("qtd_produtos")(i)&"')"
Não está apresentando erro, porém não está inserindo na tabela fotos.
Insere somente na tabela imóveis.
Set Root = objXMLDoc.documentElement
Set NodeList = Root.getElementsByTagName("Imovel")
For iLoop = 0 to NodeList.length - 1
vREFERENCIA = NodeList.item(iLoop).selectSingleNode("REFERENCIA").text
vCD_PROPRIETARIO = NodeList.item(iLoop).selectSingleNode("CD_PROPRIETARIO").text
vCADASTRO = NodeList.item(iLoop).selectSingleNode("CADASTRO").text
vurlimagem = NodeList.item(iLoop).selectSingleNode("urlimagem").text
'
' Ler na mY sQL
'
Set rsCadastro = Server.CreateObject("AdoDB.Recordset")
SelCadastro = "SELECT * FROM imoveis where REFERENCIA= '"&vREFERENCIA&"' "
rsCadastro.Open SelCadastro,objConnection
if rsCadastro.eof then
'
' Insere
'
sSQL = "INSERT INTO IMOVEIS (REFERENCIA, CD_PROPRIETARIO, CADASTRO) VALUES('"&vREFERENCIA&"', '"&vCD_PROPRIETARIO&"', '"&vCADASTRO&"') "elseif qtd_fotos = "" then
vurlimagem = Split(request.form("ARQUIVO"), ",")
For i = 1 To request.form("ARQUIVO").Count
sSQL2 = "INSERT INTO FOTOS (NROFOTO, ARQUIVO, REFERENCIA) VALUES('"&vREFERENCIA&"', '"&request.form("ARQUIVO")(i)&"','"&vREFERENCIA&"')"
objConnection.execute sSQL2
'
' Atualiza
'
atualiza = "UPDATE imoveis SET CD_PROPRIETARIO = '"&vCD_PROPRIETARIO&"', CADASTRO = '"&vCADASTRO&"' Where REFERENCIA='"&REFERENCIA&"' "
objConnection.execute atualiza
atualiza1 = "UPDATE FOTOS SET ARQUIVO = '"&request.form("ARQUIVO")(i)&"' where REFERENCIA='"&vREFERENCIA&"' "
objConnection.execute atualiza1
next
end if
'
' Executa SQL
'
Set rsCadastro = Server.CreateObject("AdoDB.Recordset")
rsCadastro.Open SelCadastro,objConnection
Next
dá um response.write na sua string SQL para ver o que esta sendo passado
sSQL2 = "INSERT INTO FOTOS (NROFOTO, ARQUIVO, REFERENCIA) VALUES('"&vREFERENCIA&"', '"&request.form("ARQUIVO")(i)&"','"&vREFERENCIA&"')"
response.write(sSQL2)
response.end()
objConnection.execute sSQL2
Não mostrou nada =/
Então fiz um response no sSQL e no sSQL2
sSQL = "INSERT INTO IMOVEIS (REFERENCIA, CD_PROPRIETARIO, CADASTRO) VALUES('"&vREFERENCIA&"', '"&vCD_PROPRIETARIO&"', '"&vCADASTRO&"') "
objConnection.execute sSQL
response.write(sSQL &"<br>")
elseif qtd_fotos = "" then
vurlimagem = Split(request.form("ARQUIVO"), ",")
For i = 1 To request.form("ARQUIVO").Count
sSQL2 = "INSERT INTO FOTOS (NROFOTO, ARQUIVO, REFERENCIA) VALUES('"&vREFERENCIA&"', '"&request.form("ARQUIVO")(i)&"','"&vREFERENCIA&"')"
objConnection.execute sSQL2
response.write(sSQL2)
response.end()
Ele mostrou
**INSERT INTO IMOVEIS (REFERENCIA, CD_PROPRIETARIO, CADASTRO) VALUES('631401', '2', 'APARTAMENTOS')
INSERT INTO IMOVEIS (REFERENCIA, CD_PROPRIETARIO, CADASTRO) VALUES('3', '3', 'APARTAMENTOS') **
**INSERT INTO IMOVEIS (REFERENCIA, CD_PROPRIETARIO, CADASTRO) VALUES('7', '4', 'APARTAMENTOS') **
Já o insert das fotos ele não mostra nada =/
Agradeço sua atenção!
verifique se esta vindo dados de request.form("ARQUIVO")
Não mostra nada =/
Já tentei estou desde as 8:30 tentando resolver.
vc tem que passar a variavel do for na SQL, tipo assim:
For i = 1 To Request.Form("produtos").Count
Response.write request.form("produtos")(i)&"<BR>" & request.form("qtd_produtos")(i)&"<BR>"
SQL = "INSERT INTO lista (lista_prodID,lista_quant) Values ('"&request.form("produtos")(i)&"','"&request.form("qtd_produtos")(i)&"')"Mas eu estou passando
sSQL2 = "INSERT INTO FOTOS (NROFOTO, ARQUIVO, REFERENCIA) VALUES('"&vREFERENCIA&"', '"&request.form("ARQUIVO")(i)&"','"&vREFERENCIA&"')"
no response.write de request.form("ARQUIVO")(i) o que vem pra vc
Olá estou tentando da seguinte forma fazer o count no xml
objXMLDoc.selectSingleNode("/Imovel/'urlimagem = "&vurlimagem&" ' ").Count
Porém apresentou a seguinte mensagem de erro:
msxml3.dll erro '80004005'
Teste de nó esperado aqui. /Imovel/-->'urlimagem = 7.jpg '<--
Se puder ajudar agradeço.
esse erro pode ser direitos (permissões) no arquivo
Todas as permissões estão liberadas tanto do xml quanto do arquivo onde está as instruções.
Mas o erro persiste. :upset:
Coloquei para ele contar o que vem da variável mas está apresentando a seguinte msg:
msxml3.dll erro '80004005'
Era esperado o símbolo 'eof', mas foi encontrado '['. -->[<--7.jpg]
Consegui melhorar rsrs, porém ele está agrupando os nós preciso separa-los para armazenar no bd em linhas separadas:
INSERT INTO FOTOS (NROFOTO, ARQUIVO, REFERENCIA) VALUES('631401', '7.jpg 8.jpg','631401')
Alguém pode ajudar por favor?
Desde já deixo meu agradecimento ou xanburzum ao tempo dedicado a ajudar.
dá um SPLIT nele
Muito obrigada xanburzum, consegui resolver, segue o código para quem precisar:
<%
if rsCadastro.eof then
'
' Insere
'
sSQL = "INSERT INTO IMOVEIS (REFERENCIA, CD_PROPRIETARIO, CADASTRO) VALUES('"&vREFERENCIA&"', '"&vCD_PROPRIETARIO&"', '"&vCADASTRO&"') "
objConnection.execute sSQL
response.write(sSQL &"<br>")
a=Split(vurlimagem," ",2)
for each vurlimagem in a
sSQL2 = "INSERT INTO FOTOS (NROFOTO, ARQUIVO, REFERENCIA) VALUES('"&vREFERENCIA&"', '"&vurlimagem&"','"&vREFERENCIA&"')"
objConnection.execute sSQL2
next
else
'
' Atualiza
'
atualiza = "UPDATE imoveis SET CD_PROPRIETARIO = '"&vCD_PROPRIETARIO&"', CADASTRO = '"&vCADASTRO&"' Where REFERENCIA='"&REFERENCIA&"' "
objConnection.execute atualiza
end if
'
' Executa SQL
'
Next
%>
faz um loop no seu INSERT