Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cita:
Empezado por grandmasterdari Ver Mensaje
la linea del error ya fue marcada, es en el segundo "SQLQuery1->Open()"
Bueno... la verdad desconozco si en mySQL es un query válido eso de use basededatos;, pero si lo es, dudo que devuelva un cursor. ¿estas seguro de eso?

En segundo lugar, en este mensaje dijiste que se trata de un open, pero nunca aclaraste que se tratase del segundo. Desde el inicio era obvio que era un Open el que originaba el error... no me imagino a otra instrucción provocando un error como este.

La solución que te he dado (si es que es esto), estoy seguro que si hubieses intentado al menos comprender lo que ya te he dicho antes, pudiste alcanzarla por vos mismo.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #2  
Antiguo 12-01-2008
Avatar de grandmasterdari
grandmasterdari grandmasterdari is offline
Miembro
 
Registrado: ene 2008
Posts: 46
Poder: 0
grandmasterdari Va por buen camino
Post Aclaracion 07

"use basededatos;" bueno "basededatos" es el nombre de mi base de datos. tambien podriamos llamarla negocio, por lo tanto quedaria asi "use negocio".
Cuando iniciamos sql, el no sabe que base de datos vamos a ocupar (varia segun usuario) entonces hay que decirle cual queremos usar con el famoso "use".
Entonces "basededatos" es una abstraccion del nombre de la base de datos ke vamos a ocupar.
Bueno, el error esta en el segundo OPEN, porque aparentemente ya ocupe el OPEN antes.
Responder Con Cita
  #3  
Antiguo 12-01-2008
Avatar de grandmasterdari
grandmasterdari grandmasterdari is offline
Miembro
 
Registrado: ene 2008
Posts: 46
Poder: 0
grandmasterdari Va por buen camino
Thumbs up Solucionado

antes que nada sepan disculpar mi estupidez, y gracias por su tiempo.

la idea era esta:
1) que el programa (al iniciar) compruebe la conexion con el motor de base de datos
2) que compruebe (al iniciar) si existe la base de datos con la que vamos a trabajar
3) que compruebe si estan todas las tablas que vamos a utilizar

este es una parte del codigo para comprobar, conexion, base de datos y tablas,

Código:
void __fastcall TForm1::FormCreate(TObject *Sender)//se ejecuta cuando se crea el formulario principal
{

	//comprobacion de conexion
	SQLConnection1->Connected=true;
	if(SQLConnection1->Connected==false){
		MessageBox(NULL,"No se puede establecer la conexion con la base de datos","Error",MB_OK);

		//bloquear botones
		Button8->Enabled=false;  //boton login

	}
	else{
		//comprobacion de base de datos
		SQLQuery1->SQL->Clear();
		SQLQuery1->SQL->Add(codec("show databases");
		SQLQuery1->Open();
		while((!SQLQuery1->Eof)&&((SQLQuery1->FieldByName("Database")->AsString)!="sircdb"))
			SQLQuery1->Next();
		if(SQLQuery1->Eof==true){
			MessageBox(NULL,"No se encuentra la base de datos sircdb","Error",MB_OK);

			//bloquear botones del formulario principal, por ahora tengo 1 nomas
			Button8->Enabled=false;  //boton login
			SQLQuery1->Close();//cierro por las dudas, no se si hace falta ya que el programa solo da la opcion para cerrarse
		}
		else{
			//uso de la base de datos, que ya se que existe
			SQLQuery1->Close();
			SQLQuery1->Open();
			SQLQuery1->SQL->Clear();
			SQLQuery1->SQL->Add("use sircdb;");
			SQLQuery1->ExecSQL(true);//para poder ejecutar el comando
                        //en esta parte empiezo a contralar si estan todas las tablas
			SQLQuery1->SQL->Clear();
			SQLQuery1->SQL->Add("show tables;");
			SQLQuery1->Open();//jejeje. no hay error.
                        //y aqui deberiamos hacer el mismo recorrido anterior (while(!SQLQuery1->Eof  bla bla))
                        //con los condicionales necesarios para la comprobacion de todas las tablas


		}//cierro el else de db
	}//cierro el else de conexion
	SQLQuery1->Close();
}
encontre el error gracias a jachguate porque dijo esto
"Bueno... la verdad desconozco si en mySQL es un query válido eso de use basededatos;, pero si lo es, dudo que devuelva un cursor"
y es verdad, realice un "use basededatos" (en mi codigo "use sircdb"), y esto no devuelve un cursor por eso no se puede realizar el metodo "SQLQuery1->Open()", solo se puede el "SQLQuery1->ExecSQL()"


gracias a jachguate, caral, keyboy y egostar por ayudar

Última edición por grandmasterdari fecha: 12-01-2008 a las 03:58:34.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error Creating cursor handle jose_205711 Conexión con bases de datos 3 06-11-2010 10:04:02
Error creating cursor handle miguel_fr SQL 6 02-01-2007 12:47:09
Error: puntero no regresa de la consulta o Cursor not Returned from query The_figo MySQL 0 23-11-2006 20:08:55
error "Subquery returned more than 1 value" lynu SQL 1 14-08-2006 16:16:25
¿Por qué me da este error?Error creating cursor manejador nuri SQL 2 01-08-2005 17:30:28


La franja horaria es GMT +2. Ahora son las 13:53:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi