FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Error al ejecutar consulta de inserción
Buenas tarde:
Necesito hacer los siguiente
Donde obtengo valores de unas tablas, para posteriormente a través de los parámetros REFDELPROVEEDOR, FOTO Y VisibleEnWeb, realizar las inserción de un registro con una foto y asignarle dicha foto a un artículo. Hasta ahí, creo que la consulta no está mal hecha. El problema es que no consigo que me funcione. Estoy utilizando un SQLQuery y para mi base de datos utilizo SQLServer. Aquí pongo el código de la inserción de una imagen. Código:
procedure TForm1.CargarImagen3(directorio: string; indice: integer; visibleWEB : boolean); var fichero: string; Imagen : TBitMap; Buffer : TStream; begin Imagen := TBitmap.Create; Buffer := TMemoryStream.Create; fichero := directorio+'\'+FileListBox1.Items.Strings[indice]; if (ANSIUpperCase(ExtractFileExt(fichero)) = '.JPG') or (ANSIUpperCase(ExtractFileExt(fichero)) = '.JPEG') then begin Imagen := ConvertJPG2BMP(fichero); Imagen.SaveToStream(buffer); DM.SQLQuery2.Params.ParamByName('FOTO').LoadFromStream(buffer,ftblob); end else DM.SQLQuery2.Params.ParamByName('FOTO').LoadFromFile(fichero,ftblob); DM.SQLQuery2.Params.ParamValues['REFDELPROVEEDOR'] := NombreSinExtension(FileListBox1.Items.Strings[indice]); DM.SQLQuery2.Params.ParamValues['VISIBLEENWEB'] := visibleWeb; DM.AplicarCambios(DM.SQLConnection1, DM.ClientDataSet2, false); end; Código:
procedure TDM.AplicarCambios(SQLConnection : TSQLConnection; ClientDataSet : TClientDataSet; seleccion : Boolean); begin SQLConnection.Close; SQLConnection.Open; if seleccion = true then ClientDataSet.Open else ClientDataSet.Execute; if not (ClientDataSet.State = dsInsert) then ClientDataSet.Edit; ClientDataSet.Post; if (ClientDataSet.ChangeCount > 0) then ClientDataSet.ApplyUpdates(-1); ClientDataSet.Close; ClientDataSet.Open; end; ClientDataSet.Edit; me da el error "cannot perform this operation on a closed dataset" He buscado por todos los lados, pero no encuentro nada que me solucione el problema. Espero que podáis ayudarme. Gracias. |
#3
|
|||
|
|||
Gracias Oscar por contestar.
Si pongo esta sentencia me sale el error SQLQuery2: Cursor not retorned from Query ya que al hacer el open entiende que la consulta es de tipo SELECT y espera un conjunto de registros, pero la sentencia es de tipo INSERT y UPDATE. |
#4
|
|||
|
|||
Bueno, después de romperme la cabeza, la solución era mucho mas sencilla de lo que parecía.
Aquí pongo el código para el que quiera verlo. Gracias a todos Como podéis ver era tan fácil como asignar lo parámetros en el SQLQuery2 y cerrar y ejecutar la sentencia en el ClientDataSet2 Última edición por Casimiro Notevi fecha: 05-09-2017 a las 17:43:13. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Error al ejecutar consulta a MySQL con Zeos | DSK25 | Lazarus, FreePascal, Kylix, etc. | 3 | 31-12-2014 10:13:55 |
Error en delphi al ejecutar consulta SQL | josi | SQL | 2 | 29-03-2008 14:38:37 |
Error al ejecutar consulta | mierda | SQL | 1 | 11-03-2007 22:06:36 |
Error al Ejecutar consulta de Eliminacion | JoanKa | Varios | 2 | 02-01-2007 16:10:53 |
ADO: Error al ejecutar una consulta repetidamente | sostro | Conexión con bases de datos | 6 | 31-08-2004 17:43:50 |
|