Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

joven

Filtro

Mensagens Recomendadas

joven

Boa tarde,

Estou a experimentar fazer um filtro pra uma db em access.

a DB tem só uma tabela com os campos valor e data.

Ao inserir na data escreve a data e hora.

gostava de saber se dá pra fazer um filtro em que devolvia os obj daquele dia. é possivel?

leitura da BD:

valores - data

29 - 12-05-2010 14:42:14

24 - 12-05-2010 14:42:21

16 - 12-05-2010 16:51:40

string que testei para fazer a procura:

strSQL = "SELECT * FROM Table1 WHERE data=" + str2[0];

estou a experimentar em C#

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Sim é.

Usas o operador between e incluis a data com a hora de 00:00:00 até 23:59:59.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joven

boas

consegui fazer doutra maneira

strSQL = "SELECT * FROM Table1 WHERE data LIKE '" + str2[0] + "%'";

agora tenho outra duvida

será possivel que ele devolver dados que verifico dois campos?

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Não percebi a pergunta.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joven

a intenção é devolver uma linha da tabela, aonde peço para verificar dois valores que insiro no comando.

tipo "SELECT * FROM Table1 WHERE data = '" + var1 + "' AND var = '" + var2 + "'"

mas n funciona  :wallbash:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

A resposta à tua pergunta anterior é sim, é possível. Podes colocar quantos filtros entenderes.

Se não funciona lê a mensagem de erro e corrige de acordo com a mesma.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joven

boas já consegui por a funcionar, era a culpa das ', mas agora estou outra vez com problemas.

estou a utilizar a seguinte string

string strSQL = "SELECT id FROM TabGota WHERE Km = " 
+ dataGridView1[1, dataGridView1.CurrentRow.Index].Value.ToString() +
" AND LGasoleo = " + dataGridView1[2, dataGridView1.CurrentRow.Index].Value.ToString();

e está-me a dar o seguinte erro.

errogb.jpg

Km é um inteiro e Lgasoleo é Decimal.

Alguem tem alguma ideia?

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Os valores decimais nas bases de dados usam sempre . como separador decimal e tu tens uma vírgula.

Se leres a mensagem de erro mostra-te que tens um erro de sintaxe precisamente devido a uma virgula.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joven

boas

agora estou com outro erro ainda não cosegui resolver.

erro:

errorlf.jpg

esta é a string que estou a utilizar

strSQL = "UPDATE TabGota SET Data='" + DatePick.Value.ToShortDateString() + "', Km='" + txtKm.Text + "',
LGasoleo='" + txtLitros.Text + "', PGasoleo='" + txtPago.Text + "', PLitro='" + txtPLitro.Text + "', Desc='" + 
txtDesconto.Text + "', Dist='" + txtDistr.Text + "', Local='" + txtLocal.Text + "' WHERE id=" + id;

O que acham?

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

A mensagem de erro é bem explicita: tens um erro de sintaxe no teu update.

Faz popup do comando que estás a tentar enviar e vê qual é o erro, é muito mais simples do que detectá-lo no meio do código.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joven

boas

já estou a ficar doido porque não consigo encontrar o erro  :wallbash:

private void btOk_Click(object sender, EventArgs e)
        {
            OleDbCommand command;
            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0; DATA Source=" + db);

            string strSQL = string.Empty;

            strSQL = "UPDATE TabGota SET Data='" + DatePick.Value.ToShortDateString() + "', Km='" + txtKm.Text + "', LGasoleo='" + txtLitros.Text + "', PGasoleo='" + txtPago.Text + "', PLitro='" + txtPLitro.Text + "', Desc='" + txtDesconto.Text + "', Dist='" + txtDistr.Text + "', Local='" + txtLocal.Text + "' WHERE id=" + id;
            MessageBox.Show(strSQL, "", MessageBoxButtons.OK);

            if (strSQL != "UPDATE TabGota SET WHERE id=" + id)
            {
                try
                {
                    command = new OleDbCommand(strSQL, conn);
                    conn.Open();
                    command.ExecuteNonQuery();
                }
                catch (Exception erro)
                {
                    MessageBox.Show("Erro: \n" + erro.ToString(), "Erro!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    conn.Close();
                    MessageBox.Show("Os dados foram alterados!!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.Close();
                }
            }
            else
            {
                MessageBox.Show("Os dados não foram alterados!!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

O que é mais estranho é que se tirar o "Desc" e "Local" já funciona  :wallbash:.

na messagebox dá a string certa ;)

msgbox.jpg

Se o problema fosse da "," dava outro tipo de erro.

Deixo a imagem da tabela:

gota2.jpg

Alguma opnião?

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Os  Number e Currency não necessitam de ', mas o SQL Server é bastante permissivo quanto a isso.

Já não é permissivo quanto ao separador decimal.

Nos Number e Currency estás a enviar , como separador e deves usar ..


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.