UTILIZANDO DATA COMO PARA CONSULTAR MYSQL

USUARIO.EXCLUIDOS 06/09/2007 15:34:27
#234542
Olá!

Estou fazendo um formulário de busca de dados em uma base MySQL. Quero dar a opção ao usuário de realizar consultas por período de cadastramento. Por isso ele(a) irá selecionar a data início e a data fim para gerar o relatório.

Porém lá no código, não sei como escrever a string correta para buscar os dados no MySQL. Alguém poderia me ajudar?

[]s
USUARIO.EXCLUIDOS 06/09/2007 17:16:09
#234571
Amigo não sei como você está fazendo a conexão mas o select seria

Select * from [Tabela] where dataInicio >= '" & TxtDataInicio.Text & "' and dataTermino <= '" & TxtDataTermino.Text & "'"

Algo assim, passe sua estrutura de banco para verificarmos aqui no forum melhor.
USUARIO.EXCLUIDOS 06/09/2007 17:45:28
#234577
Orlando,


Muito obrigada pela sua ajuda! Estava me batendo muito pra fazer isso.

Fiz uma adaptação do seu código e deu certo. Na form q estou construindo há dois campos: dtInicio para selecionar a data de Início e dtFim para selecionar a data Final. Separei-as por dia mes e ano e depois inseri as variáveis para a string SQL. Segue abaixo para caso mais alguém do forum esteja com a mesma dificuldade:

string diaInicio = dtInicio.Value.Day.ToString();
string mesInicio = dtInicio.Value.Month.ToString();
string anoInicio = dtInicio.Value.Year.ToString();

string diaFim = dtFim.Value.Day.ToString();
string mesFim = dtFim.Value.Month.ToString();
string anoFim = dtFim.Value.Year.ToString();

sqlStr = "SELECT * FROM tcadastro_principal WHERE grupo = '" + grupo.Text + "' AND contrato = '" + contrato.Text + "' AND tipo = '" + tipo.Text + "' AND data >= '" + anoInicio + "-" + mesInicio + "-" + diaInicio + "' AND data <= '" + anoFim + "-" + mesFim + "-" + diaFim + "'";


[]s
MORDOR 06/09/2007 20:44:52
#234594
Procure trabalhar com parâmetros nas consultas, é mais simples e você não precisa ficar se preocupando em como fazer essas concatenações.

Dim conn As New MySqlConnection("server=localhost;user id=root;password=password;database=database")
'campo2 é do tipo DATETIME
Dim cmd As New MySqlCommand("SELECT * FROM tabela1 WHERE campo2 BETWEEN ?param1 AND ?param2", conn)
Dim rd As MySqlDataReader

conn.Open()
cmd.Parameters.AddWithValue("?param1", DateTime.Now.AddDays(-1))
cmd.Parameters.AddWithValue("?param2", DateTime.Now.AddDays(1))
rd = cmd.ExecuteReader()

While rd.Read()
Console.WriteLine(rd("campo1") & " - " & rd("campo2") & " - " & rd("campo3"))
End While

rd.Close()
cmd.Dispose()
conn.Dispose()
MORDOR 06/09/2007 20:50:53
#234596
Olha seu código como ficaria muito mais legível.

sqlStr = "SELECT * FROM tcadastro_principal WHERE grupo = ?grupo AND contrato = ?contrato AND tipo = ?tipo AND data BETWEEN ?dtInicio AND ?dtFim";

cmd.Parameters.AddWithValue("?grupo", grupo.Text)
cmd.Parameters.AddWithValue("?contrato", contrato.Text)
cmd.Parameters.AddWithValue("?tipo", tipo.Text)
cmd.Parameters.AddWithValue("?dtInicio", dtInicio)
cmd.Parameters.AddWithValue("?dtFim", dtFim)
USUARIO.EXCLUIDOS 10/09/2007 09:10:54
#234835
Olá mordor!

Eu esqueci de falar no começo, o programa que estou fazendo é em C#. Vc sabe como fazer o que vc me mostrou em C#?
MORDOR 10/09/2007 09:57:46
#234853
Ficaria assim. Estou utilizando o driver MySql Connector/NET.

using MySql.Data.MySqlClient;


using (MySqlConnection connection = new MySqlConnection("server=localhost;user id=root;password=password;database=database"))
{
using (MySqlCommand command = new MySqlCommand("SELECT * FROM tabela1 WHERE campo2 BETWEEN ?param1 AND ?param2", connection))
{
connection.Open();
command.Parameters.AddWithValue("?param1", DateTime.Now.AddDays(-1));
command.Parameters.AddWithValue("?param2", DateTime.Now.AddDays(1));

MySqlDataReader reader = command.ExecuteReader();

while (reader.Read())
Console.WriteLine("{0} - {1} - {2}", reader["campo1"], reader["campo2"], reader["campo3"]);

reader.Close();
}
}
Tópico encerrado , respostas não são mais permitidas