NO MYSQL BEM CORRETO NO VB.NET VEM INCORRETO

LEANDRO 04/10/2010 21:56:54
#354397
Boa Noite.
Tenho um select que quando consulto no MySQL vem correto, mas quando abro o relatório vem duplicando os registros


        Dim sqlOS As String = [Ô]SELECT DISTINCT * FROM CADOS[Ô] & _
[Ô] INNER JOIN CADCLI ON CLI_ID = OS_IDCLI[Ô] & _
[Ô] INNER JOIN CADEMPRESA ON EMP_CODIGO = OS_EMP[Ô] & _
[Ô] WHERE OS_DTENTRADA BETWEEN [ô][Ô] & DataInicial & [Ô][ô] AND [ô][Ô] & DataFinal & [Ô][ô] GROUP BY OS_ID,CLI_ID having count(*) = 1[Ô]


Ja tentei de varias formas e nao consegui, esta foi a ultima forma que tentei

Obrigado desde ja
RICART 05/10/2010 08:24:55
#354405
melhor voce indicar exatamente quais campos vc precisa. do jeito que vc informou, está pesquisando todos os campos de todas as tabelas.
LEANDRO 05/10/2010 10:42:53
#354419
ja fiz isso e continua com o mesmo erro
NETMANIA 05/10/2010 11:21:49
#354427
Alterei o seu SQL para usar o comando Date Format para quando você informar a data que vem da sua aplicação, instrua o banco pesquisar com a data no formado dd/mm/aaaa.

Dim sqlOS As String = [Ô]SELECT DISTINCT * FROM CADOS[Ô] & _
[Ô] INNER JOIN CADCLI ON CLI_ID = OS_IDCLI[Ô] & _
[Ô] INNER JOIN CADEMPRESA ON EMP_CODIGO = OS_EMP[Ô] & _
[Ô] WHERE OS_DTENTRADA BETWEEN DATE_FORMAT([Ô] & DataInicial & [Ô], [ô]%d/%m/%Y[ô]) AND TO_DATE([Ô] & DataFinal & [Ô], [ô]%d/%m/%Y[ô]) GROUP BY OS_ID,CLI_ID having count(*) = 1[Ô]

Para referência quando a formatação de datas, você pode acessar estre link -> http://dev.mysql.com/doc/refman/4.1/pt/date-and-time-functions.html
LEANDRO 05/10/2010 11:32:07
#354430
Deu erro Amigão

Truncated incorrect datetime value: [ô]1998[ô]

o estranho de tudo isso, é que no MySQL Administrator isso funciona normal, mas quando jogo no VB.NET e abro o Crystal da duplicidade
PEGUDO 05/10/2010 12:18:05
#354436
Antes enviar o comando MySql, tente manipular suas strings [Ô]DataInicial[Ô] e [Ô]DataFinal[Ô] para o seguinte formato: MM/dd/yyyy e, antes e depois delas, coloque #:

Exemplo: Se sua data de início for 14/05/1998, envie para o MySql #05/14/1998#
Se sua data final for 14/06/1998, envie para o MySql #06/14/1998#

Dim sqlOS As String = [Ô]SELECT DISTINCT * FROM CADOS[Ô] & _
[Ô] INNER JOIN CADCLI ON CLI_ID = OS_IDCLI[Ô] & _
[Ô] INNER JOIN CADEMPRESA ON EMP_CODIGO = OS_EMP[Ô] & _
[Ô] WHERE OS_DTENTRADA BETWEEN #[Ô] & DataInicial & [Ô]# AND #[Ô] & DataFinal & [Ô]# GROUP BY OS_ID,CLI_ID having count(*) = 1[Ô]
LEANDRO 05/10/2010 14:35:50
#354446
Pegudo tentei o seu exemplo tambem,
deu o seguinte erro
Incorrect date value: [ô]#2010/01/01#[ô] for column [ô]OS_DTENTRADA[ô] at row 1

lembrando que tentei todas as formatações de data possiveis
NETMANIA 05/10/2010 14:41:43
#354447
Qual banco de dados que você está usando? Se você colocou # entre os campos datas em base de dados diferente do Access, vai dar erro!!!
LEANDRO 05/10/2010 14:47:56
#354451
eu utilizo MySQL

Amigos eu coloco no MYSQL e da certo
no VB.NET nãio funciona

deem uma olhada

    Public Sub GerarRelatorio(ByVal DataInicial As String, ByVal DataFinal As String)
[ô]definir as variáveis de conexão
Dim dsPc As New DataRelPeriodoOS

[ô]definir a string de conexão e as instruções sql para cada tabela
Dim sqlOS As String = [Ô]SELECT * FROM CADOS[Ô] & _
[Ô] INNER JOIN CADCLI ON CLI_ID = OS_IDCLI[Ô] & _
[Ô] INNER JOIN CADEMPRESA ON EMP_CODIGO = OS_EMP[Ô] & _
[Ô] WHERE OS_DTENTRADA BETWEEN [ô][Ô] & DataInicial & [Ô][ô] AND [ô][Ô] & DataFinal & [Ô][ô] GROUP BY OS_ID,CLI_ID[Ô]
Try
[ô]Criar os objetos dataadatper
objConexao.Conectar()
objConexao.da = New MySqlDataAdapter(sqlOS, objConexao.Conexao)
[ô]Preenche as tabelas do dataset usando o dataadapter
objConexao.da.Fill(dsPc, [Ô]cados[Ô])
objConexao.da.Fill(dsPc, [Ô]cadcli[Ô])
objConexao.da.Fill(dsPc, [Ô]cadempresa[Ô])

[ô]Preencher o relatório e exibí-lo no visualizador
Dim rptOS As New frmRelxOSPeriodo1
rptOS.SetDataSource(dsPc)
CrystalReportViewer.ReportSource = rptOS
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
PEGUDO 05/10/2010 15:34:00
#354463
Seguinte cara eu utilizo o MySql aqui na empresa também e, mesmo eu tendo colocado o campo de datas como do tipo [Ô]time[Ô], eu não coloco aspas simples.

Tente da seguinte maneira:

Utilize seu código do jeito que está, mas retire as aspas simples das variáveis DataInicial e DataFinal.

Abaixo tem um exemplo de código que eu uso para retornar datas:

RecSet = C.Execute([txt-color=#e80000][Ô]select twitter.*, Assuntos.assunto from assuntos RIGHT JOIN twitter ON assuntos.codassunto = twitter.codassunto [Ô][/txt-color] & Filtro & [txt-color=#e80000][Ô] order by codigo desc[Ô][/txt-color])

A variável Filtro contém minha data. Eu acho que assim seu código não dará erros e não retornará duplicidades. Espero que te ajude.
LEANDRO 05/10/2010 15:42:34
#354468
Pegudo deu o seguinte erro

Incorrect date value: [ô]1998[ô] for column [ô]os_dtentrada[ô] at row 1

o que estou querendo mostrar a vocês é que no MYSQL ADMINISTRATOR funciona
e no VB.NET NAO funciona, o erro não deve estar no SELECT
Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas