Foros del Web » Programación para mayores de 30 ;) » .NET »

problema obteniendo id de un stored procedure sql

Estas en el tema de problema obteniendo id de un stored procedure sql en el foro de .NET en Foros del Web. Hola a to2!!! Necesito obtener el id de una tabla dado una fecha. Para esto tengo un procedimeitno almacenado que llamo desde el codigo, pero ...
  #1 (permalink)  
Antiguo 17/05/2011, 10:35
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 0
Pregunta problema obteniendo id de un stored procedure sql

Hola a to2!!!
Necesito obtener el id de una tabla dado una fecha. Para esto tengo un procedimeitno almacenado que llamo desde el codigo, pero no me esta devolviendo nada, existiendo los valores en al BD. Aqui les va el codigo a ver si tienen alguna idea de por que no me esta devolviendo nada cuando si existe esa fecha en la BD:

//el procediemitno almacenado:
create procedure sp_Getdatos
@fecha datetime
as
select IdRec from tb_Recaudacion where fecha = @fecha

//Metodo donde se llama al stored procedure:

DateTime fecha = DateTime.Parse(dgvRecaudaciones.CurrentRow.Cells[8].Value.ToString());
int idR = load.IDRecaudacion(fecha);

//metodo IDRecaudacion(fecha):
public int IDRecaudacion(DateTime fecha)
{
SqlConnection fConnection = new SqlConnection(@"Data Source = MI_ORNENADOR\sqlexpress;Initial Catalog=Recaudacion; Integrated Security=True");
try
{
if (fConnection.State != ConnectionState.Open)
fConnection.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
SqlCommand command = new SqlCommand("[sp_Getdatos]", fConnection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@fecha", SqlDbType.DateTime).Value = fecha;

int id = 0;
try
{
SqlDataReader result = command.ExecuteReader();
if (result.HasRows)
{
result.Read();
id = int.Parse(result["IdRec "].ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

fConnection.Close();
return id;
}


El id me devuelve cero, la fecha que se obtiene del datagridview es de la tabla tb_Recaudacion, y la fecha que le paso como parametro la esta cogiendo bien, por loq ue no se por que, si en la base de datos esa fecha existe, no me devuelve el id correspondiente. Alguno de ustedes tiene idea de que puede estar yendo mal en el codigo?
  #2 (permalink)  
Antiguo 17/05/2011, 10:42
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: problema obteniendo id de un stored procedure sql

prueba haciendo esto en vez de tu sqlDataReader :

Código c#:
Ver original
  1. int id = 0;
  2. try{
  3. id = Convert.toInt32(cmd.ExecuteScalar());
  4. }
  5. catch(Exception ex){
  6. MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK, MessageBoxIcon.Error);
  7. }
  8. return id;
lo pruebas y nos cuentas. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 17/05/2011, 11:52
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema obteniendo id de un stored procedure sql

Lo probé, y nada, lo mismo, me sigue devolviendo cero.
Gracias de todas formas!!!
  #4 (permalink)  
Antiguo 17/05/2011, 11:58
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: problema obteniendo id de un stored procedure sql

Verifica haciendole un paso a paso(con los breakpoints) y nos muestas que valor tiene tu variable fecha, puede que probablemente este comparando con fecha y horas, te digo esto porque en mi tabla tenia valores como '12/05/2011 00:00:00:00000' y mandaba por como parametro 12/05/2011 11:21:15:14425' y al mandarlo como parametro no eran iguales, verifica eso. Nos cuentas!. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 17/05/2011, 12:28
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema obteniendo id de un stored procedure sql

EL parametro que le paso es de fecha y hora, y si, es lo mismo, el formato es, por ejemlo: '05/05/2011 9:03:20' . la fecha yo la recojo de un datagridview que tiene un datasource de la misma tabla a la que le hago lla consulta, recogiendo una fecha que esta en la tabla y esa misma fecha, es la que le paso como parametro al procedimiento para que me devuelva el id de la recaudacion insertada en esa fecha. y bueno, que parece que ese es el probelmas,q ue esta cogiendo algo que al comparar ocn la base de datos no coincide, pero al debuggear, yo veo que esta cogiendo el mismo valor que esta almacenado en la base de datos, lo que me tiene desorientada por completo y sin ideas de que podra ser lo que esta fallando.
  #6 (permalink)  
Antiguo 17/05/2011, 12:53
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 9 meses
Puntos: 37
Respuesta: problema obteniendo id de un stored procedure sql

Ya probaste una consulta directa a tu Base de Datos?, puede ser también problemas de formatos de fechas. Prueba con una consulta en tu manejador de base de datos.
__________________
http://ka0stj.wordpress.com/
  #7 (permalink)  
Antiguo 17/05/2011, 13:13
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema obteniendo id de un stored procedure sql

Haciendo consultas ne la base de datos, encontré el problema, pero igual, no se cómo resolverlo, la cosa está en que del datagrid obtengo la fecha con este formato:

'05/05/2011 9:03:20' y en la base de datos: '05/05/2011 9:03:20:720', en finq ue en la base de datso tambien guarda los milisegundos, y por supuesto, al hacer la comparacion, no encuentra nada, pq no son iguales. Alguno de ustedes sabe como puedo hacer para obtener los ultimos 3 digitos que no se recogen en el datagrid con el datasource? Sera alguna propiedad de la columna del datagrid que recoge la fecha? Alguna idea?
  #8 (permalink)  
Antiguo 17/05/2011, 16:28
 
Fecha de Ingreso: mayo-2011
Ubicación: Managua, Nicaragua
Mensajes: 5
Antigüedad: 13 años, 6 meses
Puntos: 2
Información Problema obteniendo id de un stored procedure sql

Lo que yo hago cuando tengo una tabla con datos, es que cuando la lleno (ya sea en cuanto cargue el formulario o a partir del evento clic de un botón) asigno a la primera columna el identificador y la oculto. Así cuando voy a realizar una consulta que requiera el identificador, no tengo que ir a la base de datos a consultarla.

Espero que te sirva.
  #9 (permalink)  
Antiguo 17/05/2011, 18:40
Avatar de giovani_loera  
Fecha de Ingreso: mayo-2011
Ubicación: Tijuana
Mensajes: 225
Antigüedad: 13 años, 6 meses
Puntos: 21
Respuesta: problema obteniendo id de un stored procedure sql

Ocupas comprar todo la Fecha completa en el Store Procedure, es decir
'05/05/2011 9:03:20:720', o solo la fecha en si (sin la hora '05/05/2011')?

En fin te mando este codigo de SQL (es para acortar la fecha a tu antojo),
por ejemplo: solo qiero la fecha actual, sin hora ni nada

SELECT LEFT(CONVERT(VARCHAR, GetDate(), 120), 10)'Fecha'
--esto se regresara asi '2011-05-17'

Si quierees con hora y minutos es asi
SELECT LEFT(CONVERT(VARCHAR, GetDate(), 120), 16)'Fecha'
--esto se regresara asi '2011-05-17 17:34'

Te recomiendo que le mandes la fecha completa al Store Procedure, y dentro del store Procedure le pongas el formato q qieras y lo compares con la fecha de la tabla (igual con el mismo formato),
esto es para q las 2 fechas tengan el mismo formato.

Y no importa si en el programa tengo o no tengo milisegundos, ya cuando le pongas formato dentro del store procedure sera la misma q le pondras a la de la Tabla de tu DB.

Nota:
" Antes de correr un Store Procedure desde Programacion, te recomiendo q lo corras en Sql, solo tienes q poner esta linea de comando:

EXEC 'Nombre del Store' 'parametro 1','parametro 2',parametro n'

Y veras si el store procedure te arroja lo q qieres q te regresa".

Espero que te haya servido.
  #10 (permalink)  
Antiguo 18/05/2011, 06:56
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 0
De acuerdo Respuesta: problema obteniendo id de un stored procedure sql

Hola a to2!!!
joabto, yo también tengo la columna id agregada al datagridview en visible igual false, pero me devuelve numeros negativos, pero bueno, ese es otro error del cual no he salido y que ya lo habia puesto aqui en otro tema, pero nadie me ha constestado y lo sigo teniendo, y como me hace falta adelantar, pues que me fui por esta vía, y vamos que pense iba a ser más facil, y mira el bateo que me dio, jaja, por suerte, ya di con la solucion gracias a ustedes!!!
Aqui les dejo el codigo del procedimiento que creé siguiendo la idea de giovani. Gracias a ti también, giova, en fin, a to2, muchas gracias!!!

create procedure sp_CompareDates

@dateToCompare datetime
as

select IdRec from tb_Recaudacion where

((SELECT LEFT(CONVERT(datetime, dtm_fecha, 120), 19)) =

(SELECT LEFT(CONVERT(datetime, @dateToCompare, 120), 19)))
  #11 (permalink)  
Antiguo 18/05/2011, 09:51
 
Fecha de Ingreso: mayo-2011
Ubicación: Managua, Nicaragua
Mensajes: 5
Antigüedad: 13 años, 6 meses
Puntos: 2
Información Respuesta: problema obteniendo id de un stored procedure sql

Está bien la opción por la que te fuiste, el único inconveniente es que si existen varios registros que fueron guardados a la misma hora (Hora y Minuto), te va a mandar varios id y puede que pasen dos escenarios:

1. Error en tiempo de ejecución.
2. Que te asigne un id que corresponde a otro registro que nada que ver con el querés ver.

Ahora, con respecto al otro problema con los id negativos, puede ser un error en tu procedimiento de selección.

Espero te sirva.
  #12 (permalink)  
Antiguo 18/05/2011, 10:17
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema obteniendo id de un stored procedure sql

Hola,
si, yo se, pero la fecha no es el unico campo por el que estoy restringiendo la busqueda, pero como la fecha era al que me estaba dando bateo... en el procediemitno que estoy utilizando, le añadí otro campo, asegurandome que solo me devolveira el id en cuestion.
Gracias de todas formas!!!

Etiquetas: procedure, sql, stored
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:14.