No puedo recuperar datos de VFP con ASP

29/10/2004 - 16:03 por Jason Boris Rivas Otaiza | Informe spam
buenas tengo un problema qeu la verdad me esta volviendo loco, necesito
cambiar la base de datos de mi web de acces a VFP, utilizando ODBC y ADO,
cree una pagina de prueba para ver como hacer la coneccion con VFP y logre
realizar la coneccion con la cual puedo insertar, actualizar y eliminar
registros sin problemas pero por alguna razon que no entiendo no puedo
recuperar los datos de la tabla no cual es el problema si puedo
pranticamente modificar la tabla a mi antojo por que el Recodset no puede
recuperar registros de la tabla.

este es el codigo asp que utilizo

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<%
dim con,sqlstr,cn
set cn=server.createobject("ADODB.connection")
'cn.open "Provider=MSDASQL.1;Persist SecurityInfo=False;Extended
Properties=Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB="&
Server.mapPath("../BaseDatos/")&
";SourceTypeÛF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"

cn.open "DRIVER={Microsoft Visual FoxPro
Driver};SourceTypeÛC;Exclusive=no;SourceDb="&
Server.mapPath("../BaseDatos/limaguns.dbc")
'cn.execute "insert into marcas(marca_nombre) values('prueba')"
'cn.execute "Select Prueba.prueba From Prueba"

sqlstr="Select * From categorias"
Set rs=Server.CreateObject("ADODB.Recordset")
rs.open sqlstr,cn
registros=rs.RecordCount
%>
Registros :<%=registros%>
<%'="prueba : "+rs("cat_nombre")%>
<%cn.close%>
</body>
</html>

su puesta mente deveria de darme el numero de registros obtenidos pero
sale -1 y si trato de mostrar el contenido de algun campo sale este error

HTTP 500.100. Error interno del servidor: error de ASP
Servicios de Internet Information Server
Información técnica (para personal de soporte técnico)
a.. Tipo de error:
(0x80020009)
Ocurrió una excepción.
/LimaGuns/paginas/pruebaBD.asp, línea 25


b.. Tipo de explorador:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

c.. Página:
GET /LimaGuns/paginas/pruebaBD.asp

d.. Hora:
viernes, 29 de octubre de 2004, 8:53:19


e.. Más información:
Soporte técnico de Microsoft
la verdad me parece ilogico que no pueda mostrar los registros de la tabla
probe con una tabla mas simple con un solo campo y con un solo campo de
texto y ygual no funciona podrian decirme cual es el problem apor favor que
esto me esta desquisiando necesito poder actualizar mi web con VFP y no
puedo hacerlo a causa de este problema les agradeso la atencion prestada

Preguntas similare

Leer las respuestas

#1 Sandra y María Claudia
30/10/2004 - 05:01 | Informe spam
Hola Jason:
Yo hago la conexión de otra forma, pero en realidad es lo mismo.
Yo creo un archivo INC con los parametros de conexión de esta forma

<%
Dim Conexion,Tabla1
Set Conexion=Server.CreateObject("adodb.connection")
Set Tabla1=Server.CreateObject("adodb.recordset")
Conexion.open "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=f:\inetpub\base de datos\agenda.mdb"
%>

e incluyo este archivo en todas las páginas que hacen uso de base de datos
mediante un include file.
Luego creo variables temporales para mis query, asi:

Temp="Select * From Clientes Where Fecha='" & Request("VarFecha") & "' Order
By Codigo, Desc Nombre, Desc"
Tabla1.Open Temp, Conexion
While Not Tabla1.EOF

.


Pero lo que mencionas es el uso del RecordCount y para eso debes de tener un
archivo INC llamado ADOVBS.INC. Para mayor información puedes revisar
http://www.aspfacil.com/articulos/278006.asp por ejemplo. En esa dirección
también hay un enlace para descargar el archivo que menciono

Ojalá te ayude

Suerte

Sandra y María Claudia
Respuesta Responder a este mensaje
#2 Jason Boris Rivas Otaiza
30/10/2004 - 15:59 | Informe spam
muchas gracias por tu ayuda pero ya avia intentado hacerlo con el archivo
que me indicas que en realidad solo establese las constantes para ser
utilizadas por ado lo unico que consegui es que el RecordCount me devolviera
0 en ves de -1 no entiendo cual es el problema la vedad quisiera que algien
me respondiera este es el odigo que utiliso aora agregandole el archivo de
ADOVBS.INC al que yo llamo ado_Constantes.asp com les digo sigue en lo mismo
no recupera ningun registro por favor si alguien saven de alguien que
realmente hayga echo una coneccion de VFP con ASP por favor diganmelo por
que yo ya no se que mas hacer por siacaso mi maquina es con XP y tienes SP1y
el SP2 por favor ayuden me


<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file = "../includes/ado_Constantes.asp"-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<%
dim con,sqlstr,cn
set cn=server.createobject("ADODB.connection")
'cn.open "Provider=MSDASQL.1;Persist SecurityInfo=False;Extended
Properties=Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB="&
Server.mapPath("../BaseDatos/")&
";SourceTypeÛF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"

cn.open "DRIVER={Microsoft Visual FoxPro
Driver};SourceTypeÛC;Exclusive=no;SourceDb="&
Server.mapPath("../BaseDatos/limaguns.dbc")
'cn.execute "insert into marcas(marca_nombre) values('prueba')"
'cn.execute "Select Prueba.prueba From Prueba"


sqlstr="Select * From Categorias"
Set rs=Server.CreateObject("ADODB.Recordset")
'rs.open sqlstr,cn
rs.Open sqlstr,cn, adOpenStatic, adLockReadOnly, adCmdText
estado=rs.state
registros=rs.RecordCount
%>
Registros :<%=registros%><br>
Estado :<%=estado%><br>
<%
acum=0
do until rs.eof
acum=acum+1
%>
registro <%=acum%><br>
<%
loop
%>

<%cn.close%>
Estado :<%=estado%>
</body>
</html>



"Sandra y María Claudia" escribió en el mensaje
news:
Hola Jason:
Yo hago la conexión de otra forma, pero en realidad es lo mismo.
Yo creo un archivo INC con los parametros de conexión de esta forma

<%
Dim Conexion,Tabla1
Set Conexion=Server.CreateObject("adodb.connection")
Set Tabla1=Server.CreateObject("adodb.recordset")
Conexion.open "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=f:\inetpub\base de datos\agenda.mdb"
%>

e incluyo este archivo en todas las páginas que hacen uso de base de datos
mediante un include file.
Luego creo variables temporales para mis query, asi:

Temp="Select * From Clientes Where Fecha='" & Request("VarFecha") & "'
Order By Codigo, Desc Nombre, Desc"
Tabla1.Open Temp, Conexion
While Not Tabla1.EOF

.


Pero lo que mencionas es el uso del RecordCount y para eso debes de tener
un archivo INC llamado ADOVBS.INC. Para mayor información puedes revisar
http://www.aspfacil.com/articulos/278006.asp por ejemplo. En esa dirección
también hay un enlace para descargar el archivo que menciono

Ojalá te ayude

Suerte

Sandra y María Claudia

Respuesta Responder a este mensaje
#3 Sashka
03/11/2004 - 17:24 | Informe spam
-
¡Importante!: Colabora con el grupo. Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Aca hay varias cosas...
1. do until rs.eof
acum=acum+1
%>
registro <%=acum%><br>
<%
loop
%>

No haces un rs.movenext... ese loop será infinito!!!!! ponle rs.movenext
encima del loop

2. Estas tratando de pintar el campo después de cerrar la conexión. al
hacerlo estas cerrando implícitamente el recordset... aunque deberías
hacerlo explícitamente y además setearlo a nothing (tanto el recordset
como la conexión).

3. Aun cuando cerraras la conexión despues de tratar de pintar el campo
te daría error porque el EOF sería true

4. La variable estado no se actualizará automáticamente te seguirá
devolviendo 1 (recordset abierto) aun cuando hayas cerrado la conexión

5. Si recordcount es cero, y tratas de pintar un campo te dará error de BOF
o EOF o registro borrado.

Sashka
MS MVP Access
MCP ASP.Net

"Jason Boris Rivas Otaiza" escribió en el
mensaje news:
muchas gracias por tu colavoracion pero al aplicar el archivo ADOVBS.INC y
configurar el recordset de esta forma

rs.Open sqlstr,cn, adOpenStatic, adLockReadOnly, adCmdText

Logre que el RecordCount lla no me devolviera -1 ahora me devuelve 0 su
pongo que esto quiere decir que no devolvio ningun registro, este es el
codigo que utiliso

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file = "../includes/ADOVBS.INC"-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
<%
dim con,sqlstr,cn
set cn=server.createobject("ADODB.connection")
cn.open "DRIVER={Microsoft Visual FoxPro
Driver};SourceTypeÛC;Exclusive=no;SourceDb="&
Server.mapPath("../BaseDatos/limaguns.dbc")

sqlstr="Select * From Categorias"
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open sqlstr,cn, adOpenStatic, adLockReadOnly, adCmdText
estado=rs.state
registros=rs.RecordCount
%>
Registros :<%=registros%><br>
Estado :<%=estado%><br>
<%
acum=0
do until rs.eof
acum=acum+1
%>
registro <%=acum%><br>
<%
loop
%>

<%cn.close%>
Estado :<%=estado%>
prueba :<%=rs("cat_nombre")%>
</body>
</html>

y sige saliendo un erro al tratar de mostrar algun registro en la linea del
codigo << prueba :<%=rs("cat_nombre")%> >>

a.. Tipo de error:
ADODB.Recordset (0x800A0CC1)
No se encontró el elemento en la colección que corresponde con el nombre o
el ordinal pedido.
/Limaguns/paginas/pruebaBD.asp, línea 42


b.. Tipo de explorador:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

c.. Página:
GET /Limaguns/paginas/pruebaBD.asp

d.. Hora:
miércoles, 03 de noviembre de 2004, 9:53:04


e.. Más información:
Soporte técnico de Microsoft
en realidad no me interesa el RecordCount lo unico que quiero es poder
cargar la tabla y mostrar sus registros y eso es lo que no puedo hacer todo
esto utilizando el recordset para poder utilizar las mismas paginas de mi
web que lla estan trabajando con una base de datos pero en acces lo que
necesito es pasarla a vfp por que mi sistema de la empresa esta en vfp y
para poder actualizar la pagina web por medio de vfp todos los dias por que
haciendo lo con la base de datos access es muy lento y dificil de todos
mosods muchas graias por tu interes para queder ayudarme te lo agradesco
muchisimo
"Sashka" escribió en el mensaje
news:uWypd$
¡Importante!: Colabora con el grupo. Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Para lo del recordcount mira mi respuesta a Sandra y Maria Claudia en "Re:
Numero de registros" y aunque lo del SP no se aplica a tu caso, entenderás
porque te devuelve -1... además te recomiendo mirar el enlace que pongo al
final...
Con respecto a lo de que no puedes "pintar" el contenido de los campos...
no he podido reproducir tu error, pero creo que lo que pasa es que el
interprete no entiende que quieres

<%="prueba : "+rs("cat_nombre")%> ¿? (ni yo!!) (aunque a mi me dá otro
error... Error de Microsoft VBScript en tiempo de ejecución (0x800A000D)

Pruebalo así...
prueba : <%=rs("cat_nombre")%>

Por otro lado... cual es la línea 25?? Porque yo estoy entendiendo que si
te da el -1 en el recordcount es que si se abrio la conexión y si se abrió
el recordset.

Sashka
MS MVP Access
MCP ASP.Net

"Jason Boris Rivas Otaiza" escribió en el
mensaje news:
buenas tengo un problema qeu la verdad me esta volviendo loco, necesito
cambiar la base de datos de mi web de acces a VFP, utilizando ODBC y


ADO,
cree una pagina de prueba para ver como hacer la coneccion con VFP y


logre
realizar la coneccion con la cual puedo insertar, actualizar y eliminar
registros sin problemas pero por alguna razon que no entiendo no puedo
recuperar los datos de la tabla no cual es el problema si puedo
pranticamente modificar la tabla a mi antojo por que el Recodset no


puede
recuperar registros de la tabla.

este es el codigo asp que utilizo

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<%
dim con,sqlstr,cn
set cn=server.createobject("ADODB.connection")
'cn.open "Provider=MSDASQL.1;Persist SecurityInfo=False;Extended
Properties=Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB="&
Server.mapPath("../BaseDatos/")&



";SourceTypeÛF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"

cn.open "DRIVER={Microsoft Visual FoxPro
Driver};SourceTypeÛC;Exclusive=no;SourceDb="&
Server.mapPath("../BaseDatos/limaguns.dbc")
'cn.execute "insert into marcas(marca_nombre) values('prueba')"
'cn.execute "Select Prueba.prueba From Prueba"

sqlstr="Select * From categorias"
Set rs=Server.CreateObject("ADODB.Recordset")
rs.open sqlstr,cn
registros=rs.RecordCount
%>
Registros :<%=registros%>
<%'="prueba : "+rs("cat_nombre")%>
<%cn.close%>
</body>
</html>

su puesta mente deveria de darme el numero de registros obtenidos pero
sale -1 y si trato de mostrar el contenido de algun campo sale este


error

HTTP 500.100. Error interno del servidor: error de ASP
Servicios de Internet Information Server
Información técnica (para personal de soporte técnico)
a.. Tipo de error:
(0x80020009)
Ocurrió una excepción.
/LimaGuns/paginas/pruebaBD.asp, línea 25


b.. Tipo de explorador:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

c.. Página:
GET /LimaGuns/paginas/pruebaBD.asp

d.. Hora:
viernes, 29 de octubre de 2004, 8:53:19


e.. Más información:
Soporte técnico de Microsoft
la verdad me parece ilogico que no pueda mostrar los registros de la


tabla
probe con una tabla mas simple con un solo campo y con un solo campo de
texto y ygual no funciona podrian decirme cual es el problem apor favor


que
esto me esta desquisiando necesito poder actualizar mi web con VFP y no
puedo hacerlo a causa de este problema les agradeso la atencion prestada


Respuesta Responder a este mensaje
#4 Jason Boris Rivas Otaiza
03/11/2004 - 18:57 | Informe spam
Muchisimas gracias por tu pronta respuesta es verdad todo lo que me indicas,
pero sigo sin poder mostrar los registros de mi tabla obiamente que esta
tabla tiene registros y forma parte de una base de datos, elegi esta tabla
para las prueba por que es la mas pequña y simple solo tiene 8 registros y
tiene esta estructura

Campo Nombre de campo Tipo Ancho Índice
1 CAT_ORDEN Entero 4 Sí
2 CAT_COD Carácter 6 Sí
3 CAT_NOMBRE Carácter 50 Sí
4 CAT_FOTO Carácter 100 Sí
5 CAT_DESCRIPCion Carácter 250 Sí
6 CAT_TIPO Carácter 1 Sí
7 CAT_ESTADO Carácter 1 Sí
8 CAT_SISTEMA Carácter 50 Sí

Como ves tiene una estructura simple y sus campos la mayoria son texto no se
que es lo que estoy haciendo mal este es el codigo que tengo despues de
aplicar las correciones que me indicaste

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file = "../includes/ADOVBS.INC"-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<%
dim con,sqlstr,cn
set cn=server.createobject("ADODB.connection")
cn.open "DRIVER={Microsoft Visual FoxPro
Driver};SourceTypeÛC;Exclusive=no;SourceDb="&
Server.mapPath("../BaseDatos/limaguns.dbc")
sqlstr="Select * From Categorias"
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open sqlstr,cn, adOpenStatic, adLockReadOnly, adCmdText
estado=rs.state
registros=rs.RecordCount
%>
Registros :<%=registros%><br>
Estado :<%=estado%><br>
<%
acum=0
do until rs.eof
acum=acum+1
%>
registro <%=acum%><br>
<%
rs.movenext
loop
%>
Estado : <%=estado%>
prueba : <%=rs("cat_nombre")%>

</body>
</html>
No se que mas se puede configurar para poder mostrar los registros con este
codigo como esta me sale el eror que indicas del Eof() acausa de que el
RecordCount esta en 0 o mas claramente dicho que el recordset no pudo
mostrar ningun registro, por favo no se que mas aser ayuda me a resolver
esto mi cuenta de correo es jasonrivas310@ hotmail . com tambien me
conecto al messenger con esa cuenta si tienes messenger y puedes conectarte
para podre hablar de esto te lo agradeceria muchisimo, tedoy muchas gracias
por la ayuda que ya me as brindado espero poder devolverte el favor algun
dia

"Sashka" escribió en el mensaje
news:
-
¡Importante!: Colabora con el grupo. Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Aca hay varias cosas...
1. do until rs.eof
acum=acum+1
%>
registro <%=acum%><br>
<%
loop
%>

No haces un rs.movenext... ese loop será infinito!!!!! ponle rs.movenext
encima del loop

2. Estas tratando de pintar el campo después de cerrar la conexión. al
hacerlo estas cerrando implícitamente el recordset... aunque deberías
hacerlo explícitamente y además setearlo a nothing (tanto el recordset
como la conexión).

3. Aun cuando cerraras la conexión despues de tratar de pintar el
campo te daría error porque el EOF sería true

4. La variable estado no se actualizará automáticamente te seguirá
devolviendo 1 (recordset abierto) aun cuando hayas cerrado la conexión

5. Si recordcount es cero, y tratas de pintar un campo te dará error de
BOF o EOF o registro borrado.

Sashka
MS MVP Access
MCP ASP.Net

"Jason Boris Rivas Otaiza" escribió en el
mensaje news:
muchas gracias por tu colavoracion pero al aplicar el archivo ADOVBS.INC y
configurar el recordset de esta forma

rs.Open sqlstr,cn, adOpenStatic, adLockReadOnly, adCmdText

Logre que el RecordCount lla no me devolviera -1 ahora me devuelve 0 su
pongo que esto quiere decir que no devolvio ningun registro, este es el
codigo que utiliso

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file = "../includes/ADOVBS.INC"-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
<%
dim con,sqlstr,cn
set cn=server.createobject("ADODB.connection")
cn.open "DRIVER={Microsoft Visual FoxPro
Driver};SourceTypeÛC;Exclusive=no;SourceDb="&
Server.mapPath("../BaseDatos/limaguns.dbc")

sqlstr="Select * From Categorias"
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open sqlstr,cn, adOpenStatic, adLockReadOnly, adCmdText
estado=rs.state
registros=rs.RecordCount
%>
Registros :<%=registros%><br>
Estado :<%=estado%><br>
<%
acum=0
do until rs.eof
acum=acum+1
%>
registro <%=acum%><br>
<%
loop
%>

<%cn.close%>
Estado :<%=estado%>
prueba :<%=rs("cat_nombre")%>
</body>
</html>

y sige saliendo un erro al tratar de mostrar algun registro en la linea
del codigo << prueba :<%=rs("cat_nombre")%> >>

a.. Tipo de error:
ADODB.Recordset (0x800A0CC1)
No se encontró el elemento en la colección que corresponde con el nombre
o el ordinal pedido.
/Limaguns/paginas/pruebaBD.asp, línea 42


b.. Tipo de explorador:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

c.. Página:
GET /Limaguns/paginas/pruebaBD.asp

d.. Hora:
miércoles, 03 de noviembre de 2004, 9:53:04


e.. Más información:
Soporte técnico de Microsoft
en realidad no me interesa el RecordCount lo unico que quiero es poder
cargar la tabla y mostrar sus registros y eso es lo que no puedo hacer
todo esto utilizando el recordset para poder utilizar las mismas paginas
de mi web que lla estan trabajando con una base de datos pero en acces lo
que necesito es pasarla a vfp por que mi sistema de la empresa esta en vfp
y para poder actualizar la pagina web por medio de vfp todos los dias por
que haciendo lo con la base de datos access es muy lento y dificil de
todos mosods muchas graias por tu interes para queder ayudarme te lo
agradesco muchisimo
"Sashka" escribió en el mensaje
news:uWypd$
¡Importante!: Colabora con el grupo. Contesta a este mensaje y dinos si
te
sirvió o no la respuesta dada. Muchas gracias
Para lo del recordcount mira mi respuesta a Sandra y Maria Claudia en
"Re: Numero de registros" y aunque lo del SP no se aplica a tu caso,
entenderás porque te devuelve -1... además te recomiendo mirar el enlace
que pongo al final...
Con respecto a lo de que no puedes "pintar" el contenido de los campos...
no he podido reproducir tu error, pero creo que lo que pasa es que el
interprete no entiende que quieres

<%="prueba : "+rs("cat_nombre")%> ¿? (ni yo!!) (aunque a mi me dá otro
error... Error de Microsoft VBScript en tiempo de ejecución (0x800A000D)

Pruebalo así...
prueba : <%=rs("cat_nombre")%>

Por otro lado... cual es la línea 25?? Porque yo estoy entendiendo que si
te da el -1 en el recordcount es que si se abrio la conexión y si se abrió
el recordset.

Sashka
MS MVP Access
MCP ASP.Net

"Jason Boris Rivas Otaiza" escribió en el
mensaje news:
> buenas tengo un problema qeu la verdad me esta volviendo loco, necesito
> cambiar la base de datos de mi web de acces a VFP, utilizando ODBC y
ADO,
> cree una pagina de prueba para ver como hacer la coneccion con VFP y
logre
> realizar la coneccion con la cual puedo insertar, actualizar y eliminar
> registros sin problemas pero por alguna razon que no entiendo no puedo
> recuperar los datos de la tabla no cual es el problema si puedo
> pranticamente modificar la tabla a mi antojo por que el Recodset no
puede
> recuperar registros de la tabla.
>
> este es el codigo asp que utilizo
>
> <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
> "http://www.w3.org/TR/html4/loose.dtd">
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html;
> <title>Documento sin t&iacute;tulo</title>
> </head>
>
> <body>
> <%
> dim con,sqlstr,cn
> set cn=server.createobject("ADODB.connection")
> 'cn.open "Provider=MSDASQL.1;Persist SecurityInfo=False;Extended
> Properties=Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB="&
> Server.mapPath("../BaseDatos/")&
>
";SourceTypeÛF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
>
> cn.open "DRIVER={Microsoft Visual FoxPro
> Driver};SourceTypeÛC;Exclusive=no;SourceDb="&
> Server.mapPath("../BaseDatos/limaguns.dbc")
> 'cn.execute "insert into marcas(marca_nombre) values('prueba')"
> 'cn.execute "Select Prueba.prueba From Prueba"
>
> sqlstr="Select * From categorias"
> Set rs=Server.CreateObject("ADODB.Recordset")
> rs.open sqlstr,cn
> registros=rs.RecordCount
> %>
> Registros :<%=registros%>
> <%'="prueba : "+rs("cat_nombre")%>
> <%cn.close%>
> </body>
> </html>
>
> su puesta mente deveria de darme el numero de registros obtenidos pero
> sale -1 y si trato de mostrar el contenido de algun campo sale este
error
>
> HTTP 500.100. Error interno del servidor: error de ASP
> Servicios de Internet Information Server
> Información técnica (para personal de soporte técnico)
> a.. Tipo de error:
> (0x80020009)
> Ocurrió una excepción.
> /LimaGuns/paginas/pruebaBD.asp, línea 25
>
>
> b.. Tipo de explorador:
> Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
>
> c.. Página:
> GET /LimaGuns/paginas/pruebaBD.asp
>
> d.. Hora:
> viernes, 29 de octubre de 2004, 8:53:19
>
>
> e.. Más información:
> Soporte técnico de Microsoft
> la verdad me parece ilogico que no pueda mostrar los registros de la
tabla
> probe con una tabla mas simple con un solo campo y con un solo campo de
> texto y ygual no funciona podrian decirme cual es el problem apor favor
que
> esto me esta desquisiando necesito poder actualizar mi web con VFP y no
> puedo hacerlo a causa de este problema les agradeso la atencion
prestada
>
>

Respuesta Responder a este mensaje
#5 Sashka
03/11/2004 - 19:46 | Informe spam
¡Importante!: Colabora con el grupo. Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Veamos... una prueba más
reemplaza todo lo que tienes entre el rs.open y </body> por lo siguiente...
(y por favor!!! nunca dejes de cerrar y setear a Nothing tus objetos)

estado=rs.state
registros=rs.RecordCount
%>
Registros :<%=registros%><br>
Estado :<%=estado%><br>
<%
if not rs.eof and not rs.bof then
acum=0
do until rs.eof
acum=acum+1
%>
prueba : <%=rs("bookid")%>
<br>
registro <%=acum%><br>
<%
rs.movenext
loop
else
response.write "No parece haber registros"
end if
rs.close
cn.close
estado = rs.state
set rs = Nothing
set cn= Nothing
%>
Estado : <%=estado%>

Sashka
MS MVP Access
MCP ASP.Net

"Jason Boris Rivas Otaiza" escribió en el
mensaje news:
Muchisimas gracias por tu pronta respuesta es verdad todo lo que me
indicas, pero sigo sin poder mostrar los registros de mi tabla obiamente
que esta tabla tiene registros y forma parte de una base de datos, elegi
esta tabla para las prueba por que es la mas pequña y simple solo tiene 8
registros y tiene esta estructura

Campo Nombre de campo Tipo Ancho Índice
1 CAT_ORDEN Entero 4 Sí
2 CAT_COD Carácter 6 Sí
3 CAT_NOMBRE Carácter 50 Sí
4 CAT_FOTO Carácter 100 Sí
5 CAT_DESCRIPCion Carácter 250 Sí
6 CAT_TIPO Carácter 1 Sí
7 CAT_ESTADO Carácter 1 Sí
8 CAT_SISTEMA Carácter 50 Sí

Como ves tiene una estructura simple y sus campos la mayoria son texto no
se que es lo que estoy haciendo mal este es el codigo que tengo despues de
aplicar las correciones que me indicaste

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file = "../includes/ADOVBS.INC"-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<%
dim con,sqlstr,cn
set cn=server.createobject("ADODB.connection")
cn.open "DRIVER={Microsoft Visual FoxPro
Driver};SourceTypeÛC;Exclusive=no;SourceDb="&
Server.mapPath("../BaseDatos/limaguns.dbc")
sqlstr="Select * From Categorias"
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open sqlstr,cn, adOpenStatic, adLockReadOnly, adCmdText
estado=rs.state
registros=rs.RecordCount
%>
Registros :<%=registros%><br>
Estado :<%=estado%><br>
<%
acum=0
do until rs.eof
acum=acum+1
%>
registro <%=acum%><br>
<%
rs.movenext
loop
%>
Estado : <%=estado%>
prueba : <%=rs("cat_nombre")%>

</body>
</html>
No se que mas se puede configurar para poder mostrar los registros con
este codigo como esta me sale el eror que indicas del Eof() acausa de que
el RecordCount esta en 0 o mas claramente dicho que el recordset no pudo
mostrar ningun registro, por favo no se que mas aser ayuda me a resolver
esto mi cuenta de correo es jasonrivas310@ hotmail . com tambien
me conecto al messenger con esa cuenta si tienes messenger y puedes
conectarte para podre hablar de esto te lo agradeceria muchisimo, tedoy
muchas gracias por la ayuda que ya me as brindado espero poder devolverte
el favor algun dia

"Sashka" escribió en el mensaje
news:
-
¡Importante!: Colabora con el grupo. Contesta a este mensaje y dinos si
te
sirvió o no la respuesta dada. Muchas gracias
Aca hay varias cosas...
1. do until rs.eof
acum=acum+1
%>
registro <%=acum%><br>
<%
loop
%>

No haces un rs.movenext... ese loop será infinito!!!!! ponle rs.movenext
encima del loop

2. Estas tratando de pintar el campo después de cerrar la conexión.
al hacerlo estas cerrando implícitamente el recordset... aunque deberías
hacerlo explícitamente y además setearlo a nothing (tanto el
recordset como la conexión).

3. Aun cuando cerraras la conexión despues de tratar de pintar el
campo te daría error porque el EOF sería true

4. La variable estado no se actualizará automáticamente te seguirá
devolviendo 1 (recordset abierto) aun cuando hayas cerrado la
conexión

5. Si recordcount es cero, y tratas de pintar un campo te dará error de
BOF o EOF o registro borrado.

Sashka
MS MVP Access
MCP ASP.Net

"Jason Boris Rivas Otaiza" escribió en el
mensaje news:
muchas gracias por tu colavoracion pero al aplicar el archivo ADOVBS.INC
y configurar el recordset de esta forma

rs.Open sqlstr,cn, adOpenStatic, adLockReadOnly, adCmdText

Logre que el RecordCount lla no me devolviera -1 ahora me devuelve 0 su
pongo que esto quiere decir que no devolvio ningun registro, este es el
codigo que utiliso

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file = "../includes/ADOVBS.INC"-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
<%
dim con,sqlstr,cn
set cn=server.createobject("ADODB.connection")
cn.open "DRIVER={Microsoft Visual FoxPro
Driver};SourceTypeÛC;Exclusive=no;SourceDb="&
Server.mapPath("../BaseDatos/limaguns.dbc")

sqlstr="Select * From Categorias"
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open sqlstr,cn, adOpenStatic, adLockReadOnly, adCmdText
estado=rs.state
registros=rs.RecordCount
%>
Registros :<%=registros%><br>
Estado :<%=estado%><br>
<%
acum=0
do until rs.eof
acum=acum+1
%>
registro <%=acum%><br>
<%
loop
%>

<%cn.close%>
Estado :<%=estado%>
prueba :<%=rs("cat_nombre")%>
</body>
</html>

y sige saliendo un erro al tratar de mostrar algun registro en la linea
del codigo << prueba :<%=rs("cat_nombre")%> >>

a.. Tipo de error:
ADODB.Recordset (0x800A0CC1)
No se encontró el elemento en la colección que corresponde con el nombre
o el ordinal pedido.
/Limaguns/paginas/pruebaBD.asp, línea 42


b.. Tipo de explorador:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

c.. Página:
GET /Limaguns/paginas/pruebaBD.asp

d.. Hora:
miércoles, 03 de noviembre de 2004, 9:53:04


e.. Más información:
Soporte técnico de Microsoft
en realidad no me interesa el RecordCount lo unico que quiero es poder
cargar la tabla y mostrar sus registros y eso es lo que no puedo hacer
todo esto utilizando el recordset para poder utilizar las mismas paginas
de mi web que lla estan trabajando con una base de datos pero en acces lo
que necesito es pasarla a vfp por que mi sistema de la empresa esta en
vfp y para poder actualizar la pagina web por medio de vfp todos los dias
por que haciendo lo con la base de datos access es muy lento y dificil de
todos mosods muchas graias por tu interes para queder ayudarme te lo
agradesco muchisimo
"Sashka" escribió en el mensaje
news:uWypd$
¡Importante!: Colabora con el grupo. Contesta a este mensaje y dinos si
te
sirvió o no la respuesta dada. Muchas gracias
Para lo del recordcount mira mi respuesta a Sandra y Maria Claudia en
"Re: Numero de registros" y aunque lo del SP no se aplica a tu caso,
entenderás porque te devuelve -1... además te recomiendo mirar el enlace
que pongo al final...
Con respecto a lo de que no puedes "pintar" el contenido de los
campos... no he podido reproducir tu error, pero creo que lo que pasa es
que el interprete no entiende que quieres

<%="prueba : "+rs("cat_nombre")%> ¿? (ni yo!!) (aunque a mi me dá otro
error... Error de Microsoft VBScript en tiempo de ejecución (0x800A000D)

Pruebalo así...
prueba : <%=rs("cat_nombre")%>

Por otro lado... cual es la línea 25?? Porque yo estoy entendiendo que
si te da el -1 en el recordcount es que si se abrio la conexión y si se
abrió el recordset.

Sashka
MS MVP Access
MCP ASP.Net

"Jason Boris Rivas Otaiza" escribió en el
mensaje news:
> buenas tengo un problema qeu la verdad me esta volviendo loco,
necesito
> cambiar la base de datos de mi web de acces a VFP, utilizando ODBC y
ADO,
> cree una pagina de prueba para ver como hacer la coneccion con VFP y
logre
> realizar la coneccion con la cual puedo insertar, actualizar y
eliminar
> registros sin problemas pero por alguna razon que no entiendo no puedo
> recuperar los datos de la tabla no cual es el problema si puedo
> pranticamente modificar la tabla a mi antojo por que el Recodset no
puede
> recuperar registros de la tabla.
>
> este es el codigo asp que utilizo
>
> <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
> "http://www.w3.org/TR/html4/loose.dtd">
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html;
> <title>Documento sin t&iacute;tulo</title>
> </head>
>
> <body>
> <%
> dim con,sqlstr,cn
> set cn=server.createobject("ADODB.connection")
> 'cn.open "Provider=MSDASQL.1;Persist SecurityInfo=False;Extended
> Properties=Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB="&
> Server.mapPath("../BaseDatos/")&
>
";SourceTypeÛF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
>
> cn.open "DRIVER={Microsoft Visual FoxPro
> Driver};SourceTypeÛC;Exclusive=no;SourceDb="&
> Server.mapPath("../BaseDatos/limaguns.dbc")
> 'cn.execute "insert into marcas(marca_nombre) values('prueba')"
> 'cn.execute "Select Prueba.prueba From Prueba"
>
> sqlstr="Select * From categorias"
> Set rs=Server.CreateObject("ADODB.Recordset")
> rs.open sqlstr,cn
> registros=rs.RecordCount
> %>
> Registros :<%=registros%>
> <%'="prueba : "+rs("cat_nombre")%>
> <%cn.close%>
> </body>
> </html>
>
> su puesta mente deveria de darme el numero de registros obtenidos pero
> sale -1 y si trato de mostrar el contenido de algun campo sale este
error
>
> HTTP 500.100. Error interno del servidor: error de ASP
> Servicios de Internet Information Server
> Información técnica (para personal de soporte técnico)
> a.. Tipo de error:
> (0x80020009)
> Ocurrió una excepción.
> /LimaGuns/paginas/pruebaBD.asp, línea 25
>
>
> b.. Tipo de explorador:
> Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
>
> c.. Página:
> GET /LimaGuns/paginas/pruebaBD.asp
>
> d.. Hora:
> viernes, 29 de octubre de 2004, 8:53:19
>
>
> e.. Más información:
> Soporte técnico de Microsoft
> la verdad me parece ilogico que no pueda mostrar los registros de la
tabla
> probe con una tabla mas simple con un solo campo y con un solo campo
de
> texto y ygual no funciona podrian decirme cual es el problem apor
favor que
> esto me esta desquisiando necesito poder actualizar mi web con VFP y
no
> puedo hacerlo a causa de este problema les agradeso la atencion
prestada
>
>





Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida