FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Quiero correr un archivo .sql pero no logro hacer un create / insert
Tengo un sistema que realiza consultas e inicializa una base de datos Firebird, todo ello gracias a que cargo un archivo con comandos sql (.sql) y los voy ejecutando 1 x 1.
Para los selects uso un IBTransaction (inactivo, apunta al IBDatabase), un IBDatabase (activo), un IBQuery (inactivo, apunta al IBDatabase y al IBTransaction) y un DataSource (activo, apunta a IBQuery) para acceder a una base de datos Firebird. Con este no tengo problemas para obtener la información (IBQuery.Active=true). El problema es cuando quiero hacer un CREATE y posteriormente un INSERT sobre esa tabla. Si IBTransaction esta inactiva, recibo un error (Transaction is not active) cuando quiero hacer un create (IBQuery.ExecSql) y no llega al INSERT. Si por el contrario, activo la IBTransaction y corro el programa, el error se presenta al hacer el INSERT, indicándome que no existe dicha tabla. Igualmente probé sustituyendo el IBQuery con un IBSql (.ExecQuery) y tampoco logro ejecutar todos los comandos de mi archivo .sql. Agradeceré me orienten acerca de que estoy haciendo mal. gracias |
#2
|
||||
|
||||
Si autocommit es true u on entonces no debrias tener problemas cuando la transaccion esta inactiva.
|
#3
|
|||
|
|||
pues si esta activa, es lo curioso
Mejor incluyo el codigo, no vaya a ser que este haciendo una burrada de primaria (se vale montoneo, sirve que aprendo). Tengo un SQL por linea (algunas lineas las tengo como comentario, por lo que no las ejecuto), y siempre esta el CREATE previo al INSERT sobre dicha tabla.
Cita:
Última edición por joal fecha: 22-06-2006 a las 02:21:09. Razón: formateo |
#4
|
|||
|
|||
Parece asunto de los insert
Continuando con mi aventura... separe el SQL en tres. Borrado de tablas, creacion de tablas e insert de datos, a seleccionar segun lo que tuviera en un combobox. En el memo mem_Queries guardo los queries a realizar. Con las primeras dos (drops y creates) no hubo problema, el asunto ha sido con los insert.
Código:
procedure Tfrm_inicializador.bbtn_EjecutarClick(Sender: TObject); var i: integer; str_query: string; begin // Corro 1x1 para verificar si hay accion que tomar for i:= 0 to mem_Queries.Lines.Count - 1 do begin str_query:= Trim(mem_Queries.Lines.Strings[i]); ibt_IBTransaction.StartTransaction; if (Length(str_query) > 5) then begin ibq_IBQuery.SQL.Text:= str_query; ibq_IBQuery.ExecSQL; end; ibt_IBTransaction.Commit; end; end; 2) Prob 2. Si no declaro llave alguna y cree ese campo ID como un campo normal, al querer hacer el insert obtengo SQL Parse error: EOF in string detected. Lo curioso es que si ejecuto las mismas instrucciones mediante la herramienta isql de firebird, no obtengo error, por ende, no lo considero error de sintaxis. ideas? |
#5
|
|||
|
|||
Sumario: Problema identificado
Pues resulta que aún cuando ejecutaba línea por línea los INSERT (eran aprox 160-180), en uno de los INSERT (como el 35-40) había una comilla adicional, por lo que no lo procesaba correctamente.
Lo que me confundía es que el error lo marcaba en el primer INSERT, aún cuando lo corria paso a paso y me indicaba que estaba corriendo el primer INSERT (según eso aún no llegaba a la línea del error). No se si realiza internamente un preload de todo y luego ejecuta, o a que se deba eso, pero... por si es de su interés, les dejo por si alguien tiene el mismo problema. Gracias por su ayuda, |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
como puedo hacer correr mi apliccion en Intraweb ?? | supermanpy | Varios | 0 | 05-06-2006 23:17:08 |
Como correr un archivo externo? | fayala | Firebird e Interbase | 3 | 07-04-2005 03:56:00 |
No consigo hacer un INSERT | akela | Conexión con bases de datos | 3 | 22-11-2004 00:46:42 |
Como correr multiples sentencias SQL en un Tquery al hacer un .ExecSQL/.open | orfeo | Conexión con bases de datos | 6 | 27-03-2004 19:55:25 |
Quiero Saber como hacer que un boton se vea que esta siendo pulsado | Julio César | Varios | 2 | 27-11-2003 18:34:11 |
|