Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema con parametros en Delphi for .Net (https://www.clubdelphi.com/foros/showthread.php?t=40802)

lalosan 27-02-2007 16:54:22

Problema con parametros en Delphi for .Net
 
Saludos a todos!
tengo un problema al utilizar en un codigo al utilizar parametros en delphi.net, me marca el siguiente error: "Borland.Data.Common.BdpException: Column unknown rnombre", no se como es la sintaxis, ojala y me puedan ayudar, este es el codigo:

Código Delphi [-]sql := 'INSERT INTO USUARIO (NOMBRE, NIVEL, USUARIO, CLAVE) VALUES (:rnombre, :rnivel, :rusuario, :rclave)';
if BdpConnection1.State <> ConnectionState.Open then
BdpConnection1.Open;

daUsuario.Active := False;

daUsuario.SelectCommand.Parameters.add('rnombre', DbType.&String);
daUsuario.SelectCommand.Parameters.add('rnivel', DbType.&String);
daUsuario.SelectCommand.Parameters.add('rusuario', DbType.&String);
daUsuario.SelectCommand.Parameters.add('rclave', DbType.&String);

daUsuario.SelectCommand.Parameters[0].Value := TextBox1.Text;
daUsuario.SelectCommand.Parameters[1].Value := textbox2.Text;
daUsuario.SelectCommand.Parameters[2].Value := TextBox3.Text;
daUsuario.SelectCommand.Parameters[3].Value := TextBox4.Text;
daUsuario.SelectCommand.CommandText := sql;
daUsuario.Active := True;

Lepe 27-02-2007 17:03:42

Hola y Bienvenido a los foros, ya que es tu primer mensaje.

Que conste que no he trabajado con .net, pero me suena a que puede ser así:
Código Delphi [-]
sql := 'INSERT INTO USUARIO (NOMBRE, NIVEL, USUARIO, CLAVE) VALUES (:rnombre, :rnivel, :rusuario, :rclave)';
if BdpConnection1.State <> ConnectionState.Open then
BdpConnection1.Open;

daUsuario.Active := False;

daUsuario.SelectCommand.CommandText := sql;

// daUsuario.SelectCommand.Parameters.add('rnombre', DbType.&String);
// daUsuario.SelectCommand.Parameters.add('rnivel', DbType.&String);
// daUsuario.SelectCommand.Parameters.add('rusuario', DbType.&String);
// daUsuario.SelectCommand.Parameters.add('rclave', DbType.&String);

daUsuario.SelectCommand.Parameters[0].Value := TextBox1.Text;
daUsuario.SelectCommand.Parameters[1].Value := textbox2.Text;
daUsuario.SelectCommand.Parameters[2].Value := TextBox3.Text;
daUsuario.SelectCommand.Parameters[3].Value := TextBox4.Text;

daUsuario.Execsql;
- Esto es, primero asignamos el sql, así delphi hara el parser oportuno y creará los parámetros rnombre, rnivel, etc.
- Después asignas los valores a los parámetros.
- Por último ejecutas la consulta. Cabe mencionar que es una consulta de acción (no haces un select de nada, sino que ejecutas una acción, en este caso inserción en la BBDD), en delphi se usa ExecSql para ejecutarla en .net mira si te suena algo de Exec, ExecQuery, etc.

Si te indica que no se encuentra los parámetros (column unknow) rnivel, rnombre, etc, quita el comentario que he puesto. Eso hará crear los parámetros a tu consulta.

Saludos y suerte.

lalosan 27-02-2007 17:19:57

Gracias por ayudarme, hice todos los movimientos que me mencionas, pero aun me sigue saliendo el mismo error :confused: si lo estubiera haciendo en winform, si sale rapido, pero al programarlo en webform, es ahi donde batallo mucho y mas con la sintaxis...:( , a lo mejor en donde creo los parametros me falta algo más de codigo, o algo...

lalosan 27-02-2007 22:01:02

Ya lo pude resolver, al parecer cambia mucho la sintaxis del winform al webform, les pongo el codigo:
Código Delphi [-]
sql := 'INSERT INTO USUARIO (NOMBRE, NIVEL, USUARIO, CLAVE) VALUES (?, ?, ?, ?)';
  if BdpConnection1.State <> ConnectionState.Open then
      BdpConnection1.Open;
 
  BdpTrans := BdpConnection1.BeginTransaction;
  daUsuario.SelectCommand.Parameters.add(BdpParameter.Create('NOMBRE', DbType.&String));
  daUsuario.SelectCommand.Parameters.add(BdpParameter.Create('NIVEL', DbType.&String));
  daUsuario.SelectCommand.Parameters.add(BdpParameter.Create('USUARIO', DbType.&String));
  daUsuario.SelectCommand.Parameters.add(BdpParameter.Create('CLAVE', DbType.&String));

  daUsuario.SelectCommand.Parameters[0].Value := TextBox1.Text;
  daUsuario.SelectCommand.Parameters[1].Value := textbox2.Text;
  daUsuario.SelectCommand.Parameters[2].Value := TextBox3.Text;
  daUsuario.SelectCommand.Parameters[3].Value := TextBox4.Text;
  daUsuario.SelectCommand.CommandText := sql;

  daUsuario.SelectCommand.ExecuteNonQuery;
  BdpTrans.Commit;


La franja horaria es GMT +2. Ahora son las 13:58:21.

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