Tengo un programa en VB6 que me genera código XHTML para mi página web.
Luego copio el texto, abro mi página asp lo pego en un textarea y con código
ADO escribo el texto en un nuevo registro de mi tabla con INSERT...
Lo que quiero ahora es hacerlo directamente desde mi editor, es decir, que
desde un command haga la transacción indicando primero los datos de mi
dirección ftp, mi nombre de usuario y mi password para añadir el registro en
la base de datos remota.
En resumen, se trata de modificar base de datos con el nuevo texto y código
ADO y SQL, solo que la base de datos no está en mi red local sino en un
server de internet con mi IP fija.
He empezado a trabajar con algún éxito con los componente Internet transfer
y con el Winsock, pero de momento solo he conseguido con el primero bajar y
modificar código fuente de las páginas .html pero no he conseguido
interactuar con el archivo .mdb.
He indagado en la red pero nada concluyente. Puede que esté cerca, pero
agradeceré a quien me pueda orientar para ganar tiempo.
Saludos al grupo.
Hola.
La única manera de interactuar con un archivo .mdb (usando ADO o cualquier
otra tecnología) es mediante las operaciones de acceso a archivos del
sistema operativo.
Tendrías que tener habilitada la opción de compartir archivos e impresoras
en el servidor Web y tener acceso a la unidad compartida que contiene el
archivo en cuestión, algo sumamente riesgoso y que por lo general los ISP,
los proveedores de hosting y algunos nodos intermedios de la red bloquean. Y
aun cumpliendo todos los requisitos, el rendimiento debe ser absolutamente
miserable.
Lo más usual es desarrollar un par de páginas del lado del servidor (ASP,
PHP, etc.): una que reciba los parámetros de una consulta de acción, la
ejecute sobre la BBDD y te devuelva el resultado, y otra que reciba una
consulta de selección, la ejecute y te devuelva el contenido del recordset
resultante formateado de alguna manera. Una vez montado todo el tinglado,
puedes usar el Inet Control para enviar un request HTTP formateado con los
datos necesarios para ejecutar la consulta de acción en el servidor.
Salud!
Por esto mismo tienes varias alternativas "parches" ya que directamente veo
muy dificil que lo hagas.
Por ejemplo las que mencionadas anteriormente
- Una página PHP o ASP que interactúen entre tu aplicación y los datos
almacenados en algún servidor web.
o
- Un Servicio Web con el cual puedas levantar desde tu aplicación directa y
enviar los datos.
o algo un poco menos eficiente.... que es descargar ese archivo MDB desde el
FTP que tienes, actualizas los datos localmente y luego subes ese mismo
MDB... esta alternativa no la encuentro optima, ya que tu MDB puede
incrementar, trabajarías con una copia local y no sería "on line"...
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
"J. Enrique Alcaraz" <alcarazQUITARarrobaESTOranpuntoes> escribió en el
mensaje de noticias:ujsAnPGq...@TK2MSFTNGP06.phx.gbl...
Bueno, sigo investigando, creo que voy avanzando, el caso es conseguir
editar mi página web directamente desde mi aplicación.
Saludos al grupo.
http://msmvps.com/blogs/jvargas/pages/utilizarservicioweb.aspx
O puedes usar una página ASP con parámetros, para esto puedes hacerlo
mediante
Microsoft Parser XML 3.0 o superior, te adjunto otro ejemplo:
http://msmvps.com/blogs/jvargas/pages/10291.aspx
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
"J. Enrique Alcaraz" <alcarazQUITARarrobaESTOranpuntoes> escribió en el
mensaje de noticias:OtZYMRKq...@TK2MSFTNGP03.phx.gbl...
En cuanto al uso del control inet me ha dado muy buen resultado al
interactuar con mi página asp, de hecho he conseguido introducir la
sentencia SQL y el texto a cambiar en los parámetros de la URL simplemente
con el método inet.openURL.
Como me temía, solo me funciona cuando los parámetros son cortos, pero al
intentar poner un texto largo en uno de ellos aparece "error al generar la
cadena URL", es decir, desborda la longitud máxima admitida (no tenía seguro
si la limitación era del textbox de IE o era genérica).
Ahora estoy investigando en alguna manera de enviar estos datos a la misma
asp con get pero ahora con el método Post y creo que el método execute del
inet lo admite pero todavía no conozco la sintaxis aunque creo estar en el
camino correcto.
Saludos al grupo.
Por ejemplo:
URL = "http:/.../pagina.asp"
MiXML = "<parametros><nombre></nombre> .... </parametros>"
Set objServerXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.4.0")
objServerXMLHTTP.Open "POST", URL
objServerXMLHTTP.Send MiXML
Respuesta = objServerXMLHTTP.responseText
Set objServerXMLHTTP = Nothing
y Desde la página ASP solo debes obtener el Request Completo y dejandolo en
un objeto DomDocument
MiXML = Request
o
Dim objXML
Set objXML = Server.CreateObject("MSXML2.DomDocument")
objXML.Load Request
Set objXML = Nothing
Espero te sirva...
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
"J. Enrique Alcaraz" <alcarazQUITARarrobaESTOranpuntoes> escribió en el
mensaje de noticias:uxUaY3Kq...@TK2MSFTNGP04.phx.gbl...
Creo que la referencia a XML va a ser el camino correcto para enviar datos
"POST" a mi página asp como si se tratara del envío desde un formulario con
textareas. El problema es que tengo que partir de cero porque nunca he
trabajado en este campo, ya digo que el envío con get con un inet me dio muy
buen resultado mientras no hubiera una cadena larga que superara el máximo
de la URL.
No acabo de comprender el código que me envías porque una vez haya enviado
los datos a la página ASP no sé cómo separar los diferentes parámetros en
ella. Con un form en una página htm es fácil porque cada control tiene un
name que luego se saca en el asp con request.form("name") pero ahora no
acabo de comprender cómo se hace esto.
He encontrado una página muy interesante para iniciarse en el XML con VB y
ADO:
http://www.topxml.com/xml/learn/learnxml.sp.asp
Tampoco acabo de saber si es necesario el control inet para enviar los datos
o el código XML ya lo hace.
Saludos y sigo en ello, os diré si llego a un buen resultado.
"Jhonny Vargas P." <c_h_a_n_g...@hotmail.com> escribió en el mensaje
news:OdXCw7Kq...@TK2MSFTNGP05.phx.gbl...
He encontrado este código en la red para cargar datos en la página asp y al
menos el debug.print me devuelve los errores de la página.
Yo lo que quiero es que la mipaginadeprueba.asp me devuelva los parámetros
param1 y param2, es decir, hola y adios.
UrlStr = "http://www.../mipaginadeprueba.asp"
Set DomDoc = New XMLHTTP
'Parámetros en formato URLEncode
strParams = "param1=hola¶m2=adios"
'Metodo a usar, url, y true en caso de manejar la respuesta en modo
asíncrono
DomDoc.Open "POST", UrlStr, False
'encabezados
DomDoc.setRequestHeader "Content-type",
"application/x-www-form-urlencoded"
DomDoc.setRequestHeader "Content-length", Len(strParams)
DomDoc.setRequestHeader "Connection", "close"
DomDoc.send strParams
'La respuesta, en caso de existir, está en responseBody.
'También puedes especificar responseXml si tu aplicación devolviese XML
strHtml = StrConv(DomDoc.responseBody, vbUnicode)
Debug.Print strHtml
Lo que no encuentro es el código asp para ponerlo en mi página de prueba,
estoy intentando con el tuyo para combinarlo con éste pero no da resultado.
Bueno sigo en ello.
Saludos al grupo.
"Jhonny Vargas P." <c_h_a_n_g...@hotmail.com> escribió en el mensaje
news:OdXCw7Kq...@TK2MSFTNGP05.phx.gbl...
Finalmente he conseguido cargar datos desde vb en la página asp con el
código que me has enviado, pero me encuentro con que los parámetros quitan
los espacios en las cadenas de texto.
---------------------------
strURL = "http://www....mipaginadeprueba.asp"
Set objServerXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.3.0")
objServerXMLHTTP.Open "POST", strURL
objServerXMLHTTP.Send MiXML
'Respuesta = objServerXMLHTTP.responseText
'Response.Write Respuesta & vbcrlf
'Response.Write "<br>" & vbcrlf
Set objServerXMLHTTP = Nothing
'Se escriben losparámetros:
a = Request("param1")
Response.Write a & vbcrlf
response.Write "<br>" & vbcrlf
b = Request("param2")
Response.Write b
-----------------------
Saludos de nuevo,
J. Alcaraz, Madrid - España
Dim objXML
Set objXML = Server.CreateObject("MSXML2.DOMDocument")
'Esto ...
objXML.Load Request
' o Esto (no recuerdo cual de las dos funciona)
objXML.Loadxml Request
Response.Write objXML.xml
Set objXML = Nothing
PD: OJO.. debes pasar TODO el REQUEST al XML.
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
"J. Enrique Alcaraz" <alcarazQUITARarrobaESTOranpuntoes> escribió en el
mensaje de noticias:elPEmjSq...@TK2MSFTNGP05.phx.gbl...
Objeto Request error 'ASP 0208 : 80004005'
No se puede usar la colección genérica Request
/prueba.asp, línea 34
No se puede utilizar la colección genérica Request después de llamar a
BinaryRead.
---------------------------------------
strURL = "http://www...miprueba.asp"
Set objServerXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.3.0")
Set objXML = Server.CreateObject("MSXML2.DOMDocument")
objServerXMLHTTP.Open "POST", strURL
objServerXMLHTTP.Send MiXML
'Respuesta = objServerXMLHTTP.responseText
objXML.Load Request
'objXML.Loadxml Request
Response.Write "<br><br>" & vbcrlf
Response.Write objXML.xml
Set objXML = Nothing
Set objServerXMLHTTP = Nothing
'Se escriben los parámetros:
a = Request("param1")
Response.Write a & vbcrlf
response.Write "<br>" & vbcrlf
b = Request("param2")
Response.Write b
------------------------------------
Con objXML.Loadxml Request dice que no coinciden los tipos.
No sé qué parte del código puede estar mal
De todas formas he encontrado muy poca documentación sobre el objeto MSXML2
Saludos al grupo
"Jhonny Vargas P." <c_h_a_n_g...@hotmail.com> escribió en el mensaje
news:elDfENTq...@TK2MSFTNGP02.phx.gbl...
El código enviado es para xml.
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
"J. Enrique Alcaraz" <alcarazQUITARarrobaESTOranpuntoes> escribió en el
mensaje de noticias:O$yrn9TqI...@TK2MSFTNGP06.phx.gbl...
Código VB6.0
Dim URL As String, _
MiXML As String, _
objServerXMLHTTP As Object
URL = "http://localhost:8020/ejemplo/gateway.asp"
MiXML = "<parametros><nombre>Hola</nombre></parametros>"
Set objServerXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.4.0")
objServerXMLHTTP.Open "POST", URL
objServerXMLHTTP.Send (MiXML)
Respuesta = objServerXMLHTTP.responseText
Set objServerXMLHTTP = Nothing
Text1.Text = Respuesta
Código página ASP
<%
Dim objXML
Set objXML = Server.CreateObject("MSXML2.DomDocument")
objXML.Load Request
Response.Write "El XML Obtenido es: " & objXML.xml
Set objXML = Nothing
%>
Espero te sirva.
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
"Jhonny Vargas P." <c_h_a_n_g...@hotmail.com> escribió en el mensaje
de noticias:#GOTcJUq...@TK2MSFTNGP06.phx.gbl...
UrlStr = "http://www....miprueba.asp"
Set DomDoc = New XMLHTTP
'Parámetros en formato URLEncode
strParams = "param1=" & rtb.Text & "¶m2=Frase de prueba"
'Metodo a usar, url, y true en caso de manejar la respuesta en modo
asíncrono
DomDoc.Open "POST", UrlStr, False
'encabezados
DomDoc.setRequestHeader "Content-type",
"application/x-www-form-urlencoded"
DomDoc.setRequestHeader "Content-length", Len(strParams)
DomDoc.setRequestHeader "Connection", "close"
DomDoc.send strParams
'La respuesta, en caso de existir, está en responseBody.
'También puedes especificar responseXml si tu aplicación devolviese XML
strHtml = StrConv(DomDoc.responseBody, vbUnicode)
Debug.Print strHtml
Es el código vb desde el que envío los datos.
En el inmediato leo lo que me envía la página asp una vez se interactúa con
ella. Pero ya digo que el problema es que el texto que envío pierde los
espacios, el param2 devuelve "Frasedeprueba", es el único problema que
encuentro porque funcionaba bien. Yo lo que quiero es enviar datos post a mi
página asp desde mi aplicación vb como si lo hiciera dsde un formulario html
con controles method = post action = "miprueba.asp".
Casi lo había conseguido pero no veo la manera de que no pierda los
espacios.
Habrá que seguir investigando, dime si me equivoco en algo que envío.
Un saludo
"Jhonny Vargas P." <c_h_a_n_g...@hotmail.com> escribió en el mensaje
news:%23GOTcJU...@TK2MSFTNGP06.phx.gbl...
...
Acabo de realizar la siguiente prueba y me funciona perfectamente:
Código VB6.0
Dim URL As String, _
MiXML As String, _
objServerXMLHTTP As Object
MiXML = "<parametros><nombre>Hola</nombre></parametros>"
Set objServerXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.4.0")
objServerXMLHTTP.Open "POST", URL
objServerXMLHTTP.Send (MiXML)
Respuesta = objServerXMLHTTP.responseText
Set objServerXMLHTTP = Nothing
Text1.Text = Respuesta
Código página ASP
<%
Dim objXML
Set objXML = Server.CreateObject("MSXML2.DomDocument")
objXML.Load Request
Response.Write "El XML Obtenido es: " & objXML.xml
Set objXML = Nothing
%>
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
"J. Enrique Alcaraz" <alcarazQUITARarrobaESTOranpuntoes> escribió en el
mensaje de noticias:eRPbAfUq...@TK2MSFTNGP03.phx.gbl...
A mí también me funciona, he puesto dos parámetros en miXML y obtengo esta
respuesta:
El XML Obtenido es: <parametros><param1>Frase de prueba
primera</param1><param2>Frase de prueba segunda</param2></parametros>
El código se ha simplificado enormemente y es una buena manera de transferir
datos a mi página asp. Pero ahora viene la segunda parte: como estoy
empezando con el tema de XML no sé extraer los parámetros tal cual están, al
hacer un response.write param1 Esto no funciona, me dice que la variable
no está declarada
response.write <param1> Esto tampoco funciona.
Es decir ahora se trata de extraer los parámetros uno a uno estoy en ello y
si extraigo los parámetros asunto terminado. Seguimos con este interesante
tema, cualquier novedad la comunico enseguida al grupo.
Saludos
"Jhonny Vargas P." <c_h_a_n_g...@hotmail.com> escribió en el mensaje
news:%23gTVwkU...@TK2MSFTNGP05.phx.gbl...
MiXML = "<parametros><nombre>mi nombre</nombre><edad>25</edad></parametros>"
y en el ASP, obtenlos de esta otra manera ;)
<%
Dim objXML
Set objXML = Server.CreateObject("MSXML2.DomDocument")
objXML.loadXML (MiXML)
Response.Write "El Nombre enviado es: " &
objXML.selectSingleNode("//parametros/nombre").Text
Response.Write "La edad enviada es: " &
objXML.selectSingleNode("//parametros/edad").Text
Set objXML = Nothing
%>
Creo que con esto tienes para adaptar a lo que necesitas... espero te
sirva...
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
"J. Enrique Alcaraz" <alcarazQUITARarrobaESTOranpuntoes> escribió en el
mensaje de noticias:eq4V9oVq...@TK2MSFTNGP03.phx.gbl...
Cuánto agradezco tus conocimientos de este nuevo campo que no conocía y del
que estoy obteniendo muy poca documentación aunque la busco en la red.
Poco a poco vamos logrando introducir datos en nuestra página asp desde
nuestra aplicación vb6 y éste es el camino que mejor resultado nos ha dado,
pero ahora se ha presentado un pequeño problema y es que si en uno de los
parámtetros pongo caracteres raros como palabras acentuadas o ñ, aparece un
? desde el carácter raro hasta el final de palabra.
No se trata de las entidades html sino de otra codificación, ahora se trata
de codificar correctamente el texto, posiblemente hay que hacer un Replace
de todos los carateres raros con una función o bien no se ha codificado el
texto con alguna propiedad del objeto objServerXMLHTTP.
Lo de cambiar caracteres raros por entidades html lo hago con todos los
textos antes de cargarlos en la página htm, pero ahora me parece que hay que
actuar de otra manera...
Saludos.
"Jhonny Vargas P." <c_h_a_n_g...@hotmail.com> escribió en el mensaje
news:%23gGWF3V...@TK2MSFTNGP04.phx.gbl...
Es muy simple... al XML inicialmente agrega el siguiente encabezado
<?xml version="1.0" encoding="iso-8859-1"?>
Ejemplo:
MiXML = "<?xml version=""1.0"" encoding=""iso-8859-1""?>"
MiXML = MiXML & "<parametros><nombre>mi
nombre</nombre><edad>25</edad></parametros>"
Espero te sirva... cualquier cosa... pregunta.
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
"J. Enrique Alcaraz" <alcarazQUITARarrobaESTOranpuntoes> escribió en el
mensaje de noticias:eo1psrWq...@TK2MSFTNGP02.phx.gbl...
Un cordial saludo desde Madrid donde ya es muy de noche después de un día
luchando con la programación, pero creo que el objetivo de poner datos en
asp desde la aplicación vb6 se ha conseguido.
Puede que haya otras vías, con el control inet y cadenas cortas se consigue
interactuar con la asp con un get en la URL pero no sirvió para cadenas
largas. No me importaría seguir investigando porque es un tema interesante
para todos, tampoco me importaría que alguien más del grupo aportara alguna
experiencia más u otra alternativa en esto de transferir datos desde nuestra
aplicación hasta nuestras páginas asp.
Creo que con el control Inet se pueden transferir archivos al server pero
todavía no he experimentado con este control salvo hacer una lectura del
código fuente de páginas web con el openURL...
Pues lo dicho, un saludo y cualquier novedad te la comunicaría a través del
grupo.
"Jhonny Vargas P." <c_h_a_n_g...@hotmail.com> escribió en el mensaje
news:OayR70Wq...@TK2MSFTNGP05.phx.gbl...
Que bueno que te haya servido.
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
"J. Enrique Alcaraz" <alcarazQUITARarrobaESTOranpuntoes> escribió en el
mensaje de noticias:OpQkYKXq...@TK2MSFTNGP06.phx.gbl...
Creo que para ello voy a ampezar a programar con las últimas versiones de
visual basic .net y 2005 que ya creo que vienen mejor preparados para la
interacción de nuestras aplicaciones con la web, pero tengo poca
experiencia, hasta ahora mis aplicaciones han servido para mis propias
pequeñas empresas y me ha ido muy bien con vb6, ...
Un cordial saludo.
"Jhonny Vargas P." <c_h_a_n_g...@hotmail.com> escribió en el mensaje
news:%23Eum%23QXqI...@TK2MSFTNGP05.phx.gbl...