Pesquisar na Comunidade
Mostrando resultados para as tags ''procedure''.
Encontrado 12 registros
-
Olá, Quando tento executar um comando para criar uma PROCEDURE, este erro aparece: "Error Code: 1558. Column count of mysql.proc is wrong. Expected 21, found 20. Created with MariaDB 100108, now running 100411. Please use mysql_upgrade to fix this error" Pesquisei e executei este comando: sudo mysql_upgrade -u root -p Que me retornou este erro: "mysql_upgrade: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) while connecting to the MySQL server. Upgrade process encountered error and will not continue." Como posso resolvê-lo? Obrigada.
-
Olá, Quando tento executar um comando para criar uma PROCEDURE, este erro aparece: "Error Code: 1558. Column count of mysql.proc is wrong. Expected 21, found 20. Created with MariaDB 100108, now running 100411. Please use mysql_upgrade to fix this error" Pesquisei e executei este comando: sudo mysql_upgrade -u root -p Que me retornou este erro: "mysql_upgrade: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) while connecting to the MySQL server. Upgrade process encountered error and will not continue." Como posso resolvê-lo? Obrigada.
-
Olá pessoal, estou em um semestre onde apresento um trabalho em banco de dados, sei que a procedure que estou cirando ficaria melhor na aplicação, porém preciso apresentar somente o banco de dados, um amigo me ajudou mas ele fez a logica em sql, tentei converter para MYSQl porém está dando erro, mostrarei a procecure e o erro, se precisarem posso postar também as tabelas, agradece qualquer ajuda estou desesperado. Alias a ideia da procedure é analisar se a viatura e o motorista e o horário estão disponíveis para cadastrar uma nova viagem, se não estiverem, volta um ERRO se estiverem liberado fazemos o INSERTna tabela. CREATE PROCEDURE ADICIONAR_VIAGEM99( IN pIDVIAGENS INT , IN pCIDADE VARCHAR(25) , IN pDATAHORAINICIO DATETIME , IN pDATAHORAFINAL DATETIME , IN pCOR VARCHAR(15) , IN pCEP CHAR(9) , IN pRUA VARCHAR(30), IN pNUMERO VARCHAR(8) , IN pBAIRRO VARCHAR(25) , IN pESTADO CHAR(2) , IN pDESCRICAO VARCHAR(200), IN pID_DADOSPESSOAS INT, IN pID_MOTORISTA INT, IN pID_VIATURA INT ) BEGIN DECLARE DisponibilidadeViatura INT; DECLARE DisponibilidadeMotorista INT; if exists (Select * from VIAGENS where ID_VIATURA = pID_VIATURA AND pDATAHORAINICIO between DATAHORAINICIO and DATAHORAFINAL ) set DisponibilidadeViatura = 0 else set DisponibilidadeViatura = 1 if exists (Select * from VIAGENS where ID_MOTORISTA = pID_MOTORISTA AND pDATAHORAINICIO between DATAHORAINICIO and DATAHORAFINAL ) set DisponibilidadeMotorista = 0 else set DisponibilidadeMotorista = 1 if (DisponibilidadeViatura = 1 and DisponibilidadeMotorista = 1) INSERT INTO VIAGENS (IDVIAGENS, CIDADE, DATAHORAINICIO, DATAHORAFINAL, COR, CEP, RUA, NUMERO, BAIRRO, ESTADO, DESCRICAO, ID_DADOSPESSOAS, ID_MOTORISTA, ID_VIATURA) VALUES (NULL,pCIDADE, pDATAHORAINICIO, pDATAHORAFINAL, pCOR, pCEP, pRUA, pNUMERO, pBAIRRO, pESTADO, pDESCRICAO, pID_DADOSPESSOAS, pID_MOTORISTA, pID_VIATURA); else Select 'Motorista ou Viatura indisponível na data/hora selecionada.' as 'Error'; END $ E o erro que está aparecendo é o seguinte ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set DisponibilidadeViatura = 0 else set DisponibilidadeViatura = 1 if exists (S' at line 23
- 1 resposta
-
- mysql
- bandodedados
-
(e %d mais)
Tags:
-
Como faço para trazer informação de uma tabela para outra?
uma questão postou Leonardo Bernardo MySQL
Preciso desenvolver um sistema que automatiza o atendimento a alunos feitos por coordenadores. Quando algum aluno chegar na secretária e pedir para ser atendido por algum coordenador, ela vai cadastrar no sistema essa solicitação de atendimento. Este aluno entrara na fila do referido coordenador. Então fiz duas tabelas. "Fila" que é a da secretária que vai cadastrar e a "Coordenador" que é as informações dele. o que quero é passar somente as seguintes informações da fila para o coordenador: Nome, Curso, se já é aluno, status e data/hora. até agora está desse jeito, e não sei como fazer para passar essas informações automaticamente para ele, alguém pode me ajudar? SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; CREATE SCHEMA IF NOT EXISTS `at_automatizado` DEFAULT CHARACTER SET utf8 ; USE `at_automatizado` ; -- ----------------------------------------------------- -- Table `at_automatizado`.`coordenador` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `at_automatizado`.`coordenador` ( `codigo` INT NOT NULL AUTO_INCREMENT, `login` VARCHAR(45) NULL, `senha` VARCHAR(45) NULL, `nome_coordenador` VARCHAR(100) NULL, `ramal` VARCHAR(9) NULL, `curso` VARCHAR(45) NULL, PRIMARY KEY (`codigo`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `at_automatizado`.`fila` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `at_automatizado`.`fila` ( `codigo` INT NOT NULL AUTO_INCREMENT, `coordenador_codigo` INT NOT NULL, `nome_coordenador` VARCHAR(100) NULL, `nome_aluno` VARCHAR(100) NULL, `telefone` VARCHAR(14) NULL, `curso` VARCHAR(100) NULL, `ja_e_aluno` ENUM('Sim', 'Não') NULL, `status` ENUM('Já atendido', 'Não atendido') NULL, `data_e_hora` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`codigo`), INDEX `fk_fila_coordenador_idx` (`coordenador_codigo` ASC), CONSTRAINT `fk_fila_coordenador` FOREIGN KEY (`coordenador_codigo`) REFERENCES `at_automatizado`.`coordenador` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; -
//fpc 3.0.0 //Thiago André Cardoso Silva //Git Hub: https://github.com/doctorwho1998 program funcionario; uses crt; const COL = 2; LIN = 10; var matricula_nome:array[0..(LIN - 1), 0..(COL - 1)] of String; salario:array[0..9] of Real; jornada:array[0..9] of integer; matricula:String; q_c,i,j,k,aux_alt,aux_exc,aux_mat:integer; cont_cad:boolean; //-----Pesquisar funcionário----- procedure pesquisar(mat:String); begin for i := 0 to 9 do begin if mat = matricula_nome[i,0] then begin writeln; writeln('Resultado da busca:'); writeln('Matricula: Nome: Salário: Jornada:'); write(matricula_nome[i][0],' '); write(matricula_nome[i][1],' '); write(salario[i]:00:02,' '); write(jornada[i]); writeln; writeln; end; end; end; //-----Pesquisar funcionário----- //-----Alterar funcionário----- procedure alterar(mat:String; n:String; sal:real; jor:integer); begin for i := 0 to 9 do begin if mat = matricula_nome[i,0] then begin matricula_nome[i,1] := n; salario[i] := sal; jornada[i] := jor; aux_alt := aux_alt + 1; writeln('Funcionário alterado com sucesso!'); end; end; writeln; if aux_alt = 0 then begin writeln('Matricula ',mat,' não encontrada'); writeln; end; end; //-----Alterar funcionário----- //-----Cadastrar----- procedure cadastrar(mat:String; n:String; sal:real; jor:integer); begin if q_c < 10 then begin for i := 0 to 9 do begin if mat = matricula_nome[i][0] then begin aux_mat := aux_mat + 1; end; end; if aux_mat = 0 then begin matricula_nome[q_c,0] := mat; matricula_nome[q_c,1] := n; salario[q_c] := sal; jornada[q_c] := jor; q_c := q_c + 1; writeln; end else begin writeln('Matricula ',mat,' já cadastrada'); end; end else begin writeln('Limite de cadastro atingido!'); writeln; end; end; //-----Cadastrar----- //-----Excluir----- procedure excluir(mat:String); begin for i := 0 to 9 do begin if mat = matricula_nome[i,0] then begin for j := i to q_c do begin for k := 0 to COL - 1 do begin matricula_nome[j][k] := matricula_nome[j+1][k]; end; salario[j] := salario[j+1]; jornada[j] := jornada[j+1]; end; aux_exc := aux_exc + 1; end; end; if aux_exc = 0 then begin writeln('Matricula ',mat,' não encontrada'); end else begin q_c := q_c - 1; end; end; //-----Excluir----- //-----Listar----- procedure listar; begin writeln('Matricula: Nome: Salário: Jornada:'); for i := 0 to q_c - 1 do // for para listar matricula e nome begin for j := 0 to COL - 1 do begin write(matricula_nome[i][j],' '); end; write(salario[i]:00:02,' '); write(jornada[i]); writeln; end; end; //-----Listar----- //---------------------------------------------INÍCIO--------------------------------------------- begin { writeln('Digite a matricula do funcionário'); writeln('Digite o nome do funcionário'); writeln('Digite o salário'); writeln('Digite a jornada de trabalho'); } cadastrar('1010', 'José Sobrinho', 5500, 40); cadastrar('1011', 'Jovem Célio ', 2500, 40); cadastrar('1011', 'Jovem Thiago ', 2500, 40); listar; pesquisar('1011'); alterar('1011', 'Jovem Cesar ', 2499, 80); listar; excluir('1011'); listar; end.
-
Olá pessoal, tudo bom? É o seguinte, estou com um problema cabuloso em uma procedure e não estou conseguindo encontrar a solução, a principio até identifiquei o problema, o problema está sendo nesse trecho aqui... - verifica se existe lead criado para o cliente para a mesma data SET @leadExist = 0; SET @sql = CONCAT('SELECT COUNT(*) INTO @leadExist FROM leads_leads where company_id = ',companyId,' and DATE(created_at) = DATE("',DATE,'") and ( ', 'email = "',email,'" or ( ddd = "',ddd_tel,'" and phone = "',tel,'" ) ) limit 1 '); INSERT INTO debug_msg(TEXT) VALUES ( @sql); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET leadExist = @leadExist; Ele está retornando a seguinte mensagem: Error Code: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NULL' at line 1 Pelo que estou entendendo o problema é o COUNT(*) está retornando NULO e não pode inserir na variavel @leadExist, seria isso? Certo? Quando eu retiro esse trecho acima a minha procedure executa tudo certo... Já não sei o que fazer mais... Estou rodando a internet para encontrar uma solução porém não consigo encontrar. Se alguém puder ajudar, agradeço!!!
-
Bom dia Se alguém puder me ajudar eu agradeço. A função geo_output.g_teste_calcula_parametros_2(num) - (criei o squema geo_output), retorna 211 linhas e 20 colunas com a chamada: SELECT * FROM geo_output.g_teste_calcula_parametros_2(31); Mas retorna vazia quando chamo de dentro da function geo_output.t9(num) SELECT geo_output.t9(31); ------------------------------------------------------------------------ -- a função t9() CREATE OR REPLACE FUNCTION t9(num integer) RETURNS SETOF record AS $$ BEGIN EXECUTE geo_output.g_teste_calcula_parametros_2(num); RETURN; END ; $$ language plpgsql; ------------------------------------------------------------------------- Podem me dizer onde ocorre o erro? Desde já agradeço, Marcio
-
mysql Criar um novo usuário a partir de uma trigger no MySql
uma questão postou Letícia Leite Caetano MySQL
Olá, estou tentando criar um novo usuário no MySql a partir de uma trigger. A ideia é que toda vez que eu insira um cliente no banco a trigger seja disparada e execute uma procedure que preencha os campos em uma tabela usuário e também crie este usuário, com as devidas permissões no meu SGBD (MySql). Abaixo segue minha tentativa, mas da o seguinte erro: error 1422: Explicit or implicit commit is not allowed in stored function or trigger. Notem que nem cheguei a implementar os grants. DELIMITER $$CREATE OR REPLACE PROCEDURE TESTE_PROCEDURE (IN CPF VARCHAR(15), IN NOME VARCHAR(20), IN SENHA VARCHAR(20))BEGIN DECLARE USUARIO VARCHAR(30); DECLARE SENHA VARCHAR(30); INSERT INTO USUARIO VALUES('4', NOME, SENHA, CPF); SET USUARIO = CONCAT(NOME, '@localhost'); CREATE USER USUARIO identified by '111222'; END $$DELIMITER ;DELIMITER $$CREATE TRIGGER TESTE_INSERCAO AFTER INSERT ON CLIENTE FOR EACH ROW BEGIN CALL TESTE_PROCEDURE(NEW.CPF, NEW.NOME, '123456'); END $$DELIMITER ; -
sou novo em mysql, estou criando uma stored procedure. e tendo chamar ela na tringger só que da erro CREATE DEFINER=`root`@`localhost` PROCEDURE `cnh_testes`( in v_veiculo int, in v_data_reserva date,in v_hora_reserva time, in v_previsao_volta date,in v_previsao_hora time,in v_destino int,in v_obs varchar(255),in v_condutor_id int) BEGIN declare v_validacnh INT; select c.id_condutor into v_validacnh from condutor c inner join veiculo v on v.Id_cnh = c.id_cnh where c.vencimento_cnh <= current_date() and c.id_condutor = c.id_condutor; if v_validacnh = v_condutor_id then rollback; SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = 'CNH VENCIDA OU CNH NÃO PERMITIDA PARA ESSE VEICULO'; else insert INTO RESERVA (veiculo,data_reserva,hora_reserva,previsao_volta,previsao_hora,destino,obs,condutor_id ) values(v_veiculo,v_data_reserva,v_hora_reserva,v_previsao_volta,v_previsao_hora,v_destino,v_obs,v_condutor_id ); end if; END *********aqui chamo ela na trigger************ CREATE DEFINER=`root`@`localhost` TRIGGER `testecarros`.`teste_BEFORE_INSERT` BEFORE INSERT ON `reserva` FOR EACH ROW BEGIN call cnh_testes (new.veiculo,new.data_reserva,new.hora_reserva,new.previsao_volta,new.previsao_hora,new.destino,new.obs,new.condutor_id ); END ***************erro que me retorna quando faço a inserção********************************************** Not allowed to returna result set a tringger como resolvo isto? ******************************************************************* assim quero fazer essa validação no banco - (ai eu valido se a cnh esta vencida antes de inseri) (antes de fazer (inseri )quero validar algumas situações ) 1- se o condutor esta com a cnh vencida- que é a procedure acima 2- se o condutor pode dirigir o veiculo - se cnh do condutor e igual ou maior veiculo do 3- condutor não pode fazer reserva se o veiculo estiver reservado naquele horário ou entre hora de retorno tenho essa tabelas CREATE TABLE `cnh` ( `Id_cnh` int(11) NOT NULL AUTO_INCREMENT, `cnh_nome` char(2) DEFAULT NULL, PRIMARY KEY (`Id_cnh`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1; ************************ CREATE TABLE `cidade` ( `id_cidade` int(11) NOT NULL AUTO_INCREMENT, `Cidade` varchar(50) DEFAULT NULL, `uf` int(11) DEFAULT NULL, PRIMARY KEY (`id_cidade`), KEY `uf` (`uf`), CONSTRAINT `cidade_ibfk_1` FOREIGN KEY (`uf`) REFERENCES `uf` (`id_uf`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; ************************ CREATE TABLE `condutor` ( `id_condutor` int(11) NOT NULL AUTO_INCREMENT, `nome_condutor` varchar(80) DEFAULT NULL, `id_departamento` int(11) DEFAULT NULL, `vencimento_cnh` date DEFAULT NULL, `telefone` varchar(11) DEFAULT NULL, `emai` varchar(80) DEFAULT NULL, `id_cnh` int(11) DEFAULT NULL, PRIMARY KEY (`id_condutor`), KEY `id_departamento` (`id_departamento`), KEY `id_cnh` (`id_cnh`), CONSTRAINT `condutor_ibfk_1` FOREIGN KEY (`id_departamento`) REFERENCES `departamento` (`id_departamento`), CONSTRAINT `condutor_ibfk_2` FOREIGN KEY (`id_cnh`) REFERENCES `cnh` (`Id_cnh`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; ************************ CREATE TABLE `veiculo` ( `id_veiculo` int(11) NOT NULL AUTO_INCREMENT, `tipo_veiculo` int(11) DEFAULT NULL, `placa` char(7) DEFAULT NULL, `cor` varchar(20) DEFAULT NULL, `km_veiculo_inical` int(11) DEFAULT NULL, `id_cnh` int(11) DEFAULT NULL, PRIMARY KEY (`id_veiculo`), KEY `tipo_veiculo` (`tipo_veiculo`), KEY `id_cnh` (`id_cnh`), CONSTRAINT `veiculo_ibfk_1` FOREIGN KEY (`tipo_veiculo`) REFERENCES `tipoveiculo` (`id_tipoveiculo`), CONSTRAINT `veiculo_ibfk_2` FOREIGN KEY (`id_cnh`) REFERENCES `cnh` (`Id_cnh`) ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1; ************************ CREATE TABLE `reserva` ( `id_reseva` int(11) NOT NULL AUTO_INCREMENT, `veiculo` int(11) DEFAULT NULL, `data_reserva` date DEFAULT NULL, `hora_reserva` time DEFAULT NULL, `previsao_volta` date DEFAULT NULL, `previsao_hora` time DEFAULT NULL, `destino` int(11) DEFAULT NULL, `cancela` char(1) DEFAULT NULL, `baixar_reserva` int(11) DEFAULT NULL, `obs` varchar(255) DEFAULT NULL, `condutor_id` int(11) DEFAULT NULL, PRIMARY KEY (`id_reseva`), KEY `veiculo` (`veiculo`), KEY `destino` (`destino`), KEY `baixar_reserva` (`baixar_reserva`), KEY `condutor_id` (`condutor_id`), CONSTRAINT `reserva_ibfk_1` FOREIGN KEY (`veiculo`) REFERENCES `veiculo` (`id_veiculo`), CONSTRAINT `reserva_ibfk_2` FOREIGN KEY (`destino`) REFERENCES `cidade` (`id_cidade`), CONSTRAINT `reserva_ibfk_3` FOREIGN KEY (`baixar_reserva`) REFERENCES `tipobaixa` (`id_tipo_baixa`), CONSTRAINT `reserva_ibfk_4` FOREIGN KEY (`condutor_id`) REFERENCES `condutor` (`id_condutor`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1; ************************
-
Olá, Amigos estou com problema ao criar uma procedure. Precisando de ajuda, olhem o código CREATE DEFINER=`root`@`localhost` PROCEDURE `SP_AUDITORIA_MNT`(IN `ORIGEM` INT, IN `DATA` DATE, IN `MPONTO_HORA` VARCHAR(10), IN `CODFUNCIONARIO` INT, IN `MPONTO_DESC` VARCHAR(60), IN `USER_NOME` VARCHAR(20), IN `NUPONTO` INT) LANGUAGE SQL NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER COMMENT '' BEGIN INSERT INTO TB_AUDITORIA( ORIGEM, DATA, MPONTO_HORA, CODFUNCIONARIO, MPONTO_DESC, USER_NOME, NUPONTO) values ( ORIGEM, DATA, MPONTO_HORA, CODFUNCIONARIO, MPONTO_DESC, USER_NOME, NUPONTO); END
-
Olá, essa é a minha primeira postagem nesse fórum (além de ser o terceiro em que pergunto) e peço desculpas por qualquer erro que eu esteja cometendo. Sou iniciante em programação orientada a objetos, estudando à apenas seis meses a IDE Delphi 7 em meu curso. Estou a 3 dias do termino do prazo final do trabalho que conclui essa matéria e boa parte de meu projeto está pronto, mas emperrei em um ponto do qual eu não sei o que fazer. A ideia do meu projeto é o gerenciamento de fichas e anotações para se jogar RPG (Role Playing Game) de mesa. O programa principal cria, conforme um registro é carregado ou um formulário para se criar um novo registro é chamado, dinamicamente abas contendo o formulário que será usado. Eu já desenvolvi uma procedure para salvar os dados do formulario no aquivo que eu determinei como "banco de dados" para esse tipo de registro e outra procedure para se abrir um registro - que foi bem simples depois de pensar algumas horas. Como eu executo essa procedure de salvamento ou como eu crio uma que ache os componentes dentro desse formulário dinâmico? Aqui vão as procedures citadas. //Função de abertura de registro/aba //No caso J_Principal é meu Main Form, Campanha é meu registro e PC_Area_de_Trabalho é o PageControl onde as abas que são criadas dinamicamente ficam localizadas procedure TJ_Principal.AbrirCampanha (C : String); var Tab : TTabSheet; Form : TJ_Campanha; begin Tab := TTabSheet.Create(Self); Form := TJ_Campanha.Create(Tab); Seek(ArqCam, 0); while (not EoF(ArqCam)) do begin Read(ArqCam, Campanha); if (C = Campanha.Titulo) then begin Seek(ArqCam, FilePos(ArqCam) -1); Break; end; end; if (AbaExiste(Campanha.Titulo)) then begin FreeAndNil(Tab); Exit; end; with Tab do begin PageControl := PC_Area_de_Trabalho; Caption := Campanha.Titulo; ImageIndex := 1; end; with Form do begin Align := alClient; BorderStyle := bsNone; Parent := Tab; L_Cria_Mod.Caption := 'Criado por: ' + Campanha.Criador + ' em: ' + DateToStr(Campanha.DataDeCriacao) + ' Modificado em: ' + DateToStr(Campanha.DataDeModificacao); E_Nome.Text := Campanha.Titulo; M_Resumo.Text := Campanha.Resumo; M_Detalhes.Text := Campanha.Detalhes; if (Campanha.Permissao) then Form.RP_Permissao.ItemIndex := 1 else Form.RP_Permissao.ItemIndex := 0; Show; end; PC_Area_de_Trabalho.ActivePage := Tab; end; //Aqui a procedure padrão para se criar uma nova aba (Um formulario, no sentido literal, não de Form, onde é preenchido os dados que irão ser salvos em Registro) procedure TJ_Principal.CriarAba (F : TFormClass); var Tab : TTabSheet; Form : TForm; Tag : Integer; begin Tab := TTabSheet.Create(Self); Form := F.Create(Tab); if (F = TJ_Campanha) then Tag := 1 else if (F = TJ_Aventura) then Tag := 2 else if (F = TJ_Cena) then Tag := 3 else Tag := 0; Case (Tag) of 1 : Form.Caption := 'Novo - Campanha *'; 2 : Form.Caption := 'Novo - Aventura *'; 3 : Form.Caption := 'Novo - Cena *'; 4 : Form.Caption := 'Novo - Personagem *'; 5 : Form.Caption := 'Novo - Raça *'; 6 : Form.Caption := 'Novo - Classes *'; 7 : Form.Caption := 'Novo - Habilidade *'; 8 : Form.Caption := 'Novo - Item *'; end; if (AbaExiste(Form.Caption)) then begin FreeAndNil(Tab); Exit; end; with Tab do begin PageControl := PC_Area_de_Trabalho; Caption := Form.Caption; ImageIndex := Tag; end; with Form do begin Align := alClient; BorderStyle := bsNone; Parent := Tab; //Name := 'Nome'; //Só coloquei isso pois minha ultima tentativa mal sucedida era usar o Application.FindCOmponent('Nome'), porém meu teste não funcionou v.v Show; end; PC_Area_de_Trabalho.ActivePage := Tab; end; //Função que verifica se já existe alguma aba igual já aberta function TJ_Principal.AbaExiste(NomeAba: string): Boolean; var I : Integer; Aba : TTabSheet; begin Result := False; for I := 0 to PC_Area_de_Trabalho.PageCount - 1 do begin if ((PC_Area_de_Trabalho.Pages[I].Caption = NomeAba) or (PC_Area_de_Trabalho.Pages[I].Caption = ('*' + NomeAba))) then begin Aba := PC_Area_de_Trabalho.Pages[I]; PC_Area_de_Trabalho.ActivePage := Aba; Result := True; Break; end; end; end; //Esse é a unica Procedure que não está localizada no Main Form //Processo que salva os dados preenchidos em um Form préviamente aberto com CriaAba. //Funciona perfeitamente se tiver um botão dentro do formulário que o ative, mas o Main Form(J_Principal) não consegue acessa-lo, pois como é criado dinamicamente //e se tem mais de um tipo de form TJ_Campanha aberto, ele não sabe para qual eu estou me referindo. procedure TJ_Campanha.SalvarArquivo; var I : Integer; begin I := 1; Seek(ArqCam, 0); while (not EoF(ArqCam)) do begin Read(ArqCam, Campanha); if (Self.E_Nome.Text = Campanha.Titulo) then if (MessageDlg('Já existe um registro com esse nome, deseja salvar mesmo assim?' + #13 + 'Caso SIM, ambos os registros serão mantidos.', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then begin Seek (ArqCam, 0); while(not EoF(ArqCam)) do begin Read(ArqCam, Campanha); if (Campanha.Titulo = Self.E_Nome.Text + IntToStr(I)) then begin Inc(I); Seek(ArqCam, 0); end; end; E_Nome.Text := E_Nome.Text + IntToStr(I); Break; end else Exit; end; with Campanha do begin Criador := Usuario.Nome; DataDeCriacao := Date + Time; DataDeModificacao := Date + Time; Titulo := E_Nome.Text; Resumo := M_Resumo.Text; Detalhes := M_Detalhes.Text; if (RP_Permissao.ItemIndex = 0) then Permissao := False else Permissao := True; for I := 1 to Self.LB_PJogaveis.Count do //O que é essa propriedade ItemHeight??? PJ[I] := Copy(Self.LB_PJogaveis.Items[I-1], 0, Pos(' ', Self.LB_PJogaveis.Items[I-1])); for I := 1 to Self.LB_PNJogaveis.Count do PnJ[I] := Copy(Self.LB_PNJogaveis.Items[I-1], 0, Pos(' ', Self.LB_PNJogaveis.Items[I-1])); for I := 1 to Self.LB_AventurasEscolhidas.Count do Aventuras[I] := Copy(Self.LB_AventurasEscolhidas.Items[I-1], 0, Pos(' ', Self.LB_AventurasEscolhidas.Items[I-1])); end; Write(ArqCam, Campanha); J_Principal.PC_Area_de_Trabalho.ActivePage.Caption := Campanha.Titulo; end; Todo esse código foi desenvolvido por mim, ao longo de dois dias com a ajuda desses links aqui: http://lucianopimenta.com/post.aspx?id=171- Que utilizou a abertura em abas para fazer um Navegador http://www.devmedia.com.br/websys.5/webreader.asp?cat=3&artigo=1907&revista=clubedelphi_110#a-1907- Inicialmente eu iria usar essa classe, mas ela se demonstrou incompativel com a minha IDE por motivos desconhecidos. Eu meio que estou desesperado. Se alguém tiver alguma ideia de como eu devo proceder a partir de agora, eu agradeço. Se algo ficou mal explicado, me desculpem, pois estou morrendo de sono, mas perguntem por que eu tento me explicar de novo com outras palavras. Desde já, agradeço.
-
Olá, depois de apanhar muito dentro do scriptcase e também em php com estouro de memória, decidi que o melhor lugar para calcular todas aquelas regras de MMN Binário, é dentro do próprio banco de dados. Assim, a aplicação fica mais leve, e limpa. Então , como marinheiro de primeira viagem em PL Sql, estou tendo algumas dificuldades, como trabalhar com cursores, extruturas de repetição, e chamar uma procedure dentro da outra... neste primeiro exemplo, quero apenas somar os pontos de todos os downlines a partir de uma determinada franquia, porém, está com um erro que não consigo achar. Alguém pode me ajudar? Segue a procedure: -- -------------------------------------------------------------------------------- -- Routine DDL -- Note: comments before and after the routine body will not be stored by the server -- -------------------------------------------------------------------------------- DELIMITER $$ CREATE PROCEDURE `lkp_diretos_de` (IN upline int,IN market int, IN ciclo int, IN secao varchar(45),OUT total_pontos float) BEGIN DECLARE done_arr_rede1,done_arr_rede2,diretos1,diretos2,fra_id,fra_derramado_em_id,fra_upline_id ,fra_id2,fra_derramado_em_id2,fra_upline_id2 INTEGER DEFAULT 0; DECLARE fra_dat_cadasto,fra_dat_cadasto2 DATETIME; DECLARE fra_lado_equipe_upline,fra_lado_equipe_upline2 char(1); DECLARE fra_saldo_pontos,fra_saldo_pontos2 float DEFAULT 0; DEClARE arr_rede1 CURSOR FOR SELECT mmn_franquias.fra_id, mmn_franquias.fra_dat_cadasto, mmn_franquias.fra_derramado_em_id, mmn_franquias.fra_upline_id, mmn_franquias.fra_lado_equipe_upline, mmn_franquias.fra_saldo_pontos FROM mmn_franquias ORDER BY mmn_franquias.fra_dat_cadasto; DEClARE arr_rede2 CURSOR FOR SELECT mmn_franquias.fra_id, mmn_franquias.fra_dat_cadasto, mmn_franquias.fra_derramado_em_id, mmn_franquias.fra_upline_id, mmn_franquias.fra_lado_equipe_upline, mmn_franquias.fra_saldo_pontos FROM mmn_franquias ORDER BY mmn_franquias.fra_dat_cadasto; -- declare NOT FOUND handler DECLARE CONTINUE HANDLER FOR NOT FOUND SET done_arr_rede1 = 1; -- declare NOT FOUND handler DECLARE CONTINUE HANDLER FOR NOT FOUND SET done_arr_rede2 = 1; OPEN arr_rede1; REPEAT FETCH arr_rede1 INTO fra_id, fra_dat_cadasto, fra_derramado_em_id, fra_upline_id, fra_lado_equipe_upline, fra_saldo_pontos; IF NOT done_arr_rede1 THEN if locate(fra_upline,upline)>0 then OPEN arr_rede2; while done_arr_rede2 = 1 do FETCH arr_rede2 INTO fra_id2, fra_dat_cadasto2, fra_derramado_em_id2, fra_upline_id2, fra_lado_equipe_upline2, fra_saldo_pontos2; if fra_upline_id2 = fra_upline_id1 then set done_arr_rede2 = 1; set upline = concat (upline,',',fra_upline_id2); set total_pontos = total_pontos + fra_saldo_pontos2; end if; end while; CLOSE arr_rede2; end if; END IF; UNTIL done END REPEAT; CLOSE arr_rede1; END