CONSULTA EM SQL
Tenho um um relatório que consulta em SQL para que me filtre entre o numero x e o numero y
Mas como fazer para dar ordem á consulta numeros alternados 1, 7 , 14
Obrigado pela ajuda.
Private Sub cmdOK_Click()
Unload Me
End Sub
Sub Filtrar()
On Error GoTo Err_Filtrar
Dim MyDB As Database
Dim MyQuery As QueryDef
Set MyDB = Workspaces(0).OpenDatabase(MyPath & "Etiquetas.mdb")
'Abre uma consulta para edição
Set MyQuery = MyDB.OpenQueryDef("ConsultaEtiquetas")
'Seleciona os campos da consulta
MySQL$ = " SELECT DISTINCTROW Etiquetas.NOME,Etiquetas.CodPostal,Etiquetas.Telefone,Etiquetas.Telemóvel,Etiquetas.Contribuinte,Etiquetas.Num,Etiquetas.Empresa,Etiquetas.Particular,Etiquetas.PSim,Etiquetas.PNao,Etiquetas.SSim,Etiquetas.SNao"
'Especifica a tabela a ser consultada
MySQL$ = MySQL$ & " From Etiquetas "
'verifica a opçao selecionada de relatórios
If OptGeral.Value = False Then
If OptCidade.Value = True Then
' Se for por cidade, especifica que o campo cidade da tabela deverá ser igual
' ao conteúdo da caixa de combinação CmbSeleção
'If CmbSelecao.Text <> "" Then
'MySQL$ = MySQL$ & " WHERE Etiquetas.AGCIDADE like " & Chr(39) & CmbSelecao.Text & Chr(39)
'End If
Else
If OptMes.Value = True Then
'if for por data, especifia que o campo data deve estar entre
'os conteúdos das caixas de texto TxtInicio e TxtFim
'Também é preciso formatar a data para o padrão americano mm/dd/yy
If TxtInicio.Text <> "" And TxtFim.Text <> "" Then
MySQL$ = MySQL$ & " WHERE Etiquetas.num BETWEEN " & TxtInicio.Text & " AND " & TxtFim.Text
End If
End If
End If
End If
MySQL$ = MySQL$ & " ORDER BY Etiquetas.Num " 'Ordena por nome
MyQuery.SQL = MySQL$ 'Executa a Query
Exit_Filtrar:
Exit Sub
Err_Filtrar:
MsgBox Error$
Resume Exit_Filtrar
End Sub
Private Sub CmdVisualizar_Click()
Filtrar 'Chamada da função Filtrar
CrystalReport1.DataFiles(0) = MyPath & "Etiquetas.mdb" 'Espedifica o BD
CrystalReport1.ReportFileName = MyPath & "Etiqueta.rpt" 'Especifica o Relatório
CrystalReport1.Destination = crptToWindow 'Especifica se é visualização ou Impressão
CrystalReport1.Action = 1 'Executa o Crystal Report.
End Sub
Private Sub Form_Load()
Dim MyDB As Database
Dim MySet As Recordset
If Len(App.Path) > 3 Then
MyPath = App.Path & "\"
Else
MyPath = App.Path
End If
Set MyDB = Workspaces(0).OpenDatabase(MyPath & "Etiquetas.mdb")
Set MySet = MyDB.OpenRecordset("ConsultaEtiquetas")
End Sub
Private Sub CmdImprimir_Click()
Filtrar
CrystalReport1.DataFiles(0) = MyPath & "Etiquetas.mdb"
CrystalReport1.ReportFileName = MyPath & "Etiqueta.rpt"
CrystalReport1.Destination = crptToPrinter
CrystalReport1.Action = 1
End Sub
Private Sub Label3_Click()
End Sub
Private Sub OptCidade_Click()
'CmbSelecao.Enabled = True
TxtInicio.Enabled = False
TxtFim.Enabled = False
End Sub
Private Sub OptGeral_Click()
' If OptGeral.Value = True Then
TxtInicio.Enabled = False
TxtFim.Enabled = False
'CmbSelecao.Enabled = False
' End If
' If OptCidade.Value = True Then
'CmbSelecao.Enabled = True
' End If
'If OptMes.Value = True Then
' CmbSlecao.Enabled = True
'' End If
End Sub
Private Sub OptMes_Click()
TxtInicio.Enabled = True
TxtFim.Enabled = True
'CmbSelecao.Enabled = False
End Sub
Mas como fazer para dar ordem á consulta numeros alternados 1, 7 , 14
Obrigado pela ajuda.
Private Sub cmdOK_Click()
Unload Me
End Sub
Sub Filtrar()
On Error GoTo Err_Filtrar
Dim MyDB As Database
Dim MyQuery As QueryDef
Set MyDB = Workspaces(0).OpenDatabase(MyPath & "Etiquetas.mdb")
'Abre uma consulta para edição
Set MyQuery = MyDB.OpenQueryDef("ConsultaEtiquetas")
'Seleciona os campos da consulta
MySQL$ = " SELECT DISTINCTROW Etiquetas.NOME,Etiquetas.CodPostal,Etiquetas.Telefone,Etiquetas.Telemóvel,Etiquetas.Contribuinte,Etiquetas.Num,Etiquetas.Empresa,Etiquetas.Particular,Etiquetas.PSim,Etiquetas.PNao,Etiquetas.SSim,Etiquetas.SNao"
'Especifica a tabela a ser consultada
MySQL$ = MySQL$ & " From Etiquetas "
'verifica a opçao selecionada de relatórios
If OptGeral.Value = False Then
If OptCidade.Value = True Then
' Se for por cidade, especifica que o campo cidade da tabela deverá ser igual
' ao conteúdo da caixa de combinação CmbSeleção
'If CmbSelecao.Text <> "" Then
'MySQL$ = MySQL$ & " WHERE Etiquetas.AGCIDADE like " & Chr(39) & CmbSelecao.Text & Chr(39)
'End If
Else
If OptMes.Value = True Then
'if for por data, especifia que o campo data deve estar entre
'os conteúdos das caixas de texto TxtInicio e TxtFim
'Também é preciso formatar a data para o padrão americano mm/dd/yy
If TxtInicio.Text <> "" And TxtFim.Text <> "" Then
MySQL$ = MySQL$ & " WHERE Etiquetas.num BETWEEN " & TxtInicio.Text & " AND " & TxtFim.Text
End If
End If
End If
End If
MySQL$ = MySQL$ & " ORDER BY Etiquetas.Num " 'Ordena por nome
MyQuery.SQL = MySQL$ 'Executa a Query
Exit_Filtrar:
Exit Sub
Err_Filtrar:
MsgBox Error$
Resume Exit_Filtrar
End Sub
Private Sub CmdVisualizar_Click()
Filtrar 'Chamada da função Filtrar
CrystalReport1.DataFiles(0) = MyPath & "Etiquetas.mdb" 'Espedifica o BD
CrystalReport1.ReportFileName = MyPath & "Etiqueta.rpt" 'Especifica o Relatório
CrystalReport1.Destination = crptToWindow 'Especifica se é visualização ou Impressão
CrystalReport1.Action = 1 'Executa o Crystal Report.
End Sub
Private Sub Form_Load()
Dim MyDB As Database
Dim MySet As Recordset
If Len(App.Path) > 3 Then
MyPath = App.Path & "\"
Else
MyPath = App.Path
End If
Set MyDB = Workspaces(0).OpenDatabase(MyPath & "Etiquetas.mdb")
Set MySet = MyDB.OpenRecordset("ConsultaEtiquetas")
End Sub
Private Sub CmdImprimir_Click()
Filtrar
CrystalReport1.DataFiles(0) = MyPath & "Etiquetas.mdb"
CrystalReport1.ReportFileName = MyPath & "Etiqueta.rpt"
CrystalReport1.Destination = crptToPrinter
CrystalReport1.Action = 1
End Sub
Private Sub Label3_Click()
End Sub
Private Sub OptCidade_Click()
'CmbSelecao.Enabled = True
TxtInicio.Enabled = False
TxtFim.Enabled = False
End Sub
Private Sub OptGeral_Click()
' If OptGeral.Value = True Then
TxtInicio.Enabled = False
TxtFim.Enabled = False
'CmbSelecao.Enabled = False
' End If
' If OptCidade.Value = True Then
'CmbSelecao.Enabled = True
' End If
'If OptMes.Value = True Then
' CmbSlecao.Enabled = True
'' End If
End Sub
Private Sub OptMes_Click()
TxtInicio.Enabled = True
TxtFim.Enabled = True
'CmbSelecao.Enabled = False
End Sub
A saÃda, seria VC colocar o ORDER BY pelo campo que VC deseja que esteja ordenado, mas acho que isso não resolveria o seu problema, pois se VC ordenar os valores 1,7,14, o sistema reconheceria 1,14,7.
A saÃda melhor, seria VC gravar ZEROS a esquerda neles, para te facilitar na hora de colocar em ordem....
A saÃda melhor, seria VC gravar ZEROS a esquerda neles, para te facilitar na hora de colocar em ordem....
Tópico encerrado , respostas não são mais permitidas