sistema multi Usuarios

Firebird

07/11/2003

Olá Pessoal
Seguinte.
estou Querendo desenvolver uma aplicação multi-usuário
onde tenho:

Uma tabela que grava
um associado (Codigo_associado) que é Chave Primary
e que é auto Incremento, e seus atributos como idade, nome e... .

E tenho uma segunda tabela de perguntas e respostas
que possui este codigo_associado como chave estrangeira,
e os campos codigo_pergunta,item_resposta.

Na Minha Aplicação Delphi:

No meu Formulario inicial aparece todas as informações
que pretendo colocar para este associado como endereço idade....

E depois tenho um segundo Formulário
que apresenta uma serie de perguntas e respostas, colocados num stringgrid,
para este mesmo associado.

-----------------------------------------------------------------------------------------------
Fiz uma procedure para pegar as informações codigo_associado,codigo_pergunta, item_resposta mas não a uso na aplicação ainda;

estou com problemas de desenvolver esta procedure, pois
é o seguinte.

como tenho uma tabela que possui estes 3 registros
e como para 1 codigo_associado tenho uma media de 80 pergunta e 80 respostas
ficaria assim
codigo_associado codigo_pergunta Item resposta
100 1 2
100 2 3
100 3 1

A TABELA QUE FALO A CIMA INDICADO É A TABELA DE RELACIONAMENTO
ENTRE TABELA_ASSOCIADO - TABELA_PERGUNTA -TABELA RESPOSTA

alguem pode me ajudar na minha procedure
Segue com observações:


ALTER PROCEDURE SP_PEGA_COD_ENTREVISTADO (
ITEM_RESPOSTA INTEGER,
CODIGO_PERGUNTA INTEGER,
OBSERVACOES VARCHAR(150),
FAIXA_ETARIA CHAR(15),
BAIRRO VARCHAR(80),
IDADE INTEGER,
DATA_ENTREVISTA TIMESTAMP,
DATA_NASCIMENTO TIMESTAMP,
SEXO VARCHAR(3),
NOME VARCHAR(60),
CODIGO_PESQUISADOR INTEGER)
RETURNS (
QUANTIDADE INTEGER,
RESULTADO INTEGER)
AS
DECLARE VARIABLE I INTEGER;
begin

AQUI SERIA GRAVADO O CODIGO_ASSOCIADO = 100 E SEUS ATRIBUTOS:

insert into tb_cad_entrevistado
(codigo_pesquisador,nome,sexo,data_nascimento, data_entrevista,idade,
bairro,faixa_etaria, observacoes)
values (:codigo_pesquisador,:nome,:sexo,:data_nascimento,

:data_entrevista,:idade,:bairro,:faixa_etaria,:observacoes);
resultado = gen_id(GENERATOR_TB_ENTREVISTADO,0);
suspend;
exit;

AQUI EU VERIFICO QUANTA PERGUNTA TENHO CADASTRADA NO MINHA TABELA

select count(codigo_pergunta) from tb_cad_pergunta
into :quatidade;
suspend;

AQUI EU GOSTARIA QUE FIZESSE UM LOOP PARA
PEGAR TODAS AS PERGUNTA E RESPOSTAS DE UMA SÓ VEZ PARA ESTE ASSOCIADO =100,

TIPO ASSIM:
PARA UMA VARIAVEL QUALQUER ATE :QUANTIDADE ´ SELECT A CIMA´ ENTÃO FAÇA


insert into tb_pergunta_resposta (codigo_entrevistado,

codigo_pergunta,item_resposta)
values (:resultado,
:codigo_pergunta,:item_resposta);
suspend;
end



NA MINHA APLICAÇÃO DELPHI
EU CONSEGUI FAZER NO CODIGO FONTE
SEM USAR A PROCEDURE E ESTÁ RODANDO
LEGAL, MAS MEU PROBLEMA QUE NA APLICAÇÃO
EU PRIMEIRO GERO O ALTO INCREMENTO PARA A TABELA
QUER DIZER FAÇO O INSERT E DEPOIS PEGO O ULTIMO REGISTRO GERADO QUE É (CODIGO_ASSOCIADO).

dm_principal.tb_ENTREVISTADO.OPEN;
dm_principal.tb_ENTREVISTADO.refresh;
dm_principal.tb_ENTREVISTADO.last;
Edt_codigo_associado.Text:=INTTOSTR(dm_principal.tb_ENTREVISTADOCODIGO_ENTREVISTADO.VALUE);


E DEPOIS QUANDO VOU PASSAR PARA MEU SEGUNDO FORMULÁRIO
EU PASSO ATRAVÉS DE UM EDIT.
COMO POR EXEMPLO

FORMULARIO_PERGUNTA_RESPOSTA.EDIT_CODIGO_ASSOCIADO:=FORMULARIO1.EDIT_CODIGO_ASSOCIADO

E COM ISTO PODE OCORRER UMA SÉRIE DE PROBLEMAS EM SE FALAR DE
SISTEMA MULTI USUARIOS.
E NÃO GOSTARIA DE TER PROBLEMAS COM ISTO.


ALGUEM PODERIA ME AJUDAR NA PROCEDURE OU UMA
OUTRA IDÉIA NO CÓDIGO FONTE
PARA TRANSFORMAR ESTE APLICATIVO EM MULTI-USUÁRIO?














[size=7:356eae435e][/size:356eae435e][size=12:356eae435e][/size:356eae435e][b]


Omegatrue

Omegatrue

Curtidas 0

Respostas

Afarias

Afarias

07/11/2003

Puts!! que salada...

vc quer GRAVAR dados com a SP ou CONSULTAR dados??? realmente não entendi!!!

vc quer gravar um ASSOCIADO e já ter preenchida a tabela com TODAS as perguntas para aquele associado?? é isso?? se for faça::

create trigger tr_entrevistado_ai for cad_entrevistado after insert as
begin
insert into cad_pergunta_resposta (associado, pergunta)
select new.cod_entrevistado, cod_pergunta from cad_pergunta;
end;

e depois basta selecionar todas as perguntas daquele associado.


se não é isso, deixe mais claro sua dúvida.


T+


GOSTEI 0
POSTAR