Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-05-2008
Aleh Aleh is offline
Miembro
 
Registrado: dic 2007
Posts: 15
Poder: 0
Aleh Va por buen camino
Problema con un insert

Me gustaria saber si hay alguna forma de evitar este error:

SQL: cursor not returned from query

OCurre cuando realizo un insert mediante un SQLQuery (dbexpress), el codigo que hago es el siguiente:
Código Delphi [-]
SQLadd.Open;
    SQLadd.SQL.Clear;
    SQLadd.SQL.add('update stocks set cantidad=cantidad+'+cantidad.text);
    SQLadd.SQL.add('where sucursal='''+GRIDStocks.DataSource.DataSet.FieldByName('sucursal').AsString+'''');
    SQLadd.SQL.add('and telefono='''+GRIDStocks.DataSource.DataSet.FieldByName('telefono').AsString+'''');
    SQLadd.Active;
    CDSadd.Active:=true;

El caso es que inserta correctamente, pero sale esa ventana diciendo que no devolvio nada, ¿¿¿no se puede evitar???
También me ocurre con deletes y updates...
Responder Con Cita
  #2  
Antiguo 30-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Hola, en vez de:
Código Delphi [-]
SQLadd.Active;

no debería ser?:

Código Delphi [-]
SQLadd.ExecSQL;

y que viene siendo "CDSAdd".

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #3  
Antiguo 30-05-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, en vez de utilizar SQLadd.Active utiliza SQLadd.ExecSQL.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 30-05-2008
Aleh Aleh is offline
Miembro
 
Registrado: dic 2007
Posts: 15
Poder: 0
Aleh Va por buen camino
Muchas gracias a los dos, ya funciona perfectamente!
ADemás me habéis solucionado un par de dudas que también tenía. GRACIAS!!
Responder Con Cita
  #5  
Antiguo 30-05-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por enecumene Ver Mensaje
y que viene siendo "CDSAdd".
Enecumene me has ganado . CDSAdd parece que es su ClientDataSet, pero no creo que sea necesario en el codigo que tiene Aleh.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #6  
Antiguo 30-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
Enecumene me has ganado . CDSAdd parece que es su ClientDataSet, pero no creo que sea necesario en el codigo que tiene Aleh.

Saluditos
...Pues concuerdo contigo Caro de que no es necesario en el código, por algo pregunté, pues me dio cierta confusión .

Aleh, un pequeño Tips sobre sentencias SQL con delphi, Cuando se trata de sentencias INSERT, UPDATE y DELETE se utiliza la propiedad "ExecSQL" del Dataset y en la sentencia SELECT se utiliza "Open" y/o "Active" aunque particularmente recomiendo lo primero.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #7  
Antiguo 30-05-2008
Aleh Aleh is offline
Miembro
 
Registrado: dic 2007
Posts: 15
Poder: 0
Aleh Va por buen camino
No es necesario para es acción, pero si lo necesito para otros casos, jejeje. En cualquier caso sigo teniendo un problema despues de una primera insercion, ¿¿tengo que actualizar alguna query o algo??

P.D.: quiero decir que la segunda insercion falla y da el mismo error.
Responder Con Cita
  #8  
Antiguo 30-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Cita:
Empezado por Aleh Ver Mensaje
No es necesario para es acción, pero si lo necesito para otros casos, jejeje. En cualquier caso sigo teniendo un problema despues de una primera insercion, ¿¿tengo que actualizar alguna query o algo??

P.D.: quiero decir que la segunda insercion falla y da el mismo error.
Vale, y cúal es la segunda inserción? .
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #9  
Antiguo 30-05-2008
Aleh Aleh is offline
Miembro
 
Registrado: dic 2007
Posts: 15
Poder: 0
Aleh Va por buen camino
Pues mira, tengo un EDIT, y meto un numero oK???, pulso el boton y se realiza la insercion en la BD.
Pero cuando voy a meter otro numero, la segunda vez falla. Probablemente no libero algo bien, aqui dejo el codigo del boton al hacer click:

Código Delphi [-]
    SQLadd.Open;
    SQLadd.SQL.Clear;
    SQLadd.SQL.add('update stocks set cantidad=cantidad+'+cantidad.text);
    SQLadd.SQL.add('where sucursal='''+GRIDStocks.DataSource.DataSet.FieldByName('sucursal').AsString+'''');
    SQLadd.SQL.add('and telefono='''+GRIDStocks.DataSource.DataSet.FieldByName('telefono').AsString+'''');
    SQLadd.ExecSQL();
    SQLadd.Close;
    SQLStocks.Active;
    CDSStocks.Refresh;
    GRIDStocks.refresh;
    Showmessage('Se han añadido '+cantidad.text+' unidad/es del teléfono seleccionado en la sucursal seleccionada.');

Lo de cerrar lo puse después, pero no evita el problema.
Responder Con Cita
  #10  
Antiguo 30-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Código Delphi [-]
 SQLadd.Close;
    SQLadd.SQL.Clear;
    SQLadd.SQL.add('update stocks set cantidad=cantidad+'+cantidad.text);
    SQLadd.SQL.add('where sucursal='''+GRIDStocks.DataSource.DataSet.FieldByName('sucursal').AsString+'''');
    SQLadd.SQL.add('and telefono='''+GRIDStocks.DataSource.DataSet.FieldByName('telefono').AsString+'''');
    SQLadd.ExecSQL;
    CDSStocks.Refresh;
    GRIDStocks.refresh;
    Showmessage('Se han añadido '+cantidad.text+' unidad/es del teléfono seleccionado en la sucursal seleccionada.');

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #11  
Antiguo 30-05-2008
Aleh Aleh is offline
Miembro
 
Registrado: dic 2007
Posts: 15
Poder: 0
Aleh Va por buen camino
Ahora si que va perfecto, muchas gracias, de verdad!
Responder Con Cita
Respuesta



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
Problema con una consulta Insert enecumene Conexión con bases de datos 5 07-09-2007 04:26:34
Problema Consulta Insert into... enecumene Conexión con bases de datos 25 25-08-2007 00:45:49
problema con un insert darkclow_juliga Conexión con bases de datos 1 05-12-2006 11:40:33
Problema con Insert joanajj Conexión con bases de datos 1 01-05-2006 08:11:40
Problema con insert Ivan_25 C++ Builder 7 04-11-2005 10:38:34


La franja horaria es GMT +2. Ahora son las 15:31:56.


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