C sharp - Metodo con DateTime

 
Vista:

Metodo con DateTime

Publicado por luisgui (6 intervenciones) el 09/08/2009 06:35:25
Tengo un problema. Estoy desarrollando un ejercicio para el control de venta de boletos de un teatro y estoy tratando de crear un método que reciba tres datos como parametros (int,int,DateTime), bueno el date time se supone que sea una fecha corta DD/MM/AA pero no se como hacer.

Tengo lo siguiente:
private void btnVendidos_Click(object sender, EventArgs e)
{
totales = 200;
disponibles = TeatroSP.Cons1.Vendidos(int.Parse(cmbLoc.Text), int.Parse(cmbHra.Text), dtpDate.Value.Date);
if (disponibles > totales)
{
MessageBox.Show(disponibles.ToString());
}
else
{
MessageBox.Show("No hay suficientes lugares en la localidad y función seleccionada, por favor elija otra");
}
}

cmbLoc es un combo que muestra las localidades del teatro que tomo de una tabla de acces
cmbHra es otro combo que muestra el id de las horas de una tabla Horario en acces
y dtpDate es un DataTimePicker que tiene la fecha seleccionada en el form

estos datos los quiero mandar al método Vendidos(int,int DateTime), la estructura de mi método que esta en una clase aparte es la siguiente:

class Cons1
{
static int venta;
public static int Vendidos(int idLoc, int idHora, DateTime idFech)
{
string sent = "SELECT * FROM Ventas WHERE id_loca = " + idLoc + " and id_hora = " + idHora + " and fecha = '" + idFech + "'";
OleDbCommand comando = new OleDbCommand(sent, Conect.MiConexion);
OleDbDataReader registros = comando.ExecuteReader();
while (registros.Read()) ;
return venta;
}
}

por favor me urge ayuda, ya no se me ocurre nada y me urge. Debo entregar el lunes.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Metodo con DateTime

Publicado por Gabriel Brancolini (6 intervenciones) el 19/08/2009 00:52:57
Mira, dado el como lo escribiste, la salida mas rapida es que parsees la fecha a string con un tipo de formato corta, por ejemplo:
dtpDate.Value.Date.ToString("dd/MM/yyyy"); aunque recorda que la hora la podes mandar por aca tambien...
Por otro lado, ya que no usas Stored Procedures te conviene que en el metodo Vendidos recibas solo de tipo string, ya que para el equipo es muy costoso estar pasando de un formato a otro.

Ahora, eso es para que te ande y como digo en el trabajo, atarlo con alambre.

Primero, el metodo que apunta al evento del click del boton, alli tendrias que llamar a otro metodo que implemente el codigo que tenes.
Segundo, en caso que tu base de datos no soporte stored procedures... lo tenes que usar, pero en caso que no, tambien recorda que usar el comodin en un query no es buena practica porque obliga al motor un proceso extra que es ver que es lo que tiene que devolver. Tambien asi alli deberias usar un String.Format que te quedaria algo asi:

string sent =String.Format( "SELECT * FROM Ventas WHERE id_loca ={0} and id_hora = {1} and fecha = '{2}'", idLoc , idHora, idFech);

Tercero, la programacion usualmente se hace en capas, es decir que tendrias que armar un metodo que se encargue de conectarse y gestionar vs la base de datos como tenes ahi (DAL o data access layer), luego uno que represente la entidad o DTO (data table object) que represente la salida del query y por ultimo una capa de negocios.

em fin... espero que te sirva lo primero!!

Saludos desde Argentina

Gabriel Brancolini
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar