C sharp - error con los datetimepicker

   
Vista:

error con los datetimepicker

Publicado por Graciela (7 intervenciones) el 16/06/2011 21:19:49
hola a todos tengo un problema con los datetime picker al,guardarlos en el gridview

mi codigo es le siguiente

tpassword pass = new tpassword();

pass.guardarpas(txtusuario.text, dtpfecha.value.date, dtphora.value.hour, txtpassword.text);

el error me sale en donde esta subrayado

es este el error

cannot convert from 'int' to 'system.date.time'

¿me podrian ayudar?
acepto toda la ayuda que sea posible
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

error con los datetimepicker

Publicado por Sebastian Cruz (51 intervenciones) el 16/06/2011 22:00:06
Hola Graciela por lo que mencionas en tu problema al parecer tu funcion guardarpas en el segundo parametro esta esperando un campo del tipo fecha (date.time) pero tu le estas pasando un entero ya que eso es lo que te devuelve la propiedad Hour. Si no es eso seria bueno que pusieses el codigo de la funcion guardarpas como para saber que es lo que puede estar pasando. Saludos =)
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

error con los datetimepicker

Publicado por Sebastian Cruz (51 intervenciones) el 16/06/2011 22:06:47
Me equivoque de parametro era el tercero al cual hacia mencion en el comentario anterior. Pero como te dije lo mas seguro es que sea solo eso de que el tipo que esta esperando es de un tipo y vos le estas pasando un parametro con otro tipo de dato distinto.
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

error con los datetimepicker

Publicado por graciela (7 intervenciones) el 16/06/2011 22:16:16
lo que pasa es que me guie como lo tenia anteriormente en los otros formularios y como no me aparecia ningun error en el primer date time picker por eso solo busque la sememjanza para que me aceptara la hora
dtpfecha.Value.Date si me funciona por lo que de ahi tome el ejemplo para buscar el codigo que me aceptara la hora, pero bueno.
intentare subir el codigo completo para que sea analizado
Gracias sebastian
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

error con los datetimepicker

Publicado por graciela (7 intervenciones) el 17/06/2011 19:08:29
aqui esta mi codigo junto con la clase un poco modificado que en el ejemplo anterior pero con el mismo error

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//se crea la libreria de acceso a la base de datos
using System.Data.SqlClient;


namespace sistema_deposito1
{
public partial class frmpassword : Form
{
conexion conect = new conexion();
DataSet ds = new DataSet();
SqlCommand com;

public bool valido = false;
public frmpassword()
{
InitializeComponent();
}

private void cmdaceptar_Click(object sender, EventArgs e)
{
if (txtcontrasena.Text.Trim() == "deposito1")
{
//principal princ = new principal();
//princ.Show();
valido = true;
this.Close();
}
else
{
MessageBox.Show("ERROR DE INSERCIÓN, ACCESO DENEGADO", "ERROR: ", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtcontrasena.Focus();
txtcontrasena.SelectAll();
}

contrasena contrasen = new contrasena();

if (txtusuario.Text.Trim() == " " || txtcontrasena.Text.Trim() == " ")
{
MessageBox.Show("FALTAN DATOS POR COMPLETAR", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}

contrasen.guardarcontrasen(txtusuario.Text, dtpfecha.Value.Date, dtphora.Value.Hour, txtcontrasena.Text);
ds = contrasen.llenargrid();

MessageBox.Show("DATOS ALMACENADOS");
dgvcontrasena.DataSource = ds.Tables["dcontrasena"];
}

private void tsbnuevo_Click(object sender, EventArgs e)
{
txtusuario.Clear();
txtcontrasena.Clear();
}

private void tsbconsultar_Click(object sender, EventArgs e)
{
contrasena contrasen = new contrasena();

ds = contrasen.consultacontrasena(txtusuario.Text, dtpfecha.MinDate);
dgvcontrasena.DataSource = ds.Tables["dcontrasena"];
}

private void tsbmodificar_Click(object sender, EventArgs e)
{
contrasena contrasen = new contrasena();


if (txtusuario.Text.Trim() == " " || txtcontrasena.Text.Trim() == " ")
{
MessageBox.Show("faltan datos por completar", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

return;
}

contrasen.modificarcontrasena(txtusuario.Text, dtpfecha.Value.Date, dtphora.Value.Hour, txtcontrasena.Text);
ds = contrasen.llenargrid();

MessageBox.Show("DATOS MODIFICADOS");
dgvcontrasena.DataSource = ds.Tables["dcontrasena"];
}

private void tsbeliminar_Click(object sender, EventArgs e)
{
contrasena contrasen = new contrasena();

if (MessageBox.Show("Esta seguro que desea eliminar", "Información", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.OK)
{
contrasen.eliminarcontrasena(txtusuario.Text, dtpfecha.MinDate);
com.CommandText = "delete from contrasena where usuario = @usuario";
com.CommandText = "delete from contrasena where fecha = @fecha";

com.ExecuteNonQuery();
}
}

private void dgvcontrasena_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
Int32 i;
i = dgvcontrasena.CurrentRow.Index;

txtusuario.Text = dgvcontrasena[0, i].Value.ToString();
dtpfecha.Text = dgvcontrasena[1, i].Value.ToString();
dtphora.Text = dgvcontrasena[2, i].Value.ToString();
txtcontrasena.Text = dgvcontrasena[3, i].Value.ToString();
}
}
}



Clase contrasena

using System;
using System.Collections.Generic;
using System.Text;
//se crean las librerias que se usaran para la base de datos
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;


namespace sistema_deposito1
{
class contrasena
{
conexion conect = new conexion();
DataSet ds = new DataSet();

public contrasena()
{
ds.Tables.Add("dcontrasena");
}

public void guardarcontrasen(string usuario, DateTime fecha, DateTime hora, string contrasena)
{
SqlCommand com = new SqlCommand("", conect.conect());

com.CommandText = "exec sp_inscontrasena @usuario, @fecha, @hora, @contrasena";
com.Parameters.Add(new SqlParameter("@usuario", usuario));
com.Parameters.Add(new SqlParameter("@fecha", fecha));
com.Parameters.Add(new SqlParameter("@hora", hora));
com.Parameters.Add(new SqlParameter("@contrasena", contrasena));

try
{
com.ExecuteNonQuery();
}
catch (SqlException se)
{
MessageBox.Show("ERROR: " + se.Message, "Error");
}
}

public DataSet llenargrid()
{
SqlCommand com = new SqlCommand("", conect.conect());
SqlDataAdapter lector = new SqlDataAdapter();

com.CommandText = "select * from contrasena";

try
{
lector.SelectCommand = com;
lector.Fill(ds.Tables["dcontrasena"]);
}
catch (SqlException se)
{
MessageBox.Show("Error" + se.Message, "Error");
}
return ds;
}

public DataSet consultacontrasena(string usuario, DateTime fecha)
{
SqlCommand com = new SqlCommand("", conect.conect());
SqlDataAdapter lector = new SqlDataAdapter();

com.CommandText = "select * from contrasena where usuario like '%" + usuario.Trim() + "%'";
com.CommandText = "select * from contrasena where fecha like '%" + fecha.Date.ToShortDateString() + "&'";

lector.SelectCommand = com;

try
{
lector.Fill(ds.Tables["dcontrasena"]);
}
catch (SqlException se)
{
MessageBox.Show("Error" + se.Message, "Error de consulta");
}
return ds;
}

public void modificarcontrasena(string usuario, DateTime fecha, DateTime hora, string contrasena)
{
SqlCommand com = new SqlCommand("", conect.conect());

com.CommandText = "exec sp_updcontrasena @usuario, @fecha, @hora, @contrasena";

com.Parameters.Add(new SqlParameter("@ususario", usuario));
com.Parameters.Add(new SqlParameter("@fecha", fecha));
com.Parameters.Add(new SqlParameter("@hora", hora));
com.Parameters.Add(new SqlParameter("@contrasena", contrasena));

try
{
com.ExecuteNonQuery();
}
catch (SqlException se)
{
MessageBox.Show("Error" + se.Message, "Error de datos");
}
}

public void eliminarcontrasena(string usuario, DateTime fecha)
{
SqlCommand com = new SqlCommand("", conect.conect());

com.CommandText = "exec sp_delcontrasena @usuario, @fecha";

com.Parameters.Add(new SqlParameter("@usuario", usuario));
com.Parameters.Add(new SqlParameter("@fecha", fecha));

try
{
com.ExecuteNonQuery();
MessageBox.Show("Dato eliminado", "exito");
}

catch (SqlException se)
{
MessageBox.Show("Error" + se.Message);
}
}
}
}
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

error con los datetimepicker

Publicado por Sebastian Cruz (51 intervenciones) el 18/06/2011 02:37:40
Hola Graciela segun lo que veo tu funcion esta definida asi

public void guardarcontrasen(string usuario, DateTime fecha, DateTime hora, string contrasena)

pero en la linea donde dices que se presenta el error tienes lo siguiente

contrasen.guardarcontrasen(txtusuario.Text, dtpfecha.Value.Date, dtphora.Value.Hour, txtcontrasena.Text);

pero el error se da en el tercer parametro por que dtphora.Value.Hour devuelve como resultado un int, mientras que tu funcion esta esperando un campo DateTime. Y de ahi q al momento de compilar te genere un error. Si en tu base de datos el sp esta esperando que el parametro @hora sea un tipo DateTime entonces tendrias que cambiar la linea por lo siguiente


contrasen.guardarcontrasen(txtusuario.Text, dtpfecha.Value.Date, dtphora.Value.ToShortTimeString(), txtcontrasena.Text);

eso te va a devolver la hora en formato hh:mm am/pm. Pero si lo que querias era solo pasarle solo el numero que representa la hora entonces tendrias que hacer que tu funcion quede asi

public void guardarcontrasen(string usuario, DateTime fecha, int hora, string contrasena)

y luego la llamas como la pusiste en tu ejemplo

contrasen.guardarcontrasen(txtusuario.Text, dtpfecha.Value.Date, dtphora.Value.Hour, txtcontrasena.Text);

Y asi si tendria que funcionar. Bueno espero q haya sido de utilidad, existos con ese codigo y te envio un gran saludo
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

error con los datetimepicker

Publicado por graciela (7 intervenciones) el 18/06/2011 17:31:12
muchas gracias Sebastian voy a usar tu codigo para mi sistema.
Fuiste de gran ayuda.
Te envio saludos
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

error con los datetimepicker

Publicado por graciela (7 intervenciones) el 21/06/2011 17:13:57
oye Sebastian ya le compuse como me dijiste pero me salie este error "cannot convert from 'string' to 'System.Date.time'" y le modifique de esta manera

contrasen.guardarcontrasen(txtusuario.Text, dtpfecha.Value.Date, dtphora.Value.ToLocalTime(), txtcontrasena.Text);

pero ahora nose que es lo que me devolvera el tercer parametro.
¿tu sabes que es lo que devuelve?
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

error con los datetimepicker

Publicado por Sebastian Cruz (51 intervenciones) el 21/06/2011 18:03:22
Hola Graciela tienes razon con la funcion, la verdad que por las prisas no puse bien cual era la funcion adecuada, pero como tu dices la funcion dtphora.Value.ToLocalTime() es la correcta, ya que esta funcion te devuelve un objeto DateTime, y este objeto posee en su interior la informacion de la hora. Luego para pasar los valores que tiene almacenado esta funcion basta con modificar lo siguiente

//Esta es tu funcion que espera q la hora sea un date time
public void guardarcontrasen(string usuario, DateTime fecha, DateTime hora, string contrasena)
{
SqlCommand com = new SqlCommand("", conect.conect());

com.CommandText = "exec sp_inscontrasena @usuario, @fecha, @hora, @contrasena";
com.Parameters.Add(new SqlParameter("@usuario", usuario));
com.Parameters.Add(new SqlParameter("@fecha", fecha));
com.Parameters.Add(new SqlParameter("@hora", hora)); //Si el tipo de dato que hay que almacenar es del tipo datetime
com.Parameters.Add(new SqlParameter("@contrasena", contrasena));

Si el tipo de dato que espera tu sp es por ejemplo un string entonces

public void guardarcontrasen(string usuario, DateTime fecha, DateTime hora, string contrasena)
{
SqlCommand com = new SqlCommand("", conect.conect());

com.CommandText = "exec sp_inscontrasena @usuario, @fecha, @hora, @contrasena";
com.Parameters.Add(new SqlParameter("@usuario", usuario));
com.Parameters.Add(new SqlParameter("@fecha", fecha));
com.Parameters.Add(new SqlParameter("@hora", hora.ToShortTimeString())); //Si el tipo de dato que hay que almacenar es del tipo string
com.Parameters.Add(new SqlParameter("@contrasena", contrasena));

Espero haber aclarado un poco el panorama, pero en resumidas cuentas esta bien la funcion que utilizaste y depende del campo de tu bd como tienes que pasar por parametro el dato de la hora a tu sp
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

error con los datetimepicker

Publicado por Sebastian Cruz (51 intervenciones) el 21/06/2011 20:24:45
Hola Graciela como estas, si lo que deseas es que el control solo muestre los datos de la hora minuto y segundos tienes que hacerle click al control e ir a propiedades, en la ventana de propiedades seleccionas la opcion que dice format y seleccionas la opcion time, luego te vas a la opcion ShowUpDown y seleccionas la opcion true, con esto el control solo va a mostrar los campos referidos a la hora.

Bueno te deseo la mejor de las suertes con ese codigo, saludos!!!
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

error con los datetimepicker

Publicado por graciela (7 intervenciones) el 23/06/2011 17:55:27
ok, Sebastian ya te entendi muchas gracias me sirvio de mucho tu ayuda espero volver a verte.
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

error con los datetimepicker

Publicado por graciela (7 intervenciones) el 21/06/2011 18:12:43
ok. Gracias por el dato, yo en la bd lo guardo igual de tipo datetime.
oye otra pregunta, claro sin que te molestes.

cuando le doy clik a la flechita del datetimepicker que me guarda la hora aparece un calendario

ahora mi pregunta es

¿hay una propiedad que me permita cambiar el calendario por un relog?
o ya esta asi predeterminado
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