Foros del Web » Programando para Internet » ASP Clásico »

ASP y mySQL, no me deja insertar campos

Estas en el tema de ASP y mySQL, no me deja insertar campos en el foro de ASP Clásico en Foros del Web. Soy nuevo en ASP, y estoy probando a modificar el libro de visitas de desarrolloweb para asp, y me encuentro con el problema de que ...
  #1 (permalink)  
Antiguo 20/02/2004, 12:41
 
Fecha de Ingreso: enero-2004
Mensajes: 50
Antigüedad: 20 años, 4 meses
Puntos: 0
ASP y mySQL, no me deja insertar campos

Soy nuevo en ASP, y estoy probando a modificar el libro de visitas de desarrolloweb para asp, y me encuentro con el problema de que todo funciona, leer, borrar, pero a la hora de insertar nuevos registros me da el siguiente error:

Tipo de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
El controlador ODBC no admite las propiedades solicitadas.
/addmensaje.asp, line 43


Esa parte del programa la tengo de esta manera:

36 Set Conn = Server.CreateObject("ADODB.Connection")
37 Conn.ConnectionString = "DSN=libvis"
38 Conn.Open
39 set rs=Createobject("ADODB.Recordset")
40 rs.CursorType = adOpenKeyset
41 rs.LockType = adLockOptimistic
42
43 rs.open "mensajes",Conn
44 rs.addnew
45
46 rs("Nombre")=Nombre
47 rs("email")=email
48 rs("Pais")=Pais
49 rs("url")=url
50 rs("Asunto")=Asunto
51 rs("Mensaje")=Mensaje
52 rs("Fecha")=Date()
53 rs.update
54 rs.close

Muchas gracias anticipadas a todos y enhorabuena a los miembros de éste foro, me habeis proporciona siempre buenas y rápidas soluciones a mis problemas.
  #2 (permalink)  
Antiguo 20/02/2004, 13:39
Avatar de kalijunfan  
Fecha de Ingreso: febrero-2004
Ubicación: Montevideo, Uruguay
Mensajes: 96
Antigüedad: 20 años, 3 meses
Puntos: 0
Estimado josemgd, seguramente te estés olvidando de incluir el archivo adovbs.inc en tu página asp, necesitas este archivo para poder utilizar las constantes que estás utilizando para definir el tipo de cursor y de bloqueo del recordset.
Si no tienes este archivo incluído en tu página asp no te preocupes simplemente cambia las constantes por sus valores reales, entonces en lugar de poner:

40 rs.CursorType = adOpenKeyset
41 rs.LockType = adLockOptimistic

deberías de poner:

40 rs.CursorType = 1
41 rs.LockType = 3

Eso solucionará tu problema seguramente.

Saludos
  #3 (permalink)  
Antiguo 20/02/2004, 15:07
 
Fecha de Ingreso: enero-2004
Mensajes: 50
Antigüedad: 20 años, 4 meses
Puntos: 0
Lo acabo de probar y sigo con el mismo error.

¿De donde saco el archivo adovbs.inc ?
  #4 (permalink)  
Antiguo 27/02/2004, 10:02
Avatar de kalijunfan  
Fecha de Ingreso: febrero-2004
Ubicación: Montevideo, Uruguay
Mensajes: 96
Antigüedad: 20 años, 3 meses
Puntos: 0
Estimado josemgd, no te preocupes por el archivo adovbs.inc. Estuve viendo el código del libro de visitas de desarrolloweb y si mantenés el mismo código ya tenés las constantes necesarias definidas en las primeras líneas del código.

Pero en este código están usando una base de datos de access y en el asunto de tu mensaje decís que estás usando mysql, esto es una complicación, aunque no lo creas.

MySql es de dar esta clase de errores con asp cuando estás trabajando con recordsets como es tu caso. Lo que yo te recomiendo es que utilices una consulta sql para insertar el registro en la base de datos, ya que es mucho más sencillo, más rápido en ejecución y dudo que tengas problemas con mysql.

El código te quedaría así:

35 Dim strSql
36 Set Conn = Server.CreateObject("ADODB.Connection")
37 Conn.ConnectionString = "DSN=libvis"
38 Conn.Open
39 strSql = "INSERT INTO mensajes (Nombre, email, Pais, url, Asunto, Mensaje, Fecha) VALUES ('" & Nombre & "', '" & email & "', '" & Pais & "', '" & url & "', '" & Asunto & "', '" & Mensaje & "', #" & Date() & "#)
40 Conn.execute strSql

Y listo, no tenés que estar preocupandote de usar recordsets para insertar el registro en la base de datos.
Esto debería de funcionar, lo que sí vas a tener que hacer es asegurarte que los campos de texto en la base de datos acepten el ingreso de valores nulos, pero salvo eso no deberías de tener ningún problema.

Suerte

P.D.: Si vas a trabajar con bases de datos MySQL te recomiendo que lo hagas con PHP en lugar de ASP, funciona mucho mejor. Pero si querés seguir usando ASP, en ese caso, te conviene usar bases de datos de Access o SQL Server.
  #5 (permalink)  
Antiguo 27/02/2004, 11:37
 
Fecha de Ingreso: enero-2004
Mensajes: 50
Antigüedad: 20 años, 4 meses
Puntos: 0
Perfecto ahora si funciona. Muchas gracias por todo
  #6 (permalink)  
Antiguo 09/04/2005, 15:27
 
Fecha de Ingreso: octubre-2003
Ubicación: Bucaramanga, Santander, Colombia, Suramérica
Mensajes: 20
Antigüedad: 20 años, 8 meses
Puntos: 0
¿y si aún quiero hacerlo así?

saludos desde Colombia

estoy con MySQL 4.1.10 y MyODBC 3.51.11 y tengo el mismo problema: parece que sólo acepta que el CursorType sea 0 (el por defecto).
una solución es la que tú diste, pero...
qué pasa si de todas maneras quiero un recordset dinámico (1,2 o 3)?

gracias.
  #7 (permalink)  
Antiguo 10/04/2005, 19:41
Avatar de kalijunfan  
Fecha de Ingreso: febrero-2004
Ubicación: Montevideo, Uruguay
Mensajes: 96
Antigüedad: 20 años, 3 meses
Puntos: 0
Sonrisa

bueno sebastown, entonces tenés un problema, porque mysql maneja los recordsets de una manera muy distinta a access o sqlserver.

una de las principales diferencias es justamente que en el caso de los tipos de cursores son todos readonly ya que las actualizaciones de la base de datos se realizan por medio de consultas sql.

te podría ayudar mejor si supiera para qué necesitás un cursor dinámico, que salvo que sea para actualizar el registro en la base de datos (que lo podés hacer perfectamente con una consulta sql) no veo para qué lo podés necesitar.

de todas formas a ambos quisiera darles un consejo, si van a utilizar bases de datos de mysql les recomiendo utilizar php, si van a usar asp les conviene usar sqlserver, access o en su defecto xml. todo depende del servidor en que están trabajando, pero como están usando asp supongo que debe ser un servidor windows ya que si están usando asp en linux es una pésima, pero muy pésima idea.

tengan en cuenta que asp es un producto de microsoft y por consiguiente está enfocado a sus propios productos (o sea access y sqlserver) ofreciendo "compatibilidad" con otras bases de datos, pero con ninguna base de datos va a funcionar tan bien como con las suyas propias.

en el caso de php, que funciona bastante mejor y es muy superior a asp si bien está desarrollado enfocado principalmente a funcionar mejor sobre una plataforma linux y con mysql como base de datos con la que mejor compatibilidad tiene, puede y siempre funciona igualmente bien en windows, y si su servidor es windows y tiene bases de datos de mysql seguramente tenga también php, por eso es que les recomiendo fervientemente que si usan bases de datos de mysql utilicen php, que es incluso hasta más fácil de programar que asp.

personalmente cuando desarrollo aplicaciones para sitios webs siempre me manejo con un par de simples reglas:

servidor windows = asp = sqlserver o access o xml
servidor linux = php = mysql

tan simple como eso y siempre obtengo la mejor performance en ambos casos

si quieren mayor ayuda por favor aclaren mejor (con ejemplos de código aún mejor) lo que necesitan hacer, ya que todo depende de la tarea a realizar.

saludos y espero que mis consejos les hayan sido útiles.

  #8 (permalink)  
Antiguo 10/04/2005, 23:45
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
excelente respuesta, kalijunfan.PHP más fácil que ASP?
  #9 (permalink)  
Antiguo 11/04/2005, 07:20
Avatar de kalijunfan  
Fecha de Ingreso: febrero-2004
Ubicación: Montevideo, Uruguay
Mensajes: 96
Antigüedad: 20 años, 3 meses
Puntos: 0
la superioridad de php sobre asp

por supuesto trasgukabi, php es más rápido para programar porque requiere mucho menos código y no te tenés que estar calentando la cabeza con los malditos Server.CreateObject y los Set loquesea = Nothing.
mirá, por ejemplo si querés leer un archivo de texto en asp tenés que usar este código:

Código PHP:
Const ParaLeer //constante a utilizar para leer el archivo
Dim fsoftextoleido //declaración de variables
Set fso CreateObject("Scripting.FileSystemObject"//creación del objecto filesystemobject
Set f fso.OpenTextFile("c:\prueba.txt"ParaLeer//creo otro objecto para leer el archivo
textoleido =  f.ReadAll //leo todo el contenido del archivo
Set f Nothing //destruyo el objeto con que leí el archivo
Set fso Nothing //destruyo el objeto filesystemobject
Response.write textoleido //escribo lo que leí del archivo 
y para hacerlo en php usás este:

Código PHP:
$archivo fopen("prueba.txt","r");  //Abrimos el fichero en modo lectura 
$textoleido fread($archivofilesize($archivo)); //leo todo el contenido del archivo
fclose($archivo); //cierro el archivo, innecesario ya que php lo cierra automáticamente al finalizar la ejecución del script
echo $textoleido//escribo lo que leí del archivo 
y así con todo, con las bases de datos ni que hablar, en asp es mucho más el código que tenés que utilizar todavía. eso sin mencionar las otras ventajas que tiene php, como por ejemplo que podés subir archivos al servidor, utilizar funciones de red como ftp o hacer un whois, ping, traceroute o hasta un finger a un servidor sin necesidad de usar componentes específicos para ello ya que php trae un montón de funciones de red integradas en el lengüaje propiamente dicho.
y no te olvides que php te permite comprimir (como si de un archivo zip se tratara) al vuelo el contenido de tus páginas para que sean mucho más livianas y el servidor las ejecute mucho más rápido
y si querés hacer cualquier cosa de las mencionadas anteriormente en asp tenés que estar usando componentes de terceros (sin mencionar que tenés que aprender a usarlos y los errores integrados que ellos puedan tener) ya que no trae ninguna de estas funciones integradas, o tenés que usar el lento windows scripting host y eso siempre y cuando en tu servidor lo permitan.
ojo, mirá que yo he programado en asp la mayor parte de mi vida como desarrollador web y hasta hice y utilicé mis propios componentes, pero desde que aprendí php reconocí la superioridad que tiene y me enamoré de él. actualmente estoy pasando todas mis aplicaciones asp a php y funcionan muchísimo mejor y hasta me estoy ahorrando ancho de banda en el servidor

salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:15.