Usuário com melhor resposta
estou usando c.sharp e sqlserver e fiz uma consulta no banco so que tenho que converter OQUE a consulta me retorna para o tipo detetime alguém me ajuda segue o código abaixo

Pergunta
-
string slc = ("select data from produtos"); TENHO QUE CONVERTER ESSE SELECT PARA DATETIME
SqlCommand comand = new SqlCommand(slc, sqlcon);
DateTime dat = Convert.ToDateTime("PARA PASSAR AQUI DENTRO PARA FZ A COMPARAÇAO");
if (dat.Date == DateTime.Now.Date)
{
MessageBox.Show("venceu");
}
else
MessageBox.Show("nao venceu");
return;
}
}sexta-feira, 3 de março de 2017 03:17
Respostas
-
Link com o projeto; https://drive.google.com/open?id=0B6DfxCFJ7_bPMVJ4V2wwMEhFY0k
Enviei por email também.
Obrigado
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Sugerido como Resposta Mr. GMSOFT terça-feira, 7 de março de 2017 11:41
- Marcado como Resposta Robson William Silva terça-feira, 7 de março de 2017 12:26
terça-feira, 7 de março de 2017 11:41 -
Veja
private void btnvalidar_Click(object sender, EventArgs e) { List<produto> produtos = new List<produto>(); SqlConnection con = ConnectionFactory(); using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = con; con.Open(); cmd.CommandText = "select codigo,produto,data from produto"; SqlDataReader reader = cmd.ExecuteReader(); int contVencidos = 0; while (reader.Read()) { DateTime dat = Convert.ToDateTime(reader["data"].ToString()); if (dat.Date == DateTime.Now.Date) { //Adiciona os produtos vencidos em uma lista produtos.Add(new produto { codigo = Convert.ToInt32(reader["codigo"].ToString()), nome = reader["produto"].ToString(), data = Convert.ToDateTime(reader["data"].ToString()) }); contVencidos++; } } MessageBox.Show(string.Format(" {0} PRODUTOS VENCIDO ", contVencidos)); //Lê todos os produtos vencidos foreach (produto prod in produtos) { MessageBox.Show(string.Format("Codigo: {0} Produto {1} Vencimento: {2}",prod.codigo,prod.produto,prod.data)); } if (contVencidos == 0) { MessageBox.Show(" nada vencido "); con.Close(); } } } } //Classe de Produtos public class produto { public int codigo { get; set; } public string nome { get; set; } public DateTime data { get; set; } }
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Marcado como Resposta Robson William Silva quinta-feira, 9 de março de 2017 13:10
quinta-feira, 9 de março de 2017 00:19
Todas as Respostas
-
Tente dessa forma:
public bool ValidaData() { SqlConnection conn = new SqlConnection("sua string de conexao com o banco"); using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; cmd.CommandText = "SELECT data from produto"; SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { DateTime dat = Convert.ToDateTime(reader["data"].ToString()); if (dat.Date == DateTime.Now.Date) { MessageBox.Show("venceu"); return true; } else MessageBox.Show("nao venceu"); } conn.Close(); } return false; }
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Sugerido como Resposta Rodrigo CdS sexta-feira, 3 de março de 2017 11:33
sexta-feira, 3 de março de 2017 11:28 -
O que não deu certo, por que testei aqui esse mesmo código e funciona, mostre o erro se ocorreu
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
sexta-feira, 3 de março de 2017 16:14 -
private void button2_Click(object sender, EventArgs e)
{
{
public bool ValidaData() DA ERRO NA PALAVRA PUBLIC ME AJUDA OBS ESTOU NO WINDOWS FORM
{
SqlConnection con = new SqlConnection();
con.ConnectionString = @"Server = DESKTOP-6L87V8S\MYSQL; Database = controledeestoque;Trusted_Connection = True";
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = con;
cmd.CommandText = "SELECT data from produto";
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
DateTime dat = Convert.ToDateTime(reader["data"].ToString());
if (dat.Date == DateTime.Now.Date)
{
MessageBox.Show("venceu");
return true;
}
else
MessageBox.Show("nao venceu");
}
con.Close();
}
return false;
}
}
}
}
}- Editado caldeiraa sexta-feira, 3 de março de 2017 16:52
sexta-feira, 3 de março de 2017 16:51 -
É por que você copiou o código que passei sem entender o que eu tinha feito, o erro ocorria por que você estava usando a função dentro de outra, teste ai:
private void button2_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(); con.ConnectionString = @"Server = DESKTOP-6L87V8S\MYSQL; Database = controledeestoque;Trusted_Connection = True"; using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = con; cmd.CommandText = "SELECT data from produto"; SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { DateTime dat = Convert.ToDateTime(reader["data"].ToString()); if (dat.Date == DateTime.Now.Date) { MessageBox.Show("venceu"); return true; } else MessageBox.Show("nao venceu"); } con.Close(); } }
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
sexta-feira, 3 de março de 2017 17:08 -
Vi agora, você esta usando qual banco de dados?
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
sexta-feira, 3 de março de 2017 17:08 -
sql server management studiosexta-feira, 3 de março de 2017 17:16
-
Tem que converter para o padrão de seu computador:
SELECT CONVERT(VARCHAR(10),data, 101) as data from produto
O ideal é que você inspecione o valor que é retornadoA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
sexta-feira, 3 de março de 2017 17:24 -
seu código esta certo mais tem que ter somente uma data no banco ou se outras datas diferentes forem inserida em seguida da erro.pode me ajudar resolver esse conflito .obrigado
- Editado caldeiraa sexta-feira, 3 de março de 2017 18:17
sexta-feira, 3 de março de 2017 18:04 -
seu código esta certo mais tem que ter somente uma data no banco ou se outras datas diferentes forem inserida em seguida da erro.pode me ajudar resolver esse conflito
- Editado caldeiraa sexta-feira, 3 de março de 2017 18:17
sexta-feira, 3 de março de 2017 18:05 -
Se for somente uma data basta colocar top(1)
SELECT top(1) CONVERT(VARCHAR(10),data, 101) as data from produto
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
sexta-feira, 3 de março de 2017 20:40 -
se eu deixar só uma data no banco funciona compara direito.mais se eu cadastrar 3 ou mais datas não da certo fala que não a produtos vencidos sendo que não verdade tem.queria que o software percorresse todas as datas na coluna data da tabela produtos e depois mostrar se tem data == a date time .porque o software não esta fazendo isso.obrigado
SqlConnection con = new SqlConnection();
con.ConnectionString = @"Server = DESKTOP-6L87V8S\MYSQL; Database = controledeestoque;Trusted_Connection = True";
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = con;
con.Open();
cmd.CommandText = "SELECT data from produto";
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
DateTime dat = Convert.ToDateTime(reader["data"].ToString());
if (dat.Date == DateTime.Now.Date)
{
MessageBox.Show("produtos vencidos");
}
else
MessageBox.Show("nao há produtos vencidos");
return;
}
con.Close();
} }sexta-feira, 3 de março de 2017 22:00 -
Tente dessa forma:
Se é para percorrer o codigo é esse ai acima
public bool ValidaData() { SqlConnection conn = new SqlConnection("sua string de conexao com o banco"); using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; cmd.CommandText = "SELECT data from produto"; SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { DateTime dat = Convert.ToDateTime(reader["data"].ToString()); if (dat.Date == DateTime.Now.Date) { MessageBox.Show("venceu"); return true; } else MessageBox.Show("nao venceu"); } conn.Close(); } return false; }
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
domingo, 5 de março de 2017 20:09 -
MAIS O CODIGO VALIDA SOMENTE A PRIMEIRA DATA CADASTRADA NO BANCO.EXEMPLO SE VC CRIA O BANCO NOVAMENTE E CADASTRA UMA DATA QUE NAO ESTA VENCENDO AI VC ESCUTA O CODIGO E ELE FALA QUE NAO TA VENCENDO.AI SE VC CADASTRA UMA QUE ESTAR VENCENDO E ESCUTAR O CODIGO VAI FALAR QUE NAO HA PRODUTOS VENCIDOS.PARECE QUE A CONDIÇÃO NAO PERCORRE TODAS AS DATAS DO BANCO.PODE ME AJUDA POR FAVOR SERIO ME AJUDA POR FAVOR.segunda-feira, 6 de março de 2017 13:42
-
Mande para mim que eu olho o que pode ser:
gmsoft.informatica@gmail.comA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
segunda-feira, 6 de março de 2017 16:30 -
Link com o projeto; https://drive.google.com/open?id=0B6DfxCFJ7_bPMVJ4V2wwMEhFY0k
Enviei por email também.
Obrigado
segunda-feira, 6 de março de 2017 21:42 -
Vou olhar o seu código e retorno
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
terça-feira, 7 de março de 2017 11:23 -
Link com o projeto; https://drive.google.com/open?id=0B6DfxCFJ7_bPMVJ4V2wwMEhFY0k
Enviei por email também.
Obrigado
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Sugerido como Resposta Mr. GMSOFT terça-feira, 7 de março de 2017 11:41
- Marcado como Resposta Robson William Silva terça-feira, 7 de março de 2017 12:26
terça-feira, 7 de março de 2017 11:41 -
obrigadoterça-feira, 7 de março de 2017 12:17
-
ta dando dois bugs no software O PRIMEIRO bug. ele so avalia a primeira data que for cadastrada NO BANCO pode ter varias datas vencidas que o software fala que tem so uma data vencida.ou se a primeira data cadastrada não estiver vencida e depois castrar varias datas vencidas ele fala que não tem data vencida,parece que o software não confere todas as datas no banco.SEGUNDO erro nessa condição
while (reader.Read()) da esse erro exceção sem tratamento System.InvalidOperationException: 'Tentativa inválida de chamar Read quando o leitor estava fechado.'. CONSIDERAÇÕES VOCÊ JA ME AJUDOU MUITO NA EVOLUÇÃO DO SOFTWARE.MAIS ME AJUDE A TRATAR OS BUGS.POR FAVOR- Editado caldeiraa terça-feira, 7 de março de 2017 14:21
terça-feira, 7 de março de 2017 14:08 -
A própria mensagem já informa o problema, você não esta abrindo a conexão para poder ler os dados, tenha certeza absoluta que esta trazendo os dados.
Segunda é que coloquei o contador para informar quantas ocorrências de vencimento tinhas e coloquei uma observação para você "Não basta apenas verificar o que esta vencido mais sim o que esta vendido para auxiliar o usuário da identificação".
Mostre o print do erro quando ocorre
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
terça-feira, 7 de março de 2017 14:43 -
muito obrigado estou muito feliz esta dando certo,mais ele ta indo em data por data e comprando se estar vencida ai aparece exemplo data vencida então clico em ok ai valida a outra data e assim por diante ate percorre todos o banco DEPENDENDO DA QUANTIDADE DE PRODUTOS CADASTRADOS demoraria muito e no final mostra a quantidade de vencidas .assim muito obrigado msm.mais tem jeito de me ajudar so por performacer mesmo tem comparar todas as datas primeiro e depois me falar se tem tintas vencida ou não e mostrar a quantidade de tintas vencidas asssim seria mais pratico.MUITO OBRIGADO DEUS ABENÇOE.terça-feira, 7 de março de 2017 15:05
-
Vai demorar mesmo se ficar mostrando a mensagem, por isso que te enviei com um contador de ocorrencias vencidas e só mostrar no final do While
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
terça-feira, 7 de março de 2017 15:25 -
ata muito obrigado parei de mostrar a mensagem ficou menos demoradoterça-feira, 7 de março de 2017 19:53
-
Estava precisando desse código também,só que ao invés de retornar só a quantidade de produtos vencidos eu precisaria do nome e da data do produto. Gostaria de saber se tem como enviar essa informação pro e-mail da pessoa que vai gerenciar o estoque.
Obrigada!
terça-feira, 7 de março de 2017 22:26 -
Eu ja tinha colocado essa observação no código que te enviei a respeito da informação completa a ser entregue ao usuario.
Pode enviar por e-mail via smtp, para isso verifique se seu provedor de internet libera o envio por FTP alguns estão fazendo o bloqueio.
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
quarta-feira, 8 de março de 2017 12:09 -
Como que eu faço pra concatenar pra mostrar todos os dados do produto vencido? Eu preciso que mostre os dados pra que seja possível identificar qual é o produto que está vencido ao invés de só quantos estão vencidos.quarta-feira, 8 de março de 2017 13:33
-
Onde tem o contador, cria uma List<Produto> e vai adicionando na lista e depois para ler os dados adicionar após o While é só usar um foreach(Supondo que você tenha uma classe produtos para desserializar)
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
quarta-feira, 8 de março de 2017 14:07 -
O código que eu tenho é o que vc disponibilizou está resolvendo meu problema mais preciso que ele traga o produto é o código do produto. Tenho uma tabela produtos com campo produto tipo varchar.codigo tipo int.data tipo datetime. Quando a data do produto vencer trazer a quantidade de produtos e todas as informações dos produtos. Me ajuda por favor não estou conseguindo.
private void btnvalidar_Click(object sender, EventArgs e) { SqlConnection con = ConnectionFactory(); using(SqlCommand cmd = new SqlCommand())
{ cmd.Connection = con;
con.Open();
cmd.CommandText = "select * from produto";
SqlDataReader reader = cmd.ExecuteReader();
int contVencidos = 0; while (reader.Read())
{ DateTime dat = Convert.ToDateTime(reader["data"].ToString());
if (dat.Date == DateTime.Now.Date) { contVencidos++; } }
MessageBox.Show(string.Format(" {0} PRODUTOS VENCIDO ", contVencidos));
if (contVencidos == 0) { MessageBox.Show(" nada vencido "); con.Close(); } } }
Coloquei um pedaço do código aqui. Me ajude por favor!!! Obrigada!!!
- Editado Gabriela29 quarta-feira, 8 de março de 2017 22:58
quarta-feira, 8 de março de 2017 22:45 -
Veja
private void btnvalidar_Click(object sender, EventArgs e) { List<produto> produtos = new List<produto>(); SqlConnection con = ConnectionFactory(); using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = con; con.Open(); cmd.CommandText = "select codigo,produto,data from produto"; SqlDataReader reader = cmd.ExecuteReader(); int contVencidos = 0; while (reader.Read()) { DateTime dat = Convert.ToDateTime(reader["data"].ToString()); if (dat.Date == DateTime.Now.Date) { //Adiciona os produtos vencidos em uma lista produtos.Add(new produto { codigo = Convert.ToInt32(reader["codigo"].ToString()), nome = reader["produto"].ToString(), data = Convert.ToDateTime(reader["data"].ToString()) }); contVencidos++; } } MessageBox.Show(string.Format(" {0} PRODUTOS VENCIDO ", contVencidos)); //Lê todos os produtos vencidos foreach (produto prod in produtos) { MessageBox.Show(string.Format("Codigo: {0} Produto {1} Vencimento: {2}",prod.codigo,prod.produto,prod.data)); } if (contVencidos == 0) { MessageBox.Show(" nada vencido "); con.Close(); } } } } //Classe de Produtos public class produto { public int codigo { get; set; } public string nome { get; set; } public DateTime data { get; set; } }
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Marcado como Resposta Robson William Silva quinta-feira, 9 de março de 2017 13:10
quinta-feira, 9 de março de 2017 00:19 -
Nossa, muito obrigada mesmo! Vc me ajudou bastante! Obrigada mesmo!!! Deus abençoe!quinta-feira, 9 de março de 2017 12:40
-
nossa você e muito bom mesmo e.conseguir melhorar meu software seguindo as suas dicas .você tem dicas para ser um bom desenvolvedor? um dia quero chegar ao seu nível e ajudar as pessoas parabéns.obrigadoquinta-feira, 9 de março de 2017 14:05
-
Boa tarde,
Estou com um problema, o projeto tem uma parte que envia e-mail direto do app. Só que eu preciso digitar todas as informações pra poder enviar. Existe alguma forma de essas informações serem preenchidas previamente? No caso, o destinatário do e-mail e o assunto seriam sempre os mesmos. Já a informação no corpo do e-mail precisaria ser buscada direto do banco de dados a cada e-mail que fosse enviado. No caso, essa informação seria os produtos que estiverem vencidos. Essa listagem precisava ser enviada para o corpo do e-mail e o e-mail ser enviado automaticamente ao responsável.
Como que eu consigo fazer isso??? Já tentei de várias maneiras mas não consegui.
Alguém pode me ajudar por favor???? Obrigada!
sexta-feira, 10 de março de 2017 16:50 -
ola tudo bem? sera que podia me ajudar estou usando o código acima para controlar a validade envés da condição ser somente
if (dat.Date <= DateTime.Now.Date) que compara se tem data vencida ou esta vencendo no atual dia
queria que comparasse
if (dat.Date <= DateTime.Now.Date||DateTime.Now.Date + 4dias ou menos==data do produto que ira vencer)
se existem datas com que ira vencer daqui 4 dias ou menos
pode me ajudar por favor?
Obrigado!
- Editado caldeiraa sábado, 11 de março de 2017 03:29
sábado, 11 de março de 2017 00:51 -
Sempre cative a sua curiosidade em saber como as coisas funcionam, com certeza isso ajuda muito
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
sábado, 11 de março de 2017 10:38 -
if (dat.Date <= DateTime.Now.Date||DateTime.Now.Date.AddDays(4)
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
sábado, 11 de março de 2017 10:40 -
O ideal é que esta crie um form para o envio ou mantenha tudo no banco de dados (em uma tabela de email e suas configurações inclusive a padrão)
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
sábado, 11 de março de 2017 10:41 -
OBRIGADOsábado, 11 de março de 2017 13:22
-
OBRIGADO. COMO SEMPRE SUA DICA DE DE COMO FAZER DEU CERTINHOsábado, 11 de março de 2017 13:24
-
Por nada ;)
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
sábado, 11 de março de 2017 23:58