Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2016
ederfcr ederfcr is offline
Registrado
NULL
 
Registrado: jun 2016
Posts: 9
Poder: 0
ederfcr Va por buen camino
Asignar resultado de una consulta sql de tabla access a una variable

Tengo un requerimiento de guardar unos datos en una tabla de access. Son dos posibilidades: si un usuario con campo cc (cedula o identificacion) existe ya como fila o registro, en cuyo caso actualizo algun campo y la otra si el usuario no existe en la tabla en cuyo caso ingreso datos en los campos de la tabla.

Se me ha ocurrido hacer una consulta como la siguiente en SQL que me genera la variable CANREG, ccusu es la variable tipo String donde almaceno la cédula proveniente desde un TEdit (debo decir que me interesa tenerla como String pues valido que sea cedula anteriormente con otro procedimiento):

Código Delphi [-]
 rs2.CommandText := 'SELECT COUNT(*) AS CANTREG FROM plancli WHERE CC = ' + ccusu;

Si recibo un valor 0, me encargaría de generar la actualizacion de algun campo, o si es > 0 inserto nueva fila con todos los datos.

Necesito su ayuda con una guia que deberia hacer para capturar esa variable CANREG y poder hacer esa validación, con que comando.

O si por el contrario hay otro código que haga lo que necesito.


Mil gracias


EderFCR
Responder Con Cita
  #2  
Antiguo 16-06-2016
ederfcr ederfcr is offline
Registrado
NULL
 
Registrado: jun 2016
Posts: 9
Poder: 0
ederfcr Va por buen camino
Envio codigo adicional para compresion:

Envío código adicional para compresión:



Código Delphi [-]
  rs2 := TADODataSet.Create(nil);
  rs2.Connection := connection2;
  rs2.CursorType := ctStatic;
  rs2.LockType := ltOptimistic;
  rs2.CommandText := 'SELECT COUNT(*) AS CANTREG FROM plancli WHERE CC = ' + ccusu;
  rs2.Open();
Responder Con Cita
  #3  
Antiguo 16-06-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Intenta de este modo:
Código Delphi [-]
function CantCed(Connect: TADOConnection; const Cedula: string): Integer;
var
  ads: TADODataSet;
begin
  ads := TADODataSet.Create(nil);
  try
    ads.Connection  := Connect;
    ads.CommandText := 'SELECT COUNT(*) AS CANTREG FROM PLANCLI WHERE CC = :PARAM';
    ads.Parameters.ParamByName('PARAM').Value := Cedula;
    ads.Open;
    Result := ads.FieldByName('CANTREG').Value;
  finally
    ads.Close;
    ads.Free;
  end;
end;

Ej. de uso:
Código Delphi [-]
var
  r : Integer;
begin
  r := CantidadCed(ADOConnection1, '25374893');
  if r = 0 then
    ShowMessage('No existen registros con esa cédula')
  else
    ShowMessage(Format('Existen %d registros con esa cédula',[r]));

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 16-06-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Si bien por algun lado lei que existe una clase TADODataSet, nunca la he usado

Siempre uso TADOQuery para ejecutar consultas SQL (en general, todos los select) y TADOCommand para el resto

Yo cambiaria el TADODataSet por TADOQuery y como siempre aconsejamos, mejor temprano que tarde, hay que acostumbrarse a usar parametros en las sentencias SQL

Código Delphi [-]
procedure ...
var
  qry: TADOQuery;
  Cantidad: Integer;
begin
  qry := TADOQuery.Create(nil);
  try
     // setear propiedades necesarias, Conection  ConnectionString, etc
     qry.SQL.Text := ' SELECT COUNT(*) AS CANTREG FROM plancli WHERE CC = :ccusu ';
     qry.SQL.Text.Parameters.ParamByName('ccusu').DataType := TFieldType.ftString;
     qry.SQL.Text.Parameters.ParamByName('ccusu').Value := ccusu;
     qry.Open;   
     Cantidad := qry.FieldByName('CANTREG').AsInteger; // accedes al campo y lo guardas en una variable integer 
  finally
     qry.Free;
  end;
end;
Responder Con Cita
  #5  
Antiguo 17-06-2016
ederfcr ederfcr is offline
Registrado
NULL
 
Registrado: jun 2016
Posts: 9
Poder: 0
ederfcr Va por buen camino
Problema resuelto!!

Hola buen día.

Resuelto el problema, asi quedo mi función:

Código Delphi [-]
function TDBClass.CantCed(Connect: TADOConnection; var Cedula: string): Integer;
var
  ads: TADODataSet;
begin
  ads := TADODataSet.Create(nil);
  try
    ads.Connection  := Connect;
    ads.CursorType := ctStatic;
    ads.LockType := ltOptimistic;
    ads.CommandText :='SELECT COUNT(*) AS CANTREG FROM plancli WHERE cc=PARAM';
    ads.Parameters.ParamByName('PARAM').Value := Cedula;
    ads.Open;
    CantCed := ads.FieldByName('CANTREG').Value;
  finally
    ads.Close;
    ads.Free;
  end;
end;

Quedo superbien y corriendo. Mil Gracias.


EderFCR
Responder Con Cita
  #6  
Antiguo 18-06-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Hay un error de tipeo aca:

Código Delphi [-]
  ads.CommandText :='SELECT COUNT(*) AS CANTREG FROM plancli WHERE cc=PARAM';

Te faltaron los dos puntos para indicar que es un parametro:

Código Delphi [-]
  ads.CommandText :='SELECT COUNT(*) AS CANTREG FROM plancli WHERE cc= :PARAM';
Responder Con Cita
  #7  
Antiguo 18-06-2016
ederfcr ederfcr is offline
Registrado
NULL
 
Registrado: jun 2016
Posts: 9
Poder: 0
ederfcr Va por buen camino
Si, gracias. Tenia una pequeña falla.

EderFCR
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
asignar resultado de consulta a un edit!! ezequiel913 Varios 6 11-06-2011 16:18:47
Asignar resultado de consulta a variable Saiyan SQL 3 10-07-2007 16:44:10
asignar el resultado de un sql a una variable Cañones SQL 2 14-04-2007 16:29:43
Como asignar el resultado de una consulta a una variable Luis Cuenca Conexión con bases de datos 2 11-08-2006 17:27:32
Resultado de Consulta en Variable ¥0n1 SQL 1 30-12-2003 02:07:29


La franja horaria es GMT +2. Ahora son las 12:05:49.


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
Copyright 1996-2007 Club Delphi