-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
Extensões php_mysql.dll e php_mysqli.dll no PHP e IIS do Windows XP Pr
pergunta respondeu ao marceloadeo de Denis Courcy em PHP
Oi, Marcelo! Em resposta a sua primeira pergunta. Este não é um problema específico do MySQL. Por tanto vou transferir este tópico para o forum de PHP, onde você poderá encontrar uma melhor solução. Em resposta a sua segunda pergunta. Já que você usa o M$Windows, o melhor programa para SGBD de MySQL, em minha opinião é o SQLYog (que tem uma versão free para download). Veja em (Dicas - Neste Forum) -
Oi, Eder! Infelizmente não há como fazê-lo.
-
Oi, Micheus! Você enviou o código que está com erro assim: ... Assignfile(Txt,'Arquivo.csv'); Reset(Txt); Readln(Txt, Entrada); While Not EOF(Txt) do begin ListBox2.Items.Add(Entrada); Application.ProcessMessages; Readln(Txt, Entrada); Label2.Caption := Entrada; end; CloseFile(Txt); Porém, Se você fizer assim: ... Assignfile(Txt,'Arquivo.csv'); Reset(Txt); Readln(Txt, Entrada); While Not EOF(Txt) do begin Label2.Caption := Entrada; ListBox2.Items.Add(Entrada); Application.ProcessMessages; Readln(Txt, Entrada); end; CloseFile(Txt);Você não terá erros. Pois como mensionei anteriormente a segunda leitura deve ser a última instrução antes do end do bloco while
-
Denis Courcy, faz tempo que não implemento este tipo de leitura, então vou perguntar para tirar a dúvida: da forma como você sugere - fazer o Readln ao final do laço - não irá acontecer de a última linha deixar de ser processada, já que a úlima linha é lida e o sinalizador de EOF "encontrado"?Abraços Oi, Micheus! A resposta a seu questionamento é não. As regras para leitura de arquivo de forma estruturada, usando laço while (validas para qualquer linguagem) determinam: 1 - A leitura antes (a do primeiro registro) do laço while. Para certificar que o buffer entre, carregado, no laço (veja a explicação abaixo) 2 - A leitura na última posição do laço while. Para forçar que o buffer esteja carregado antes de fazer o teste para a continuidade do laço. Explicação: Quando o arquivo não possui registro o que é lido é a marca de EOF (caracter CTRL Z ou chr(26) nos arquivos texto) e uma informação é emitida avisando que o EOF foi encontrado. O mesmo acontece quando, em um arquivo que contém registros, após a última leitura, o EOF é encontrado. Nos arquivos binários o teste é feito comparando o ponteiro de deslocamento do arquivo com o tamanho do mesmo informado na tabela de diretório. Quando a marca de EOF é encontrada o buffer retornará vazio e/ou parcialmente cheio. O arquivo texto informado pelo Eder tem a seguinte composição: <<<<string>>>> EOL <<<<string>>>> EOL EOF Há casos em que o arquivo texto pode vir assim: <string1>,<string2>,<string3>,...,<stringN>EOF Mas este é outro tópico. Para saber: EOL = Marca de fim de linha = #13#10 EOF = Marca de fim de arquivo = #26. Nos arquivos binários o EOF é #255.
-
Oi, Eder! Modifique seu código para que fique assim: procedure TForm1.Button2Click(Sender: TObject); var Txt : TextFile; Entrada : String; begin Assignfile(Txt,'C:\MES\Clientes.Txt'); Reset(Txt); Readln(Txt, Entrada); //a primeira leitura fica fora do while While Not Eof(Txt) do // O teste é de final de arquivo e não de fim de linha como antes begin Table1.Insert; Table1.FieldByName('ordem').Value := Trim(Copy(Entrada,10,06)); Table1.FieldByName('nome').Value := Trim(Copy(Entrada,16,42)); Table1.FieldByName('cnpj').Value := Trim(Copy(Entrada,58,18)); Table1.Post; Readln(Txt, Entrada); // As leituras seguintes ficam na última linha antes do final do while end; CloseFile(Txt); end;
-
Aparecer as datas em vermelhos se for feriado nacional!
pergunta respondeu ao robinhocne de Denis Courcy em Delphi, Kylix
Você deverá ter uma tabela para feriados flutuantes (carnaval, páscoa, corpus cristi) verificar se a data é uma data fixa, tal como natal, ano novo, etc. E, se não for, verificar se a data é um feriado flutuante, pesquisando na tabela. O resto é através de linguagem de programação. -
Oi, Cadu0220! Vamos resolver isso desta forma: CREATE PROCEDURE jclgraf_SelectRequisicao ( IN id_requisicao int ) BEGIN declare trabalhos int; declare itens int; set @trabalhos = (SELECT COUNT(id_trabalho) FROM trabalhos WHERE id_requisicao = @id_requisicao); set @itens = (SELECT COUNT(id_item) FROM itens WHERE id_requisicao = @id_requisicao); SELECT R.titulo ,R.produto ,E.razao_social ,Contato.nome nome_contato ,Contato.email email_contato ,Vendedor.nome nome_vendedor ,Vendedor.email email_vendedor ,R.observacoes ,IF(R.status = 1, 'Criada', IF(R.status = 2, 'Aguardando Orçamento', IF(R.status = 3, 'Aguardando Aprovação', IF(R.status = 4, 'Em produção', IF(R.status = 5 THEN 'Finalizada', 'Cancelada'))))) AS Status ,R.data_cadastro ,P.id_pedido ,@trabalhos trabalhos ,@itens itens ,F.id_faturamento ,F.emissao_nota_fornecedor ,F.vencimento_nota_fornecedor ,F.numero_nota_fornecedor ,F.vencimento_nota_jcl ,F.numero_nota_jcl ,((O.bv_jcl - (O.bv_agencia + O.bv_producao)) / 100) * T.preco_total comissao FROM requisicoes R LEFT OUTER JOIN pedidos P ON (R.id_requisicao = P.id_requisicao) LEFT OUTER JOIN faturamentos F ON (R.id_requisicao = F.id_requisicao) LEFT OUTER JOIN trabalhos T ON (R.id_requisicao = T.id_requisicao AND T.status = 4) LEFT OUTER JOIN orcamentos O ON (O.id_orcamento = T.id_orcamento) ,empresas E ,contatos Vendedor ,contatos Contato WHERE R.id_requisicao = @id_requisicao AND E.id_empresa = R.id_empresa AND Contato.id_contato = R.id_contato AND Vendedor.id_contato = R.id_vendedor; END; Instrução IF utilizadas em cláusulas SELECT conforme capítulo 6 do manual do MySQL versão 4.1 tradução em português 6.3.1.4. Funções de Fluxo de Controle mysql> SELECT IF(1>2,2,3); -> 3 mysql> SELECT IF(1<2,'sim','não'); -> 'sim' mysql> SELECT IF(STRCMP('teste','teste1'),'não','sim'); -> 'não'
-
Está correto. Você também pode usar a função LAST_INSERT_ID()
-
Oi, Mauro! Normalmente isto é feito usando linguagem de programação. Pois você estará usando a transformação de um número em uma string. O MySQL tem funções que podem ser combinadas para que você consiga este resultado (ver capítulo 6 do manual do mysql versão 4.1 tradução em português). Porém, o normal, é que você o faça a través da linguagem de programação que você usa.
-
Crie um script e Carregue-o no servidor. Conforme escrevi no post #2 deste tópico
-
não consigo conectar uma pagina html/PHP com um banco MySQL
uma questão respondeu Denis Courcy em PHP
Oi, Andros! Vamos iniciar com o erro acima. Este erro informa que o usuário root não foi habilitado corretamente. A partir da versão 4.1 do MySQL você necessita cadastrar o usuário root@% com todos os priviégios para que os clientes e serviços externos possam enxergar o servidor do banco. Leia no manual do mysql como se cadastra e como obter os privilégios para esta conta. -
Oi, Jesc!Bom dia. Use a função LAST_INSERT_ID() Conforme o manual do MySQL versão 5.0(em inglês)
-
Oi, 'tiagojmg' ! Isto está parecendo ser mais um GOTCHA do MySQL. Um GOTCHA é um comportamento não esperado para um evento realizado. Não é um bug. Vou testar em casa e te respondo depois.
-
Verifique o Tópico Para Tutoriais/dicas, e também o Programas Front End Mysql No primeiro link procure o post do Micheus No segundo Link O último (SQLYog) é o que eu uso.
-
Porque já tem índice ( o foreign key) e a restrição de integridade referencial provocada pela constraint obriga a a que o registro na tabela filha só possa ser incluido se houver incluido o registro na tabela pai antes.Outra coisa, Você sabia que excesso de índices também podem tornar uma tabela mais lenta? Fiz com que a tranzação fosse atômica. Ou seja, ou grava tudo ou não grava nada. Se houver falha na gravação um erro será disparado e o que foi gravado será desfeito.
-
Por que você não usa o sinal de IGUAL ou o LIKE, tal como: select id_conta FROM bolsa_conta_cep where cep = '14800-000'; ouselect id_conta FROM bolsa_conta_cep where cep LIKE '14800-000%';
-
Oi, Welinton! Eu não entendi o select id_conta where tabela where cep >= '13700-000' and cep <= '13700-000' Não seria assim? select id_conta FROM tabela where cep >= '13700-000' and cep <= '13700-000' Se eu estiver certo, então o melhor seria escrever assim:select id_conta FROM tabela where cep BETWEEN '13700-000' and '13700-000'
-
Oi, Jesc! Não há auto_increment nos atributos id_pessoa_fis da tabela pessoa_fisica, nem id_pessoa_jur na tabela pessoa_jurid, nem id_clube na tabela clube e nem id_jogador na tabela jogador.Estes atributos são atributos ALIAS do atributo id_pessoa na tabela pessoa. Um Atributo ALIAS é o atributo que tem o nome diferenciado para facilitar o entendimento, mas que o conteúdo e tipo são os mesmos do atributo a que ele faz referência. Assim, modificando suas definições, teremos: create database futebol; use futebol; CREATE TABLE pessoa ( id_pessoa integer unsigned not null auto_increment, nome varchar(40) not null, fone varchar(15) not null, tipo_pessoa enum('J','F') not null, primary key (id_pessoa) )ENGINE=InnoDB; CREATE TABLE pessoa_fisica ( id_pessoa_fis integer unsigned not null, data_nasc date not null, cpf varchar(15) not null, e_jogador enum ("S","N") not null, )ENGINE=InnoDB; ALTER TABLE pessoa_fisica ADD CONSTRAINT FK_pessoa_fis FOREIGN KEY (id_pessoa_fis) REFERENCES pessoa (id_pessoa) ON UPDATE CASCADE ON DELETE CASCADE; CREATE TABLE pessoa_juridica ( id_pessoa_jur integer unsigned not null, nome_fant varchar(40) not null, fundacao date not null, cnpj varchar(15) not null, e_clube enum ("S","N") not null, )ENGINE=InnoDB; ALTER TABLE pessoa_juridica ADD CONSTRAINT FK_pessoa_jur FOREIGN KEY (id_pessoa_jur) REFERENCES pessoa (id_pessoa) ON UPDATE CASCADE ON DELETE CASCADE; CREATE TABLE jogador ( id_jogador integer unsigned not null, apelido varchar(20) not null, valor_passe decimal(7,2) not null )ENGINE=InnoDB; ALTER TABLE jogador ADD CONSTRAINT FK_jogador FOREIGN KEY (id_jogador) REFERENCES pessoa_fisica (id_pessoa_fis) ON UPDATE CASCADE ON DELETE CASCADE; CREATE TABLE clube ( id_clube integer unsigned not null, cores varchar(100) not null, )ENGINE=InnoDB; ALTER TABLE clube ADD CONSTRAINT FK_clube FOREIGN KEY(id_clube) REFERENCES pessoa_juridica (id_pessoa_jur) ON UPDATE CASCADE ON DELETE CASCADE; CREATE TABLE cotas ( id_jogador integer unsigned not null, id_pessoa integer unsigned not null, percentual char(5) not null, valor_negoc decimal(7,2) not null, data_negoc date not null, valor_mercado decimal(7,2) not null, )ENGINE=InnoDB; ALTER TABLE cotas ADD CONSTRAINT FK_jogador FOREIGN KEY (id_jogador) REFERENCES jogador (id_jogador) ON UPDATE CASCADE ON DELETE CASCADE, ADD CONSTRAINT FK_pessoa FOREIGN KEY (id_pessoa) REFERENCES pessoa (id_pessoa) ON UPDATE CASCADE ON DELETE CASCADE; CREATE TABLE jogador_clube ( id_clube integer unsigned not null, id_jogador integer unsigned not null, primary key (id_clube,id_jogador) )ENGINE=InnoDB; ALTER TABLE jogador_clube ADD CONSTRAINT FK_clube FOREIGN KEY(id_clube) REFERENCES clube (id_clube) ON UPDATE CASCADE ON DELETE CASCADE, ADD CONSTRAINT FK_jogador FOREIGN KEY(id_jogador) REFERENCES jogador (id_jogador) ON UPDATE CASCADE ON DELETE CASCADE; É para manter o relacionamento 1:1 dependente da tabela pai. Só pode incluir um clube, por exemplo, se antes você incluiu uma pessoa jurídica e esta pessoa jurídica, por sua vez, só pode ser incluida se você já incluiu um registro em pessoa. Assim, respondendo a sua solicitação em para inclusão do clube 'Flamengo', por exemplo, teremos: USE futebol; START TRANSACTION; INSERT INTO pessoa (id_pessoa, nome, fone, tipo_pessoa enum) VALUES (1, 'CLUBE DE REGATAS FLAMENGO', 9999-9999, 'J'); INSERT INTO pessoa_juridica (id_pessoa_jur, nome_fant, fundacao, cnpj, e_clube) VALUES (1, 'FLAMENGO', '1900-01-01', 99999999999-99, 'S'); INSERT INTO clube (id_clube, cores) VALUES (1, 'VERMELHO e PRETO'); COMMIT;
-
Cadu veja este trecho de código CASE R.status WHEN 1 THEN 'Criada' WHEN 2 THEN 'Aguardando Orçamento' WHEN 3 THEN 'Aguardando Aprovação' WHEN 4 THEN 'Em produção' WHEN 5 THEN 'Finalizada' ELSE 'Cancelada' Agora veja este: ,Vendedor.email email_vendedor Notou o que está faltando? Já tentou colocar um ALIAS após o ELSE 'Cancelada'? No segundo erro não está faltando um END IF; após o END IF e antes do END? Tente desta forma: CREATE PROCEDURE jclgraf_SelectToPropostaEmail (IN id_requisicao int, IN opcao_consulta int) BEGIN IF (@opcao_consulta = 1) THEN SELECT R.titulo ,R.produto ,R.observacoes ,C.email FROM requisicoes R, contatos C WHERE R.id_requisicao = @id_requisicao AND C.id_contato = R.id_contato; ELSE IF (@opcao_consulta = 2) THEN SELECT descricao ,largura_aberto ,altura_aberto ,largura_fechado ,altura_fechado ,cores_frente ,cores_verso ,substratos ,acabamentos FROM itens WHERE id_requisicao = @id_requisicao; ELSE SELECT O.quantidade ,E.razao_social ,T.id_trabalho ,T.proposta ,T.preco_unitario ,T.preco_total FROM trabalhos T, orcamentos O, empresas E WHERE T.id_requisicao = @id_requisicao AND T.id_orcamento = O.id_orcamento AND E.id_empresa = T.id_empresa; END IF; END IF; END;
-
Jesc, Respondendo suas perguntas temos: Resp.: Sim. O relacionamento entre estas tabelas é de 1:1 podendo ser 0 na tabela filha.Daí a necessidade de implementar controles como os da próxima pergunta sua É um tipo lógico ou ENUM com sim ou não que informará se aquele registro possui uma especialização. Já que posso ter Pessoa física que não é jogador e pessoa jurídica que não é clube. Da mesma forma há um controlador em pessoa que me informa que tipo de pessoa é a minha especialização. Esqueci. Veja o porquê na resposta da questão 1 Veja se a resposta que dei neste Tópico te ajuda. Substitua ON DELETE NO ACTION E ON UPDATE NO ACTION por ON DELETE CASCADE e ON UPDATE CASCADE
-
Oi, Jesc! Pelo que você explicou gerei o modelo em anexo. Avalie e informe onde e o que não entendeu. clube_futebol.pdf
-
Oi, akira2005! Com base no modelo apresentado em anexo no post#2 faça o seguinte: Na tabela Alunos acrescente o atributo Senha Na tabela Boletim - substitua o atributo "notas do I Bimestre" pelos atributos B1_avaliação1, B1_trabalho, B1_avaliação2 - substitua o atributo "notas do II Bimestre" pelos atributos B2_avaliação1, B2_trabalho, B2_avaliação2 - substitua o atributo "notas do III Bimestre" pelos atributos B3_avaliação1, B3_trabalho, B3_avaliação2 As médias, por serem campos calculados, obtidos da expressão ((avaliação 1 + trabalho + avaliação 2) / 3) não precisam ser guardadas como valores permanentes. Então não há a necessidade de criar atributos para elas. O atributo media anual, da mesma forma que as medias binestrais, também é um campo calculado e não há a necessidade de guardá-lo permanentemente. O atributo media da recuperação anual, , da mesma forma que as medias binestrais, também é um campo calculado e não há a necessidade de guardá-lo permanentemente. Acrecente o atributo Nota_Final Acrescente o atributo "Situação do aluno" CREATE TABLE Aluno ( ID_aluno integer unsigned not null auto_increment, Nome_Aluno varchar (60) not null, Senha varchar(45) not null, primary key (id_Aluno) )ENGINE=InnoDB; CREATE TABLE Curso ( ID_Curso integer unsigned not null auto_increment, Nome_Curso varchar(50) not null, primary key (ID_Curso) )ENGINE=InnoDB; CREATE TABLE Materias ( ID_Materia integer unsigned not null auto_increment, Nome_Materia varchar(50) not null, primary key (ID_Materia) )ENGINE=InnoDB; CREATE TABLE Turma ( ID_Curso integer unsigned not null, ID_Turma integer unsigned not null auto_increment, ID_Aluno integer unsigned not null, ID_Materia integer unsigned not null, primary key (ID_Curso, ID_Turma) )ENGINE=InnoDB; ALTER TABLE Turma ADD CONSTRAINT FK_Curso (ID_Curso) REFERENCES Curso (ID_Curso) ON UPDATE NO ACTION, ON DELETE NO ACTION, ADD CONSTRAINT FK_Aluno (ID_Aluno) REFERENCES Aluno (ID_Aluno) ON UPDATE NO ACTION, ON DELETE NO ACTION, ADD CONSTRAINT FK_Materia (ID_Materia) REFERENCES Materia (ID_Materia) ON UPDATE NO ACTION, ON DELETE NO ACTION; O resto você faz. ADD CONSTRAINT estabelece os relacionamentos criando a integridade referencial necessária. Este comando só é valido se você utilizar o engine InnoDB em suas tabelas.
-
Oi, Mauro! O seu job está dando erro nesta linha? SELECT jobscombrasil.data_entrada , jobscom4brasil.data_saida ,jobscom4brasil.orcamento, jobscom4brasil.orcamento_rs, Que tabela é jobscombrasil? Não seria jobscom4brasil? O erro também está nesta linha cliente.nome_cliente,representantes.nome,status_producao.producao, status_pedido.entrega Que tabela é status_pedido? não seria a tabela abaixo status_entrega? inner join status_entrega on jobscom4brasil.idstatus_entrega = status_entrega.idstatus_entrega Para evitar erros deste tipo, faça uso de alias "apelidos" que facilitam a digitação. Veja sua query modificada abaixo: (estou assumindo que jobscombrasil é, na verdade, jobscom4brasil e que status_pedido é status_entrega) SELECT j.data_entrada , j.data_saida , j.orcamento, j.orcamento_rs, j.disco , j.descricao , j.numero, c.nome_cliente, r.nome, sp.producao, se.entrega FROM jobscom4brasil j INNER JOIN cliente c ON j.idcliente = c.idcliente INNER JOIN representantes r ON j.idrepresentante = r.idrepresentante INNER JOIN status_producao sp ON j.idstatus_producao = sp.idstatus_producao INNER JOIN status_entrega ON j.idstatus_entrega = se.idstatus_entrega WHERE j.idjobscom4brasil='.$id;
-
Pode melhorar sua pergunta, por favor?
-
(Resolvido) carregar dados apartir de txt
pergunta respondeu ao brunocasado de Denis Courcy em MySQL
Através da linha de comando command(cmd) no windows ou do shell no linux, digite: mysql -u root -p aparecerá o prompt do mysql mysql> digite mysql> source meuarquivo.txt após a carga digite mysql> quit; Pronto. está carregado.