CRIANDO VARIAVEL GLOBAL LOGIN

Tudo bem…

Mais uma vez conto a ajuda de todo mundo…

Tenho criar sistema simples aonde os clientes da empresa entrar e consultam o seu faturamento quanto devem a empresa aonde eu trabalho mas um não pode ter acesso aos valores do outro cliente… desta forma eu precisaria criar uma variavel global que seja repassada para consulta informando o codigo do cliente e como tenho duas bases dados matriz e filial teria ter filtro where com and isto porque tenho exemplo cliente codigo 1 na base1 e na base dois é outro cliente com codigo 1 porque empresa tem filial mas banco estrutura é igual

exemplo where cliente = [COD_CLIENTE] AND filial = [COD_FILIAL]
where cliente = 1 AND filial = SP
where cliente = 1 AND filial = RJ

para que seja automático terei mudar cadastro usuários adicionando estes dois campos cod_cliente e cod_filial
preciso criar esta variavel filtrar na consulta.

Quando vc fala base eh banco de dados?

Márcio,

Não entendi a pergunta, você está afirmando apenas esperando a confirmação, se for em resumo é isto mesmo no SQL você coloca as globais no WHERE e estes campos tem que existir e estar relacionados diretamente ou indiretamente com o usuário para você colocar na sessão do sistema e poder consultar.

Agradeço muito ajuda como não tenh experiencia me expresso meio sem sentido… consegui fazer no formulario de login em evento adicionei

[wEmpresa] = {rs[0][4]};
[wFilial] = {rs[0][5]};
[wEmpre_Nome] = {rs[0][6]};

com estas variaveis do cadstro do usuario eu filtro registros para que o usuario somente consiga ter acesso ao dados da empresa que ele trabalha.

Mas agora estou com outro problema, tenho as ordens de serviço e para elas são lançadas veiculos acompanhados, veja exemplo simples

TABELA ORDEM SERVIÇO (PRINCIPAL)

NOS(CAMPO SEQUENCIAL AUTOMATICOS PRIMARIO)
DATA
FUNCIONARIO

TABELA VEICULOS (TAB FILHO)

NOS
PLACA
NOTORISTA

Agora vem o problema, na consulta tenho ter um campo com todas as placas eu consigo somente pegar a primeira placa lançada
exe: AAA-000/BBB-0000/CCC-0000 hoje consigo somnte a primeira assim AAA-0000

para fazer uma placa uso seguinte codigo no SQL

(SELECT TOP (1) SUBSTRING(OSVEPlac, 1, 3) + ‘-’ + SUBSTRING(OSVEPlac, 4, 8) AS Expr1 FROM dbo.OrdensServico_Veiculos AS OV WHERE (OSVEOrSe = OS.OrSeCodi))

ESTE CODIGO ME CRIA CAMPO AUTOCARGAS MAS SÓ COM UMA PLACA SETIVER TRES QUETRO CINCO DEVE CRIAR UM CAMPO COM TODAS PLACAS PARA O REGISTRO O.S.

Usa a macro sc_select ai você vai concatenando tudo na mesma variável, mais ou menos como segue abaixo:

[font=Verdana][/font][code]
sc_select(meus_dados, “SELECT TOP (1) SUBSTRING(OSVEPlac, 1, 3) + ‘-’ + SUBSTRING(OSVEPlac, 4, AS Expr1 FROM dbo.OrdensServico_Veiculos AS OV WHERE (OSVEOrSe = OS.OrSeCodi)”);
if ({meus_dados} === false){
echo "Erro de acesso. Mensagem = " . {meus_dados_erro};
}else{
while (!$meus_dados->EOF){
{placas} .= $meus_dados->fields[1];
$meus_dados->MoveNext();
}
$meus_dados->Close();
}

[/code][font=Verdana][/font]

me desculpe não entendi muito bem, esta macro utilizo aonde? creio que no SC mas crio um campo na consulta e coloco este codigo aonde me desculpe sou novo mas chego lá…

Como você falou em consulta, se for uma aplicação do tipo consulta onde em cada linha você tem uma ordem de serviço você colocaria este código no onLoadRecord e teria que criar um campo na grid chamado placas caso ele já não exista na base.

Eu cosigo fazer isto diretamente no SQL esta tabela que eu chamo Faturamento ele já uma consulta junta informações em varias tabela queria ja ter este campo autocargas com todas as placas no SQL nesta consulta é possível?

Acabei que explicando pela metade tem ser via SQL porque tenho dois servidores um matriz - sp e outro Filial - RJ e tenho terceiro junta as consultas veja:

srv2 = consulta chamada Faturamento_SP e crio um campo codigo 1 todos registro correponde matriz

srv3 = Consulta chamada Faturamento_RJ e crio um compo codigo 2 todos registros coresponde a filial rj

srv = Uso função LINKED consulta Faturamento com Union ALL junta duas tabela Faturamento_SP e Faturamento_RJ

tenho fazer isto no sql em cada servidor para quando buxar das estejam corretos não tenho fazer isto depois porque campo chave da tabela ordem serviço que é base tudo tem numeros iguais na filial e matriz por isto criei um campo com codigo matriz filial como se fosse um digito

sera meu problema tem jeito?

Não entendi a consulta, mas você poderia criar uma view no banco que vc esta conectado no scriptcase com esta consulta ai do union que usa linked server e no scriptcase consulta a view

seria isto no SC consulta simples ele ja pegaria view Faturamento pronta com campo placas com toedas as placas neste campo

uso union entre tabela faturamento_SP e Faturamento_RJ que são view mas antes fazer union preciso inserir o campo placas na view Faturamento_SP e Faturamento_RJ antes usar union

eu tenho duas tabela uma Ordens_Serviço e outra Veículos_Escoltados

tabela Ordens _serviços é tabela pai

tabela Veículos_escoltados tabela filho

lanço registro um ordem serviço tabela pai

NOS (CAMPO PRIMARIO)
DATA
HORA
ORIGEM
DESTINO

Na tabela filho lanço os veículos foram escoltados são mais de um isto é amarado pelo NOS

tabela filho
NOS
Placa
Carreta
Motorista

O meu problema esta na consulta quando consulta é apresentada tenho ter um campo com todos veiculos escoltados exemplo
DPF-1123/SSD-9087/WER-9076

Hoje eu consigo fazer isto mas para o primeiro registro somente os depois não sei como fazer

tabela pai 01 registro na tabela filho pode ter mais de um registro

o código que estou usando hoje é este que me retorna somente a primeira placa num campo View:

O nome do campo seria AutoCargas(seriam todos autocargas escoltados)

(SELECT TOP (1) SUBSTRING(OSVEPlac, 1, 3) + ‘-’ + SUBSTRING(OSVEPlac, 4, 8) AS Expr1 FROM dbo.OrdensServico_Veiculos AS OV WHERE (OSVEOrSe = OS.OrSeCodi))

Com o comando Top consigo pegar só primeiro registro que tenha o memso numero de NOS mas preciso fazer um campo tenha todas as placas veiculos escoltados pela aquela equipe de escolta em uma consulta.

VEJA A BAIXO MINHA CONSULTA COMPLETA

SELECT TOP (100) PERCENT 1 AS centro_custo, OS.OrSeCodi AS NOS, OS.OrSeIODH AS Data_Operacao, ISNULL(SO.SoliOrBa, ‘não Informado’) AS Minuta,
ISNULL(SO.SoliDeBa, ‘não Informado’) AS Danfe, SO.SoliIODH AS Agendado, ISNULL(OS.OrSeSolt, ‘-------’) AS Solicitante,
(SELECT TOP (1) SUBSTRING(OSVEPlac, 1, 3) + ‘-’ + SUBSTRING(OSVEPlac, 4, 8) AS Expr1
FROM dbo.OrdensServico_Veiculos AS OV
WHERE (OSVEOrSe = OS.OrSeCodi)) AS AutoCarga, ISNULL(OS.OrSeOrEn, ‘----------’) AS Origem, ISNULL(OS.OrSeDeEn, ‘----------’) AS Destino,
OS.OrSeIODH AS Inicio, OS.OrSeTODH AS Termino, ISNULL(RIGHT(‘00’ + CAST(DATEDIFF(MINUTE, OS.OrSeIODH, OS.OrSeTODH) / 60 AS VARCHAR), 3)
+ ‘:’ + RIGHT(‘00’ + CAST(DATEDIFF(MINUTE, OS.OrSeIODH, OS.OrSeTODH) % 60 AS VARCHAR), 2), ‘000:00’) AS Horas_Operacao,
CASE WHEN TB.TabeTipo = 1 AND TB.TabeExAHstr IS NOT NULL
THEN TB.TabeExAHstr WHEN TB.TabeTipo = 3 THEN ISNULL(RIGHT(‘00’ + CAST((OS.OrSeLiMi / 60) AS VARCHAR), 3)
+ ‘:’ + RIGHT(‘00’ + CAST((OS.OrSeLiMi % 60) AS VARCHAR), 2), ‘000:00’) WHEN TB.TabeTipo = 4 AND TB.TabeExAH IS NULL
THEN ISNULL(TB.TabeExAHstr, ‘000:00’) ELSE ISNULL(RIGHT(‘0’ + CAST(CONVERT(VARCHAR(5), TB.TabeExAH, 108) AS VARCHAR), 6), ‘000:00’)
END AS Franquia, ISNULL(RIGHT(‘00’ + CAST(OS.OrSeMiEx / 60 AS VARCHAR), 3) + ‘:’ + RIGHT(‘00’ + CAST(OS.OrSeMiEx % 60 AS VARCHAR), 2),
‘000:00’) AS Horas_Execedente, CAST(OS.OrSeVaHE AS NUMERIC(18, 2)) AS Valor_Por_Hora, ISNULL(CAST(CAST(OS.OrSeMiEx AS NUMERIC(18, 2))
/ 60 * OS.OrSeVaHE AS NUMERIC(18, 2)), 0) AS Valor_Exedente, OS.OrSeIOKm AS Km_Inicio, OS.OrSeTOKm AS Km_Termino,
OS.OrSeTOKm - OS.OrSeIOKm AS Km_Total, OS.OrSeLiKm AS Km_Franquia, ISNULL(OS.OrSeKmEx, 0) AS Km_Exedente,
CAST(OS.OrSeVaKE AS NUMERIC(18, 2)) AS Valor_Por_Km, ISNULL(CAST(OS.OrSeKmEx * OS.OrSeVaKE AS NUMERIC(18, 2)), 0)
AS Valor_Km_Excedente, ISNULL(CAST(OS.OrSePeda AS NUMERIC(18, 2)), 0) AS Pedagio, ISNULL(CAST(OS.OrSeValo AS NUMERIC(18, 2)), 0)
AS Valor_Escolta, ISNULL(CAST(OS.OrSeTota AS NUMERIC(18, 2)), 0) AS Valor_Total,
(SELECT ViatPlac
FROM dbo.Viaturas
WHERE (ViatCodi =
(SELECT EquiViat
FROM dbo.Equipes
WHERE (EquiCodi =
(SELECT OSEqEqui
FROM dbo.OrdensServico_Equipes
WHERE (OSEqOrSe = OS.OrSeCodi)))))) AS Veiculo_Escolta, EQ.EquiIden AS Equipe, CL.ClieCodi AS CodCliente,
CL.ClieRaza AS Cliente, OS.OrSeTabe AS Cod_Tabela, TB.TabeDesc AS Tabela_preco
FROM dbo.OrdensServico AS OS INNER JOIN
dbo.OrdensServico_Equipes AS OE ON OS.OrSeCodi = OE.OSEqOrSe INNER JOIN
dbo.Equipes AS EQ ON OE.OSEqEqui = EQ.EquiCodi LEFT OUTER JOIN
dbo.Clientes AS CL ON CL.ClieCodi = OS.OrSeClie LEFT OUTER JOIN
dbo.Tabelas AS TB ON TB.TabeCodi = OS.OrSeTabe LEFT OUTER JOIN
dbo.Solicitacoes AS SO ON SO.SoliCodi = OS.OrSeSoli LEFT OUTER JOIN
dbo.Postos AS PO ON PO.PostCodi = OS.OrSePost
WHERE (OS.OrSeTabe <> 0) AND (CL.ClieCodi <> 8) AND (CL.ClieCodi <> 9) AND (CL.ClieCodi <> 23)
ORDER BY Cliente, Data_Operacao