![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
claro al ocupar el "SQLQuery1->ExecSQL()", ejecuta la instruccion sql que esta en el atributo SQLQuery1->Text, pero e de aqui, que yo necesito los resultados de la consulta, para poder trabajar con esta,
![]() |
|
#2
|
|||
|
|||
|
En el código que pones no cierras la primera consulta antes de abrir la segunda. No me parece muy lógico, pero puede ser que por ahí esté el problema, aunque más parece ser problema del driver en cuestión. Y confirmo que "show tables" sí es una consulta SQL válida para MySQL y, similar al SELECT, regresa un cursor, esto es, un conjunto de registros, que para el Dataset debe ser exactamente lo mismo. Por ello es que pienso que se trata de un driver defectuoso.
Bye |
|
#3
|
||||
|
||||
|
keyboy, tu duda sobre el driver reforzo mi duda sobre el driver y me puse a buscar otro, probe con uno de "core lab" el cual es pago, me baje la version trial y tambien me da el mismo error, asique lo doy por descartado
|
|
#4
|
||||
|
||||
|
Creo que solo estamos adivinando. Desde mi primera intervención te pregunté en que línea salta el error. Mientras no lo sepamos... menos clara tendremos la idea, y en ese estado podremos cambiar de driver, de motor de base de datos, de sistema operativo o de herramienta de programación, y probablemente el problema persista.
![]() ![]() ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#5
|
||||
|
||||
|
la linea del error ya fue marcada, es en el segundo "SQLQuery1->Open()"
|
|
#6
|
|||
|
|||
|
Veamos, hay algo que no entiendo, estas usando un bookmark de otra consulta para usarlo en una diferente????
Código:
SQLQuery1->SQL->Clear();
SQLQuery1->SQL->Add("show tables");
SQLQuery1->Open();
TBookmarkStr BM= SQLQuery1->Bookmark; //????????????
SQLQuery1->First();
while((!SQLQuery1->Eof)&&((SQLQuery1->FieldByName("Database")->AsString)!="sircdb"))
SQLQuery1->Next();
SQLQuery1->Refresh();
ClientDataSet1->UpdateCursorPos(); //?????????????
SQLQuery1->Bookmark=BM; //????????????
SQLQuery1->Close();
SQLQuery1->SQL->Clear();
SQLQuery1->SQL->Add("use basededatos;");
SQLQuery1->Open(); //el error sale en esta linea
Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
|
#7
|
||||
|
||||
|
egostar, lo de los bookmarks es un intento desesperado, en realidad no deberia ir ningun bookmark
consegui un ejemplo en su idioma Código:
procedure TFormTryMySQL.ConnectButtonClick(Sender: TObject);
begin
// Prüfen, ob wir eine aktive Verbindung haben. Falls ja, schliessen wir sie.
if MySQLConnection1.Connected then CloseConnection(Sender);
// Die Verbindungsparameter setzen.
MySQLConnection1.HostName := HostEdit.Text;
MySQLConnection1.UserName := UserEdit.Text;
MySQLConnection1.Password := PasswdEdit.Text;
MySQLConnection1.DatabaseName := 'mysql'; // MySQL ist immer vorhanden!
ShowString('Opening a connection to server: ' + HostEdit.Text);
MySQLConnection1.Open;
// Zuerst eine Liste der verfügbaren Datenbanken abfragen.
if MySQLConnection1.Connected then begin
ShowString('Connected to server: ' + HostEdit.Text);
ShowString('Retrieving list of available databases.');
SQLQuery1.SQL.Text := 'show databases';
SQLQuery1.Open;
while not SQLQuery1.EOF do begin
DatabaseComboBox.Items.Add(SQLQuery1.Fields[0].AsString);
SQLQuery1.Next;
end;
SQLQuery1.Close;
ShowString('List of databases received!');
end;
end;
fuente -> aqui |
|
#8
|
||||
|
||||
|
Cita:
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 |
|
#9
|
||||
|
||||
|
"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. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|