Como Definir Chave Primária composta por campos alimentados de tabelas diferente

Boa tarde,

     Minha situação é a Seguinte: Tenho duas aplicações, Aplicação Consulta A e Aplicação de formulário de cadastro B. Na aplicação de B tenho um select que tras da aplicação A, uma relação de acordo com 2 campos colocados no where do select alimentados por duas variaveis globais que na ligação da aplicação A eu associo com os campos correspondentes. O problema acontece que quando vou alterar ou incluir um registro na aplicação, diz que o registro já existe. Ai então eu pensei basta a acrescentar  mais dois campos no select da aplicação B que compem minha chave primaria desta aplicação que conseguirei incluir e alterar. Quase isso! Pois fazendo isso  quando chamo a aplicação B da Aplicação A não vem mais a lista de registros e sim um unico registro, pois o scriptcase colocar no select os campos = 0 pois como defini na ligação eles são vazios....pois só teram valor na aplicação B.

Como resolver esse dilema? Como dizer ao scriptcase que quando for incluir meus registros ele verificar no select Count(*) dele que o qwhere não é somente os campos que vieram da aplicação A mas sim Também + um ou mais campos da aplicação B sem que quando chamar a aplicação B deixe de trazer todos os registros relacionado.

grato.
Marcos

Dá pra desenhar??? Tentei criar o problema mentalmente mas num deu!! Tente explicar de uma outra forma.

Tentaremos…rs…
Sua aplicação de Cadastro tem como chave primaria 6 campos, 3 desses campos vem de uma ligação por variaveis globais e outros 3 campos são da propria tabela. Como definir estes 6 campos como chave primária.

     Ao entrar na tela Filha o script case mostra do debug pra mim 2 select:

1A - SELECT count(*) from dbo.PDV_CupomFiscal where N_Serie_Equip = '9999 ’ And ModeloECF = ‘Modelo ECF’ And NroCaixa = 3

2A - SELECT N_Serie_Equip, MFAdicional, ModeloECF, NroCaixa, COO, NroContador, convert(char(23),DtEmissao,121), VlrSubTotal, VlrDesconto, TipoDesconto, VlrAcrescimo, TipoAcrescimo, VlrLiquido, IndCancelamento, VlrCancelamento, IndOrdemAplicacao, NomeCliente, IdentificacaoCliente from dbo.PDV_CupomFiscal WHERE (N_Serie_Equip = '9999 ’ And ModeloECF = ‘Modelo ECF’ And NroCaixa = 3) AND (N_Serie_Equip = '9999 ’ and ModeloECF = ‘Modelo ECF’ and NroCaixa = 3) order by N_Serie_Equip, ModeloECF, NroCaixa

até aqui beleza é isso o que preciso.

Na Alteração o que ocorre:
(mssql): BEGIN TRAN
1B - (mssql): select count() from dbo.PDV_CupomFiscal where N_Serie_Equip = '9999 ’ and ModeloECF = ‘Modelo ECF’ and NroCaixa = 3
2B - (mssql): select count(
) from dbo.PDV_CupomFiscal where (N_Serie_Equip = '9999 ’ AND MFAdicional = ‘1’ AND ModeloECF = ‘Modelo ECF’ AND NroCaixa = 3 AND COO = 1 AND NroContador = 1) AND (N_Serie_Equip <> '9999 ’ and ModeloECF <> ‘Modelo ECF’ and NroCaixa <> 3)
(mssql): COMMIT TRAN

O resultado é: “…registro inexistente pois o count retorna mais de um registro…”

No mssql 1B o select esta pegando apenas 3 dos 6 campos que preciso para garantir que meu registro seja único, onde e como eu altero isso no scriptcase? sem que meu select 1A seja alterado.

Na Inclusão o que ocorre:
ERRO
Erro na inclusão - Registro já existe

(mssql): BEGIN TRAN
1C -(mssql): select count() from dbo.PDV_CupomFiscal where N_Serie_Equip = '9999 ’ and ModeloECF = ‘Modelo ECF’ and NroCaixa = 3
2C - (mssql): select count(
) from dbo.PDV_CupomFiscal where N_Serie_Equip = '9999 ’ AND MFAdicional = ‘9’ AND ModeloECF = ‘Modelo ECF’ AND NroCaixa = 3 AND COO = 12 AND NroContador = 51
(mssql): COMMIT TRAN

Novamente o scriptcase esta pegando para verificar os registros apenas 3 dos 6 campos que eu preciso.
no mssql 2C estão exatamente os 6 campos que compem a chave primária