Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alissong

Consulta data no mysql versão 4.1.11

Recommended Posts

Pessoal,Crie um controle de estoque para meu pai, mas como estou usando o vb06 e não tenho cristral report para fazer relatórios, então, construir todos os relatórios usando datadrid e listview com o comando printer do vb06 para imprimi-los.Tenho um formulário que consulta vendas por período ou por cliente, mas quando peço para executar a consulta a listview não exibe os dados corretos. Veja o código:1º Existe um calendário que seleciona a data inicial.2º Existe um calendário que seleciona a data final.3º Um botão chamado cmdOKPrivate Sub cmdOk_Click()If dtFrom.Value > dtTo.Value ThenMsgBox " A data inicial deverá ser menor ou igual data final", vbInformation, "Data Inválida"Exit SubEnd IfSet rsTemp = New ADODB.RecordsetrsTemp.Open "Select fatura.*,cliente.cod_cliente,cliente.nome_cliente,funcionario.cod_funcionario,funcionario.nome_funcionario from fatura,cliente,funcionario Where cliente.cod_cliente=fatura.cod_cliente and funcionario.cod_funcionario=fatura.cod_funcionario and data_fatura >= '" & dtFrom.Value & " ' AND data_fatura <= '" & dtTo.Value & "'", mycon, adOpenKeyset, adLockPessimisticWith rsTempIf .RecordCount > 0 ThenListViewFaturamento.ListItems.Clear'Preenche o controle listview com os dados da tabelaDim I As IntegerFor I = 0 To rsTemp.RecordCount - 1Set lstItem = ListViewFaturamento.ListItems.Add(, , rsTemp!n_fatura)If Not IsNull(rsTemp(0)) ThenlstItem.SubItems(1) = "" & rsTemp!nome_clientelstItem.SubItems(2) = "" & rsTemp!nome_funcionariolstItem.SubItems(3) = "" & Format(rsTemp!total_fatura, "currency")lstItem.SubItems(4) = "" & Format(rsTemp!desconto, "currency")lstItem.SubItems(5) = "" & Format(rsTemp!pagamento, "currency")lstItem.SubItems(6) = "" & Format(rsTemp!troco, "currency")lstItem.SubItems(7) = "" & rsTemp!forma_pagtolstItem.SubItems(8) = "" & rsTemp!vencimentolstItem.SubItems(9) = "" & rsTemp!data_faturaEnd IfrsTemp.MoveNextNext IElseMsgBox "Não existem transacções para esse período !", vbInformation, "Período"ListViewFaturamento.ListItems.ClearExit SubEnd If.CloseEnd WithEnd SubPessoal, após varias tentativas descobrir que a data no mysql grava no formato americado: ex - 2006-11-20Então, mudei as configurações regionais para o formato AAAA-MM-DD e a consulta executou normalmente, mas não queria que fosse assim. Portanto, alguem pode me dizer como solucionar esse gargalo na consulta.Um abraço.Alisson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pega as datas escolhidas e muda o formato delas manualmente.E depois coloca na SQL essas datas no formato que o MySQL usa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Considerando que as datas vêm no formato dd/mm/yyyy você tem que tratá-las e passá-las para o formato yyyy-mm-dd.

 

Pode ser assim:

d = split(dtFrom.Value,"/")data_final = d(2) & "-" & d(1) & "-" & d(0)
Agora a variável data_final está no formato que o mysql aceita.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente colocar #, antes e dps das datas a serem comparadas pra ver se dah certo..ex: campo = '#" & var_data & "#' (naum lembro se tem apostrofo.. rs )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fillipe,Não funcionou veja as maneiras que tentei:1º - Set rsTemp = New ADODB.RecordsetrsTemp.Open "Select fatura.*,cliente.cod_cliente,cliente.nome_cliente,funcionario.cod_funcionario,funcionario.nome_funcionario from fatura,cliente,funcionario Where cliente.cod_cliente=fatura.cod_cliente and funcionario.cod_funcionario=fatura.cod_funcionario and data_fatura >= '#" & dtFrom.Value & "# ' AND data_fatura <= '#" & dtTo.Value & "#'", mycon, adOpenKeyset, adLockPessimistic2º - Set rsTemp = New ADODB.RecordsetrsTemp.Open "Select fatura.*,cliente.cod_cliente,cliente.nome_cliente,funcionario.cod_funcionario,funcionario.nome_funcionario from fatura,cliente,funcionario Where cliente.cod_cliente=fatura.cod_cliente and funcionario.cod_funcionario=fatura.cod_funcionario and data_fatura >= #" & dtFrom.Value & "# AND data_fatura <= #" & dtTo.Value & "#", mycon, adOpenKeyset, adLockPessimistic3º - Set rsTemp = New ADODB.RecordsetrsTemp.Open "Select fatura.*,cliente.cod_cliente,cliente.nome_cliente,funcionario.cod_funcionario,funcionario.nome_funcionario from fatura,cliente,funcionario Where cliente.cod_cliente=fatura.cod_cliente and funcionario.cod_funcionario=fatura.cod_funcionario and data_fatura BETWEEN '" & dtFrom.Value & "' AND '" & dtTo.Value & "'", mycon, adOpenKeyset, adLockPessimistic4º - Set rsTemp = New ADODB.RecordsetrsTemp.Open "Select fatura.*,cliente.cod_cliente,cliente.nome_cliente,funcionario.cod_funcionario,funcionario.nome_funcionario from fatura,cliente,funcionario Where cliente.cod_cliente=fatura.cod_cliente and funcionario.cod_funcionario=fatura.cod_funcionario and data_fatura BETWEEN '%" & dtFrom.Value & "%' AND '%" & dtTo.Value & "%'", mycon, adOpenKeyset, adLockPessimisticUm abraço.Alisson

Compartilhar este post


Link para o post
Compartilhar em outros sites

O VB aponta algum erro, ou simplesmente naum retorna o registro q você quer.. ??Transforme a data para o formato americano como o Luiz disse: yyyy-mm-dd ou sem hifem yyyymmdd

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fillipe,Muito obrigado...Conseguir resolver o problema: Fiz assim:Dim as Inicial as stringDim as Final as stringInicial = Format(data_inicial.Value, "YYYY/mm/dd")Final = Format(data_final.Value, "YYYY/mm/dd")If AdoPeriodo.State = 1 Then Set AdoPeriodo = Nothingsql = "select * from empenho where data_empenho BETWEEN '" & Inicial & "' AND '" & Final & "'"AdoPeriodo.Open sql, gconexao, adOpenKeyset, adLockOptimisticWith AdoPeriodoIf .RecordCount > 0 Then'Limpa o cabeçalhoListViewPeriodo.ListItems.ClearCall ListaPeriodoElseMsgBox "Não há transações para este intervalo de datas. Tente Novamente", vbInformationExit SubEnd If.CloseEnd WithE alterei as configurações regionais da data para dd/mm/aaaaaUm abraço.Alisson

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.