Fórum sistema multi Usuarios #39941
07/11/2003
0
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]
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
Curtir tópico
+ 0
Responder
Posts
08/11/2003
Afarias
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+
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+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)