INTERVALO DE DATAS.

NICKOSOFT 14/10/2014 10:47:46
#441908
veja SELECT * FROM OS seleciona tudo da tabela OS, agora pergunto, o nome do funcionário não esta dentro dessa tabela né?
existe o inner join q pode resolver, com tanto q exista qq relação entre a tabela OS e onde esta o nome do funcionário
por ex na OS vc tem codfuncionario, logo espera-se q na tabela de funcionários tenha o cod e nome dos mesmos, ai vc consegue usar o inner join tranquilamente
VYNICIUSHENRIQU 14/10/2014 11:10:06
#441909
sim o nome do funcionario estra dentro da tabela OS , pois quando abrem a OS a combo carrega os funcionarios que foram cadastrados na tabela FUNCIONARIO. e salva dentro da coluna NOMEFUNCIONARIO da tabela OS... consegue entender ? dentro da TABELA OS. existe uma coluna chamada NOMEFUNCIONARIO , que contem o nome dos funcionarios que realizam serviços... como no relatorio de intervalo de datas eu uso esse SQL

   .CommandText = [Ô]SELECT * FROM OS WHERE data between @dtInicio And @dtFim order by data[Ô]  



e ele faz o filtro na datagrid com todos os serviços que foram realizados no periodo , pois o WHERE esta para a coluna [ô]data[ô] ,. queria saber como eu faço. pra usar esse mesmo tipo de codigo , so que tambem buscando na coluna NOMEFUNCIONARIO , o texto que tiver dentro do cboFuncionario2.


desculpe se nao consigo explicar claramente, e que estou em uma reuniao no momento. mas agradeço muito por estar respondendo.
OMAR2011 14/10/2014 11:19:07
#441911
.CommandText = [Ô]SELECT * FROM OS WHERE data between @dtInicio And @dtFim And NOMEFUNCIONARIO = [ô][Ô] & cboFuncionario2.Text & [Ô][ô] order by data[Ô]
Faça um teste.
F001E 14/10/2014 11:38:06
#441913
Primeiramente antes de tudo o NOME do Funcionário não deveria estar nessa TABELA de OS e sim o CÓDIGO do Funcionários. Desse jeito não dá para ter integridade dos dados, ou seja, fazer um relacionamento entre as tabelas e sem contar que com o tempo na medida que os dados vão crescendo esse banco vai perder muito em performance.
VYNICIUSHENRIQU 14/10/2014 11:42:20
#441914
Isso cara, muito obrigado. me ajudou, deu apenas um erro aque ainda tenho de verificar , mas filtrou.... pode me dar uma explicaçao de onde eu estava errado .. ou o qe estava faltado fazer ? ,

preciso fazer outro filtro parecido mais alem, .. seria a mesma coisa praticamente, mas apenas com uma data,
NICKOSOFT 14/10/2014 16:00:09
#441918
ah entendi agora, pra mim q vc não tava conseguindo retornar o nome, eu pensando na integridade como foi falado.....
vários critérios de busca vc usa where critério and outro critério and outro critério e assim vai....

procure estudar e entender o lance da integridade q vera q seu BD pode ser muito melhorado....
assim de imediato eu já visualizo uma falha grave na hora da inserção das OS, se quem estiver inserindo os dados abrevia o nome de um fulado [Ô]ze s[Ô] o outro poe [Ô]ze da silva[Ô] mais um vem e poe so [Ô]ze[Ô], veja bem, são todos do mesmo funcionário, porem vc tem 3 nomes diferentes, e cada um retorna apenas as OS cadastradas com esse codinome q usou pra pesquisa....
seu combo lista nomes dos funcionários, vai listar os 3 tmb....vai se tornando complicado, qnd tiver estudando isso pode parecer difícil, chato, mas qnd trabalhar com um BD grande vai ver o qnt valeu a pena
VYNICIUSHENRIQU 14/10/2014 16:36:34
#441921
Tive de abrir novamente o topico, pois algo curioso ocorreu durante a apresentação do trabalho.


1° - quando busco entre duas datas EX : 01-10-2014 até 17-10-2014 , ele mostra os registros apenas do dia 02-10-2014 até 17-10-2014

2° - quando fiz a consulta entre meses diferentes EX: 27-09-2014 ate 10-10-2014 , ele mostra um resultado absolutamente louco...


alguem poderia me dizer o que acontece ?


o codigo esta assim...



    Dim cn As New OleDb.OleDbConnection
Dim cmd As New OleDb.OleDbCommand
Dim Da As New OleDb.OleDbDataAdapter
Dim Dt As New DataTable
Dim dtinicio As String
Dim dtfim As String
dtinicio = dtpInicio.Value.Date.ToString
dtfim = dtpFim.Value.Date.ToString
cn.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Firebird.mdb[Ô]
cn.Open()
Try
With cmd
.CommandType = CommandType.Text
cmd.Parameters.AddWithValue([Ô]@dtInicio[Ô], dtinicio)
cmd.Parameters.AddWithValue([Ô]@dtFim[Ô], dtfim)
.CommandText = [Ô]SELECT * FROM OS WHERE data between @dtInicio and @dtFim[Ô] [ô] creio que aqui deva ser o erro...
.Connection = cn
End With
With Da
.SelectCommand = cmd
Dt = New DataTable
.Fill(Dt)
OSDataGridView.DataSource = Dt
End With
Catch ex As Exception
MsgBox(ex.Message)
End Try
cmd.Parameters.Clear()
Página 2 de 2 [17 registro(s)]
Faça seu login para responder