Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Como hacer un Select, Insert, Update, Delete en SQL Server (https://www.clubdelphi.com/foros/showthread.php?t=45940)

BlueSteel 18-07-2007 21:21:22

Como hacer un Select, Insert, Update, Delete en SQL Server
 
Hola foreros...

Por disposiciones de mi empresa, lo que antes trabajaba con Interbase, tengo que hacerlo con SQLServer 2000.

Con respecto a lo anterior, he buscado en el foro, pero no he encontrado (o no supe buscar bien :D ), las sentencias para realizar dichos procedimientos...

por lo cual pondre las sentencias que utilizaba yo en Interbase 6, y si pueden indicarme como hacer lo mismo pero con SQLServer...

Las conexiones las estoy realizando co ADO, utilizando un TADOConnection y TADOQuery...

Otra consulta.. con Interbase utilizaba las Transaction... hay algun componente ADO que las reemplace ... y es necesario ???

Proceso para Seleccionar
Código Delphi [-]
IBQ_Edit.Close;
IBQ_Edit.SQL.Clear;
IBQ_Edit.SQL.Add('Select * From "Proveedor" Order By "Pro_Rut"');
IBQ_Edit.Open;

Proceso para Insertar
Código Delphi [-]
IBQ_Edit.SQL.Clear;
IBQ_Edit.SQL.Add('Insert Into "Proveedor" ("Pro_Rut","Pro_Razon","Pro_Direccion","Pro_Poblacion","Pro_Comuna","Pro_Fono","Pro_Fax")');
IBQ_Edit.SQL.Add('Values (:P1, :P2, :P3, :P4, :P5, :P6, :P7)');
IBQ_Edit.Params[0].AsString := vRut.Text;
IBQ_Edit.Params[1].AsString := vRaz.Text;
IBQ_Edit.Params[2].AsString := vDir.Text;
IBQ_Edit.Params[3].AsString := vPob.Text;
IBQ_Edit.Params[4].AsString := vCom.Text;
IBQ_Edit.Params[5].AsString := vTel.Text;
IBQ_Edit.Params[6].AsString := vFax.Text;
IBQ_Edit.ExecSQL;
IBT_Edit.Commit;

Proceso para Actualizar
Código Delphi [-]
IBQ_Edit.SQL.Clear;
IBQ_Edit.SQL.Add('Update "Proveedor" Set "Pro_Razon"=:Var1, "Pro_Direccion"=:Var2, "Pro_Poblacion"=:Var3, "Pro_Comuna"=:Var4, "Pro_Fono"=:Var5, "Pro_Fax"=:Var6');
IBQ_Edit.SQL.Add('Where "Pro_Rut"=:Var7');
IBQ_Edit.Params[0].AsString := sRaz.Text;
IBQ_Edit.Params[1].AsString := sDir.Text;
IBQ_Edit.Params[2].AsString := sPob.Text;
IBQ_Edit.Params[3].AsString := sCom.Text;
IBQ_Edit.Params[4].AsString := sTel.Text;
IBQ_Edit.Params[5].AsString := sFax.Text;
IBQ_Edit.Params[6].AsString := sRut.Text;
IBQ_Edit.ExecSQL;
IBT_Edit.Commit;

Proceso para eliminar
Código Delphi [-]
IBQ_Edit.SQL.Clear;
IBQ_Edit.SQL.Add('Delete From "Proveedor" Where "Pro_Rut"=:Var1');
IBQ_Edit.Params[0].AsString := Rut.Text;
IBQ_Edit.ExecSQL;
IBT_Edit.Commit;

Bueno amigos... espero me puedan ayudar... y orientarme como realizar estos procesos o en donde buscar... gracias...

mamcx 18-07-2007 21:25:09

Con Sql Server se usan comunmente los componentes de Ado... y funcionan de forma similar...

Busca los TADO.... en la paleta..

BlueSteel 18-07-2007 22:32:56

Estoy usando esto para inserta un registro...
Código Delphi [-]
AQ_Select.Close;
AQ_Select.SQL.Clear;
AQ_Select.SQL.Add('Insert Into Socio(Soc_Rut, Soc_Nombres, Soc_Apellidos) Values (:vRut.Text, :vNom.Text, :vApe.Text)');
AQ_Select.ExecSQL;

Pero me da el sgte error..

No se puede insertar el valor NULL en la columna 'Soc_Apellidos', tabla 'GYM.dbo.Socio'. La columna no admite valores NULL. Insert falla..

Ahora, se lo que significa esto.(que no puedo ingresar un dato como nulo.. cuando esta marcado como no nulo).... pero el dato del Soc_Apellidos lo ingreso....( e incluso tiene mas campos la tabla.. pero solo deje not null a esos 3 para probar si funciona el ingreso)

que puede ser...??? error de sintaxis.. o algo por el estilo...

Además, como defino si un dato es numerico o con decimales o de tipo fecha???

mamcx 18-07-2007 22:44:06

Pues sin ver mas codigo, Soc_Apellidos esta nulo.

Para saber los tipos de datos es igual... usa la propiedad FieldDefs para obtener la estructura de los campos

roman 18-07-2007 23:05:03

Cita:

Empezado por BlueSteel
Código Delphi [-]
AQ_Select.Close;
AQ_Select.SQL.Clear;
AQ_Select.SQL.Add('Insert Into Socio(Soc_Rut, Soc_Nombres, Soc_Apellidos) Values (:vRut.Text, :vNom.Text, :vApe.Text)');
AQ_Select.ExecSQL;

¿Y dónde asignas valores a los parámetros? :confused:

// Saludos

BlueSteel 18-07-2007 23:11:25

Shuata... yo pensaba que con
Código:

Values (:vRut.Text, :vNom.Text, :vApe.Text)');
estaba solucionado... por que esos son los datos .. si no es así.. como debe ser ???

Caral 18-07-2007 23:15:16

Hola
Supongo que a lo que se refiere Roman es a de donde se sacan esos parametros, para mi no tiene parametros, tiene edits, por lo cual seria asi:
Código Delphi [-]
AQ_Select.Close;
AQ_Select.SQL.Clear;
AQ_Select.SQL.Add('Insert Into Socio(Soc_Rut, Soc_Nombres, Soc_Apellidos) Values (vRut.Text, vNom.Text, vApe.Text)');
AQ_Select.ExecSQL;
En caso de tener parametros no seria .text.
Saludos

roman 18-07-2007 23:15:26

Me imagino entonces, que vRut, vNom y vApe son Edits que tienes en tu aplicación. Pero SQL no entiende nada de Edits. En tu primer mensaje de este hilo pones una inserción donde sí sustituyes parámetros, por ello no entiendo que aquí los omitas.

// Saludos

BlueSteel 18-07-2007 23:27:49

Roman... tienes toda la razon.. lo que pasa es que con ADO.. .no se como hacerlo?

pero igual toy tratando de ver como se hace...:p

roman 18-07-2007 23:39:05

¡Ah! Creo ver por donde va el problema. Es que ADO usa una nomenclatura un poco distinta para acceder a los parámetros. Lo similar a lo que tienes con los componentes IB sería así:

Código Delphi [-]
ADOQuery1.Parameters[0].Value := vRut.Text;

// Saludos

BlueSteel 18-07-2007 23:51:46

Ya me funco...
 
Gracias a todos... ahora si me funco...:p :p

Código Delphi [-]
AQ_Edit.Close;
AQ_Edit.SQL.Clear;
AQ_Edit.SQL.Add('Insert Into Socio(Soc_Rut, Soc_Nombres, Soc_Apellidos) Values (:vRu, :vNom, :vApe)');
AQ_Edit.Parameters[0].Value :=vRut.Text;
AQ_Edit.Parameters[1].Value :=vNom.Text;
AQ_Edit.Parameters[2].Value :=vApe.Text;
AQ_Edit.ExecSQL;

Ahora, solo por preguntar.. existe una forma más fácil... digo ,. .utilizando un QuoteStr.. o algo por el estilo ??? :D :p :confused:

Neftali [Germán.Estévez] 19-07-2007 10:02:42

En cuanto a las transacciones, se encuentran en el ADOConnection; Es decir, que ahí tienes los métodos Start..., Commit, RollBack.. y demás.
Debes llamarlas expresamente cuando las necesites y van por conexión.

Lo del QuoteStr, puedes utilizarlo si añades tú los valores de los campos manualmente, pero creo que con pará,metros tendrás menos problemas, ya que no debes preocuparte de si el parámetro en numérico, fecha, string,...


La franja horaria es GMT +2. Ahora son las 06:24:23.

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