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 INSERT con parámetros
Qué tal.
Después de mucho tiempo de no programar estoy regresando al redil, y como era de esperarse me están ocurriendo cosas raras. Tengo declarada una variable de tipo entero en la cual voy a guardar el número máximo de registros de una tabla e incrementar en 1, esto lo estoy haciendo con un Query. Código Delphi [-]w_maximo : Integer; Query1.SQL.Clear; Query1.SQL.Add('select max(id_planti) from planti_corr'); Query1.Open; w_maximo := query1.RecordCount + 1; Query1.Close; Ahora necesito guardar algunos datos con parámetros Código Delphi [-]Query1.SQL.Clear; Query1.SQL.Add('insert into planti_corr (id_planti, nombre, archivo, tipo, descri) '); Query1.SQL.Add('values (:w_max, :w_nombre, :w_archivo, :w_tip, :w_descrip)'); Query1.ParamByName('w_max').AsInteger := w_maximo; Query1.ParamByName('w_nombre').AsString := edt_Titulo.Text; Query1.ParamByName('w_archivo').AsString := edt_Archivo.Text; Query1.ParamByName('w_tip').AsString := w_tipo; Query1.ParamByName('w_descrip').AsMemo := Trim(mem_Descrip.Text); Query1.ExecSQL; Pero me manda el error "Type mismatch in expression" Ya probé enviando cada uno de los campos y todos los campos tipo string, char, memo pasan bien los datos; pero la variable de tipo integer es la que me manda el error. También probé enviando todas las variables y el parámetro 'w_max' con valor 2 (directo) y todo funciona bien, pero con la variable no. Ojalá me haya explicado y puedan ayudarme, llevo 2 días con ese mismo problema. Gracias de antemano a todos.
__________________
No lo intentes!. Hazlo o no lo hagas, pero no lo intentes !!! (Yoda) |
#2
|
||||
|
||||
Perdón, algo malo paso con el post :-)
Una disculpa, algo malo pasó al momento de enviar el post, pero va de nuevo el código.
Ahora necesito guardar algunos datos con parámetros
Pero me manda el error "Type mismatch in expression" Ya probé enviando cada uno de los campos y todos los campos tipo string, char, memo pasan bien los datos; pero la variable de tipo integer es la que me manda el error. También probé enviando todas las variables y el parámetro 'w_max' con valor 2 (directo) y todo funciona bien, pero con la variable no. Ojalá me haya explicado y puedan ayudarme, llevo 2 días con ese mismo problema. Gracias de antemano a todos.
__________________
No lo intentes!. Hazlo o no lo hagas, pero no lo intentes !!! (Yoda) |
#3
|
||||
|
||||
Me da noséqué dejar este mensaje sin contestar.
La verdad es que no tengo mucha idea porque hace años que no uso bases de datos con Delphi pero, ¿no hay alguna propiedad que permita "desactivar" los parámetros? |
#4
|
||||
|
||||
¿As comprobado el valor de la variable w_máximo antes de la inserción?, porque puede ser que tenga un valor nulo, aunque por otra parte me extraña que un recordcount devuelva null. Pon un punto de interrupción y comprueba el valor para ver si con ese dato podemos sacar algo más.
Un saúdo.
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
#5
|
||||
|
||||
Que tal.
Gracias por tu atención. La variable w_maximo es de tipo entero, no se que pasa, pero lo solucioné de una forma no muy elegante pero de momento me sacó del apuro. * Sigo haciendo la consulta para determinar el valor máximo * Guardo los datos por medio de una Tabla Table1.Insert ... Table1.Post Sé que no es lo recomendable pero urgía salir del problema, pero este persiste, ojalá puedan ayudarme. Gracias
__________________
No lo intentes!. Hazlo o no lo hagas, pero no lo intentes !!! (Yoda) |
#6
|
||||
|
||||
Código:
w_maximo : Integer; Query1.SQL.Clear; Query1.SQL.Add('select max(id_planti) from planti_corr'); Query1.Open; w_maximo := query1.RecordCount + 1; Query1.Close; valdrá 2. Independientemente de lo que haga el select, al ser un "max", devuelve un registro con el valor max de id_planti. Luego le sumas 1 a recordcount y recordcount siempre es 1, un registro. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ejecutar varios insert a la ves | jzginez | Conexión con bases de datos | 4 | 06-12-2007 03:35:29 |
error al ejecutar parametros con ShellExecute | JuanErasmo | API de Windows | 7 | 10-05-2007 23:27:26 |
Tiempos al ejecutar tquery.insert | rmendigu | Conexión con bases de datos | 2 | 12-03-2007 16:10:39 |
Insert con parámetros | SaurioNet | SQL | 1 | 14-04-2004 10:51:57 |
Ejecutar varios insert en MYSQL | Igna | Conexión con bases de datos | 8 | 13-04-2004 15:55:31 |
|