Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Consultas con SQL (https://www.clubdelphi.com/foros/showthread.php?t=32965)

luxus 22-06-2006 14:50:26

Consultas con SQL
 
Hola a todos,

A ver si me podeis echar una mano porque me estoy volviendo loco con las consultas de SQL.

Resumiendo, el problema que tengo es que supongamos que quiero insertar un registro en una base de datos en access.
podria hacerlo mediante la propiedad "append" pero me han comentado que seria mas facil hacerlo mediante SQL.

Por lo tanto he insertado en el form un tadoquery y la propiedad "connection" está asociada a adoconnection1. la propiedad
"SQL" tiene el siguiente codigo:

Código SQL [-]
INSERT INTO TABLA1 (CODIGO,NOMBRE,APELLIDOS)
 VALUES (:'12', :'JUAN', :'SANCHEZ');

La propiedad de "active" esta a false.

Ahora os detallo el codigo fuente que he escrito para ver que me inserte en la tabla1 de la base de datos:

Código Delphi [-]
ADOConnection1.Open;
ADOQuery1.Active:=true;
ADOQuery1.Open;
ADOQuery1.Edit;

No sé si voy bien encaminado o no y/o me hace falta modificar el codigo. os agradeceria si me pudieseis ayudar ya que he visto en libros y no explican nada. si me pudieses mostrar el codigo para realizar una insercion en la tabla mejor asi podria tener una idea mas clara del proceso a seguir.

Gracias y un saludo a todos

momo 22-06-2006 16:14:31

Sugerencia
 
Buen dia
Si vas a utilizar SQL Server yo te sugeriría utilizar procedimientos almacenados.

1. Crea tu procedimiento en el servidor

CREATE PROCEDURE [OWNER].[PROCEDURE NAME](PARAMETROS) AS

En los parametros debes especificar si son de entrada o salida, el tipo
@nombre varchar --por default de entrada (input)

INSERT INTO Mitabla(nombre, apat, amat) values(@nombre,
@apat, @amat)

Coloca un TADOStoreprocedure asocia la conexion y el nombre del procedimiento de SQL Server

Para asignar los parametros puedes utilizar parameters.parameterbyname
asigna los valores

y ejecuta Execproc

No olvides las validaciones pertinentes

Saludos

luisgutierrezb 22-06-2006 16:22:39

eso de "mas facil" es relativo segun a lo que estes haciendo, eso de enlazar los controles de delphi y usar los metodos insert, edit, post, etc, te facilita mucho la vida, mas que usar edits normales, procesarlos y luego hacer a mano la insercion en sql, mejor platicanos que estas haciendo y te podremos orientar

ContraVeneno 23-06-2006 00:57:44

Si vas a utilizar un query, la instrucción para ejecutar un insert, o cualquier otra instrucción que no sea de consulta, se debe de realizar con ExeqSQL, sin open, sin active y sin edit.... simplemente utiliza ExecSQL y debería de funcionar.

Código Delphi [-]
with tuQuery do
 if active then close;
 sql.clear;
 sql.add('INSERT INTO TABLA1 (CODIGO,NOMBRE,APELLIDOS)');
 sql.add('VALUES ('12', 'JUAN', 'SANCHEZ')');
 ExecSQL;
end; //with

vtdeleon 23-06-2006 05:06:31

Cita:

Empezado por ContraVeneno
Código Delphi [-]
with tuQuery do
 if active then close;
 sql.clear;
 sql.add('INSERT INTO TABLA1 (CODIGO,NOMBRE,APELLIDOS)');
 sql.add('VALUES ('12', 'JUAN', 'SANCHEZ')');
 ExecSQL;
end; //with

Yo creo que esto arrojará un fatality, pues no estas enviando como cadena a "Juan y Sanche", falta encerrarlos entre comillas.

Saludos

ContraVeneno 23-06-2006 15:22:05

Muy cierto, detalles que se le escapan a uno :D

Código Delphi [-]
with tuQuery do  
 if active then close;  
 sql.clear;  
 sql.add('INSERT INTO TABLA1 (CODIGO,NOMBRE,APELLIDOS)');  
 sql.add('VALUES (''12'', ''JUAN'', ''SANCHEZ'')');  
 ExecSQL; 
end; //with

momo 26-06-2006 15:19:35

Transacciones y bloqueos
 
Buen dia

Con respecto a lo que me encuentro realizando es una aplicacion
cliente servidor, pero utilizo los edits normales porque es una verdadero
problema controlar los DB, además que utilizando los procedimientos
almacenados evito que viaje demasiado codigo SQL por la red. Además que voy
a implementar transacciones. Debido a que tengo las tan comunes
relaciones maestro detalle.

He estado leyendo algunos hilos de transacciones y he escuchado
historias tal alarmantes como que tiene que reinstalar todo el servidor de
sql debido a que se bloqueo y no lograron desbloquearlo, es algo que me
inquieta. Por ejemplo que pasa cuando un cliente se encuentra en medio
de una transaccion y por otras cuestiones ajenas al programa se traba
la maquina, como ese usuario bloqueo el registro no queda bloqueado a
menos que el los desbloquee?


Gracias


La franja horaria es GMT +2. Ahora son las 13:07:15.

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