CONCATENAR EM FORMULA

LUIS.FLAVIO 06/12/2006 16:23:11
#188380
Amigos como que nesse fórmula eu mesmo coloco os sinais de "=,>,<,>=...",quando estiver montando a fórmuma para ficar mais configurável pois conforme abaixo apenas consigo o "=".

Function COUNTACID(UNID, EMPRESA) As Long

Application.Volatile

On Error GoTo erro

conecta

Sql = "select COUNT(*) AS QTD from ACIDENTES where 0=0"

If Not UNID = "" Then Sql = Sql & " AND UNIDADE ='" & UNID & "'"

If Not EMPRESA = "" Then Sql = Sql & " AND UGB = '" & EMPRESA & "'"

Set RS = conexao.Execute(Sql)

COUNTACID = RS!QTD

RS.Close
Set RS = Nothing
Exit Function

erro:
If Err.Number <> 0 Then
COUNTACID = 0
End If

End Function



HUGOSSOUZA 06/12/2006 16:31:32
#188382
Resposta escolhida
é só colocar dentro da string

If Not UNID = "" Then Sql = Sql & " AND UNIDADE >='" & UNID & "'"

If Not EMPRESA = "" Then Sql = Sql & " AND UGB < '" & EMPRESA & "'"

If Not UNID = "" Then Sql = Sql & " AND UNIDADE >'" & UNID & "'"

If Not EMPRESA = "" Then Sql = Sql & " AND UGB <= '" & EMPRESA & "'"


é isso que vc precisa?
HUGOSSOUZA 06/12/2006 16:33:04
#188383
ops... esse campo é tipo texto...

vc quer colocar esses sinais aonde?

[S55]
LUIS.FLAVIO 06/12/2006 16:35:28
#188384
mas esses sinais teriam que ser configuráveis pelo usuário,igual as fórmulas do excel.
HUGOSSOUZA 06/12/2006 16:41:08
#188385
mas ele vai digitar essas formulas junto com os valores?
LUIS.FLAVIO 06/12/2006 16:44:24
#188388
sim,seria mais ou menos dessa forma.

=COUNTACID("vm";aqui ele colocaria o sinal tipo <> ou = "BEN")
USUARIO.EXCLUIDOS 06/12/2006 22:33:47
#188437
Cara, é só vc adicionar mais parà¢metros na função!

Function COUNTACID(UNID, SinalUnid, EMPRESA, SinalEmpresa) As Long


Ai aqui vc coloca assim:
If Not UNID = "" Then Sql = Sql & " AND UNIDADE " & SinalUnid & " '" & UNID & "'"

If Not EMPRESA = "" Then Sql = Sql & " AND UGB " & SinalEmpresa & " '" & EMPRESA & "'"

LUIS.FLAVIO 07/12/2006 13:00:25
#188564
Meu brodher quase isso só mais uma questão não teria um jeito de não colocar SinalUnid e SinalEmpresa como parà¢metros separados,seria colocado antes do valor especificado tipo assim "=VM";"<>BEN" e a fórmula ficaria mais ou menos dessa forma,tentei mas não consegui:

If Not UNID = "" Then Sql = Sql & " AND UNIDADE '" & UNID & "'"

If Not EMPRESA = "" Then Sql = Sql & " AND UGB '" & EMPRESA & "'"


Abraço
LUIS.FLAVIO 07/12/2006 13:19:01
#188572
Ficaria assim no meu ponto de vista:

=COUNTACID("=VM";"<>BEN").

HUGOSSOUZA 07/12/2006 13:36:31
#188576
acho que pra vc separar isso só trabalhando a string
não é mais facil vc colocar uma combo na frente com os tipos de operadores que o usuario pode escolher? ai vc usa do jeito que o MARCELOHF. ai na função ela receberia 4 parametros.
ve se isso te ajuda pro select:


Function COUNTACID(UNID As String, EMPRESA As String) As Long

Application.Volatile

On Error GoTo erro

conecta

Sql = "select COUNT(*) AS QTD from ACIDENTES where 0=0"

If Not UNID = "" Then Sql = Sql & " AND UNIDADE " & arrumaSinal(UNID)

If Not EMPRESA = "" Then Sql = Sql & " AND UGB " & arrumaSinal(EMPRESA)

Set RS = conexao.Execute(Sql)

COUNTACID = RS!QTD

RS.Close
Set RS = Nothing
Exit Function

erro:
If Err.Number <> 0 Then
COUNTACID = 0
End If


[c]Function arrumaSinal(nome As String) As String


If InStr(1, nome, "=") Then
arrumaSinal = Mid(nome, InStr(1, nome, "="), 1) & " '" & Right(nome, Len(nome) - 1) & "'"
ElseIf InStr(1, nome, "<>") Then
arrumaSinal = Mid(nome, InStr(1, nome, "<>"), 2) & " '" & Right(nome, Len(nome) - 2) & "'"
ElseIf InStr(1, nome, ">") Then
arrumaSinal = Mid(nome, InStr(1, nome, ">"), 1) & " '" & Right(nome, Len(nome) - 1) & "'"
ElseIf InStr(1, nome, "<") Then
arrumaSinal = Mid(nome, InStr(1, nome, "<"), 1) & " '" & Right(nome, Len(nome) - 1) & "'"
End If

End Function

Tópico encerrado , respostas não são mais permitidas