Error al mostrar registros de una tabla DBF

21/10/2004 - 19:32 por Jason Boris Rivas Otaiza | Informe spam
Tengo un problema he creado una coneccion con VFP, al parecer la coneccion
funciona porque puedo insertar y eliminar registros, pero lo que quiero en
relalidad es solo mostrar los registro de mi tabla en la web pero no puedo
apesar de que la coneccion con la base de datos ya se realiso y puedo
modificar los registros pero no puedo mostrar registros, trato de crear un
record set y este no funciona no se porque por favor podrian ayudarme este
es el codigo que utilizo

<%
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 marcas"
cn.execute "insert into marcas(marca_nombre) values('prueba')"

Set rs = Server.CreateObject("ADODB.Recordset")
rs.open sqlstr,cn
registros=rs.RecordCount
%>
<%=registros%>
<%=rs("marca_nombre")%>

El resultado de RecordCount es -1 es decir que el record set no logro
recuperar ningun registro pero la coneccion funciona por que e podido
insertar, eliminar, y actualizar registros de esta tabla pero no puedo
listar los registro sque es lo que realmente necesito que puedo hacer para
resolver este problema esta es la estructura de esta tabla

Estructura de la tabla: D:\WWROOT\LIMAGUNSCOM\WWW\BASEDATOS\MARCAS.DBF
Nº registros de datos: 275
Última actualización: 10/21/04
Página de códigos: 1252
Campo Nombre de campo Tipo Ancho Nulos
1 MARCA_COD Carácter 50 si
2 MARCA_NOMBRE Carácter 50 si
3 MARCA_FOTO Carácter 50 si
4 MARCA_ESTADO Carácter 2 si
5 MARCA_BGCOLOR Carácter 50 si


en realidad son 6 tablas las que contienen la informacion de la pagina web
pero con ninguna me funciona por favor diganme si me pueden ayudar muchas
gracias

Preguntas similare

Leer las respuestas

#1 Sebastian E. Garcia
21/10/2004 - 19:41 | Informe spam
Estoy en algo parecido a lo tuyo, pero en lugar de usar ADO utilizo una DLL
hecha en VFP que maneja los dbf's de forma nativa. No te resultaria mas util
hacer una DLL con funciones en VFP que pueda hacer todo eso? Por ejemplo,
una funcion que inserte datos otra que devuelva los registros de una
consulta, etc. Y de esa manera no tendrias que asegurarte si la conexion se
pudo realizar o no pq los dbf son nativos de VFP. Con hacer un
Server.CreateObject() y asegurarte que el objeto exista bastaria.
Saludos,

Sebastian E. Garcia

"Jason Boris Rivas Otaiza" escribió en el
mensaje news:%
Tengo un problema he creado una coneccion con VFP, al parecer la coneccion
funciona porque puedo insertar y eliminar registros, pero lo que quiero en
relalidad es solo mostrar los registro de mi tabla en la web pero no puedo
apesar de que la coneccion con la base de datos ya se realiso y puedo
modificar los registros pero no puedo mostrar registros, trato de crear un
record set y este no funciona no se porque por favor podrian ayudarme este
es el codigo que utilizo

<%
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 marcas"
cn.execute "insert into marcas(marca_nombre) values('prueba')"

Set rs = Server.CreateObject("ADODB.Recordset")
rs.open sqlstr,cn
registros=rs.RecordCount
%>
<%=registros%>
<%=rs("marca_nombre")%>

El resultado de RecordCount es -1 es decir que el record set no logro
recuperar ningun registro pero la coneccion funciona por que e podido
insertar, eliminar, y actualizar registros de esta tabla pero no puedo
listar los registro sque es lo que realmente necesito que puedo hacer para
resolver este problema esta es la estructura de esta tabla

Estructura de la tabla: D:\WWROOT\LIMAGUNSCOM\WWW\BASEDATOS\MARCAS.DBF
Nº registros de datos: 275
Última actualización: 10/21/04
Página de códigos: 1252
Campo Nombre de campo Tipo Ancho Nulos
1 MARCA_COD Carácter 50 si
2 MARCA_NOMBRE Carácter 50 si
3 MARCA_FOTO Carácter 50 si
4 MARCA_ESTADO Carácter 2 si
5 MARCA_BGCOLOR Carácter 50 si


en realidad son 6 tablas las que contienen la informacion de la pagina web
pero con ninguna me funciona por favor diganme si me pueden ayudar muchas
gracias


Respuesta Responder a este mensaje
#2 Jason Boris Rivas Otaiza
21/10/2004 - 21:13 | Informe spam
La verdad es que no tengo la menor idea de los que me estas comentando se
que VFP puede crear componentes dll que podemos registrar en windows y
ejecutar en programas de vfp o cualquiero otro que acepte dll, pero no se
como hacer una dll y poder ejecutar sus funciones en la web en todo caso me
darias alguna orientacion de como realizar esto, alguna documentcion que
conozcas o algun ejemplo sensillo que me puedas proporcionar por favor

en todo caso agradesco mucho tu intencion de ayudarme por esto muchisimas
gracias siempre es bueno ver que alguien se interesea en ayudar a otros


"Sebastian E. Garcia" escribió en el mensaje
news:%
Estoy en algo parecido a lo tuyo, pero en lugar de usar ADO utilizo una
DLL
hecha en VFP que maneja los dbf's de forma nativa. No te resultaria mas
util
hacer una DLL con funciones en VFP que pueda hacer todo eso? Por ejemplo,
una funcion que inserte datos otra que devuelva los registros de una
consulta, etc. Y de esa manera no tendrias que asegurarte si la conexion
se
pudo realizar o no pq los dbf son nativos de VFP. Con hacer un
Server.CreateObject() y asegurarte que el objeto exista bastaria.
Saludos,

Sebastian E. Garcia

"Jason Boris Rivas Otaiza" escribió en el
mensaje news:%
Tengo un problema he creado una coneccion con VFP, al parecer la
coneccion
funciona porque puedo insertar y eliminar registros, pero lo que quiero
en
relalidad es solo mostrar los registro de mi tabla en la web pero no
puedo
apesar de que la coneccion con la base de datos ya se realiso y puedo
modificar los registros pero no puedo mostrar registros, trato de crear
un
record set y este no funciona no se porque por favor podrian ayudarme
este
es el codigo que utilizo

<%
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 marcas"
cn.execute "insert into marcas(marca_nombre) values('prueba')"

Set rs = Server.CreateObject("ADODB.Recordset")
rs.open sqlstr,cn
registros=rs.RecordCount
%>
<%=registros%>
<%=rs("marca_nombre")%>

El resultado de RecordCount es -1 es decir que el record set no logro
recuperar ningun registro pero la coneccion funciona por que e podido
insertar, eliminar, y actualizar registros de esta tabla pero no puedo
listar los registro sque es lo que realmente necesito que puedo hacer
para
resolver este problema esta es la estructura de esta tabla

Estructura de la tabla: D:\WWROOT\LIMAGUNSCOM\WWW\BASEDATOS\MARCAS.DBF
Nº registros de datos: 275
Última actualización: 10/21/04
Página de códigos: 1252
Campo Nombre de campo Tipo Ancho Nulos
1 MARCA_COD Carácter 50 si
2 MARCA_NOMBRE Carácter 50 si
3 MARCA_FOTO Carácter 50 si
4 MARCA_ESTADO Carácter 2 si
5 MARCA_BGCOLOR Carácter 50 si


en realidad son 6 tablas las que contienen la informacion de la pagina
web
pero con ninguna me funciona por favor diganme si me pueden ayudar muchas
gracias






Respuesta Responder a este mensaje
#3 Sebastian E. Garcia
21/10/2004 - 22:24 | Informe spam
Podes hacer esta prueba. Cualquier duda la podemos seguir por email pq no
creo que este sea el foro correspondiente para esto. En todo caso deberiamos
mudarnos al de VFP. :)
Desde VFP crea un PROYECTO NUEVO llamado PRUEBA y desde ese proyecto crea un
PRG que tenga estas lineas:

Define Class web As Custom Olepublic

Dimension a_marcas[01, 05]

Procedure Devuelve_Datos() As Number

Local lcAlias, lnTotReg
lcAlias = Sys(2015)

Select 0
Use "D:\WWROOT\LIMAGUNSCOM\WWW\BASEDATOS\MARCAS.DBF" Shared Alias
(lcAlias)

Select * From (lcAlias) Into Array This.a_marcas
lnTotReg = _Tally

Use In (lcAlias)

Return (lnTotReg)

EndProc

EndDefine

Compila ese codigo como DLL Multi-Threaded. Deberia crearte una DLL lamada
PRUEBA.DLL. Una vez hecho eso prueba desde un ASP este codigo:

<%
Option Explicit
Dim objVFP, lnCantidad, x

Set objVFP = Server.CreateObject("prueba.web")
If IsObject(objVFP) Then
lnCantidad = objVFP.Devuelve_Datos()

If lnCantidad > 0 Then

For x = 1 To lnCantidad

Response.Write("Codigo: " & objVFP.a_marcas(x, 1))
Response.Write("Nombre: " & objVFP.a_marcas(x, 2))
Response.Write("Foto: " & objVFP.a_marcas(x, 3))
Response.Write("Estado: " & objVFP.a_marcas(x, 4))
Response.Write("BGColor: " & objVFP.a_marcas(x, 5) & <BR>)

Next

End If

EndIf

%>

Creo que con eso, si no cometi ningun error al tipear y si no me olvido
nada, deberia ser suficiente. Falta estetica en el ASP, pero eso es lo de
menos.
Ahora aclaro antes que peguen el grito otros:
1) Uso esto cuando la cantidad de datos que debo tomar de las tablas es
pequeña. No olvides que VFP tiene un limite para la cantidad de elementos de
un array. Algo asi como 65 mil elementos (mas o menos) para todas las
versiones actuales de VFP salvo la proxima, la version 9, que deja de tener
estos limites fijos y pasa a depender de los limites de memoria de cada
maquina.
2) Lo ideal seria que se use XML para la transferencia de datos.
VisualFoxPro 8 tiene los llamados XMLAdapter's que estan muy buenos y
sencillos cuando se los debe implementar. Pero todo tiene su costo...del
lado del ASP tendrias que trabajar con estos datos y hay momentos donde se
complica. Pero no es imposible.

Despues de todo esto, talvez desees seguir con ADO y no te lo reprocho. Hay
veces donde demuestra ser bueno, aunque a mi particularmente no me guste.
Pero es como todo...en el lugar adecuado, en el momento adecuado seguramente
sea mejor que otras posibilidades/herramientas.

Recuerda que asumo que las pruebas las haces en la misma maquina para todo.
Sino la DLL la deberias registrar en la misma maquina donde este instalado
el IIS.

Seguramente alguna otra cosa me olvide, pero podes consultarlo con libertad.
Saludos,

Sebastian E. Garcia

"Jason Boris Rivas Otaiza" escribió en el
mensaje news:
La verdad es que no tengo la menor idea de los que me estas comentando se
que VFP puede crear componentes dll que podemos registrar en windows y
ejecutar en programas de vfp o cualquiero otro que acepte dll, pero no se
como hacer una dll y poder ejecutar sus funciones en la web en todo caso


me
darias alguna orientacion de como realizar esto, alguna documentcion que
conozcas o algun ejemplo sensillo que me puedas proporcionar por favor

en todo caso agradesco mucho tu intencion de ayudarme por esto muchisimas
gracias siempre es bueno ver que alguien se interesea en ayudar a otros


"Sebastian E. Garcia" escribió en el mensaje
news:%
> Estoy en algo parecido a lo tuyo, pero en lugar de usar ADO utilizo una
> DLL
> hecha en VFP que maneja los dbf's de forma nativa. No te resultaria mas
> util
> hacer una DLL con funciones en VFP que pueda hacer todo eso? Por


ejemplo,
> una funcion que inserte datos otra que devuelva los registros de una
> consulta, etc. Y de esa manera no tendrias que asegurarte si la conexion
> se
> pudo realizar o no pq los dbf son nativos de VFP. Con hacer un
> Server.CreateObject() y asegurarte que el objeto exista bastaria.
> Saludos,
>
> Sebastian E. Garcia
>
> "Jason Boris Rivas Otaiza" escribió en el
> mensaje news:%
>> Tengo un problema he creado una coneccion con VFP, al parecer la
>> coneccion
>> funciona porque puedo insertar y eliminar registros, pero lo que quiero
>> en
>> relalidad es solo mostrar los registro de mi tabla en la web pero no
>> puedo
>> apesar de que la coneccion con la base de datos ya se realiso y puedo
>> modificar los registros pero no puedo mostrar registros, trato de crear
>> un
>> record set y este no funciona no se porque por favor podrian ayudarme
>> este
>> es el codigo que utilizo
>>
>> <%
>> 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 marcas"
>> cn.execute "insert into marcas(marca_nombre) values('prueba')"
>>
>> Set rs = Server.CreateObject("ADODB.Recordset")
>> rs.open sqlstr,cn
>> registros=rs.RecordCount
>> %>
>> <%=registros%>
>> <%=rs("marca_nombre")%>
>>
>> El resultado de RecordCount es -1 es decir que el record set no logro
>> recuperar ningun registro pero la coneccion funciona por que e podido
>> insertar, eliminar, y actualizar registros de esta tabla pero no puedo
>> listar los registro sque es lo que realmente necesito que puedo hacer
>> para
>> resolver este problema esta es la estructura de esta tabla
>>
>> Estructura de la tabla: D:\WWROOT\LIMAGUNSCOM\WWW\BASEDATOS\MARCAS.DBF
>> Nº registros de datos: 275
>> Última actualización: 10/21/04
>> Página de códigos: 1252
>> Campo Nombre de campo Tipo Ancho Nulos
>> 1 MARCA_COD Carácter 50 si
>> 2 MARCA_NOMBRE Carácter 50 si
>> 3 MARCA_FOTO Carácter 50 si
>> 4 MARCA_ESTADO Carácter 2 si
>> 5 MARCA_BGCOLOR Carácter 50 si
>>
>>
>> en realidad son 6 tablas las que contienen la informacion de la pagina
>> web
>> pero con ninguna me funciona por favor diganme si me pueden ayudar


muchas
>> gracias
>>
>>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida