-
Total de itens
3.089 -
Registro em
-
Última visita
Posts postados por Denis Courcy
-
-
Olá Denis Courcy!
Eu utilizo o access, e todas as linhas e colunas são identicas... mas ele esta me retornando 3 linhas iguais, que relamente existem, mas que quero apenas uma...
Alexandre
Oi, Alexandre!
Criei uma tabela com 3 linhas iguais cada campo com um tipo diferente. A consulta retornou 1 linha como esperado.
Alterei o valor do campo3 do último registro e ele retornou 2 linhas como esperado (pois o conteúdo dos registros nos 3 campos não eram iguais). suprimi o campo 3 da minha consulta (somente da consulta. o campo3 no 3o. registro ainda está com valor diferente) retornou apenas 1 linha como esperado.
Com base no descrito acima, concluo que o SQL que você utilizou não foi compreendido pelo access. (Uso o MS office 2000).
Faça o teste em seu access com a sintaxe abaixo. ( a mesma que utilizei) e informe o resultado:
SELECT DISTINCT Tabela1.campo1, Tabela1.campo2, Tabela1.campo3 FROM Tabela1;
-
Oi, 'Vivendo&Aprendendo', qual banco você usa?
Por padrão (ANSI) o SQL DISTINCT só funciona se todas as linhas (todas as colunas) retornarem valores iguais.
-
Oi, Francisco !
Use uma tabela temporária em memória e faça seu relatório a partir dela.
CREATE TEMPORARY TABLE temp ( cnpj (conforme o tipo em sua tabela), vltb1 double(14,2), vltb2 double(14,2), vltb3 double(14,2), PRIMARY (cnpj) )ENGINE = MEMORY;
Carrege os dados para elaINSERT INTO temp (cnpj, vltb1, vltb2, vltb3) SELECT STRAIGHT_JOIN t0.cnpj, SUM(t1.vlrctb) AS vltb1, SUM(t2.vlrctb) AS vltb2, SUM(t3.vlrctb) AS vltb3 FROM tabela0 t0 INNER JOIN tabela1 t1 ON t0.cnpj = t1.cnpj INNER JOIN tabela2 t2 ON t0.cnpj = t2.cnpj INNER JOIN tabela3 t1 ON t0.cnpj = t3.cnpj GROUP BY cnpj;
use a tabela temp em seu relatorioSELECT cnpj, SUM(vltb1), SUM(vltb2), SUM(vltb3) FROM temp GROUP BY cnpj;
delete a tabela temporária para liberar memória.DROP TABLE temp;
Nota: Só utilize a engine memory se você souber que a quantidade de dados a serem armazenados não ultrapassa uma quantidade de mória razoável para este processamento.
-
Olá pessoal,
no mysql4, para armazenar o retorno da função password('string'), usava um campo tipo CHAR com tamanho 16. Funcionava!
Ao atualizar para o mysql5, notei que a função password() retorna uma string muito maior.
existe algum tipo de campo próprio para receber o retorno da função password(). Caso contrário, de for armazenar o retonrno num campo tipo CHAR, qual deve ser seu tamanho mínimo?
Valeu!
Skin_
Oi, 'Skin'!
O tamanho do campo char foi alterado a partir da versão 4.1 do MySQl, de 16 para 41 bytes e a partir da versão 5.x ele inicia com o caracter '*'. para o MySQL 5.x é de 41 bytes. Como o tamanho é fixo, aconselho a utilização do tipo CHAR(41) em lugar do VARCHAR para este tipo de campo.
Para mais informações ver as seções:
5.8.9. Password Hashing as of MySQL 4.1 e
5.9. MySQL User Account Management
do manual do MySQL verão 5.0.x
att
Denis Courcy
-
Oi, Eduardo!
Pelo que entendi, você está cometendo um erro de lógica em seu modelo.
O conceito simples para este modelo é um condomínio tem um ou vários apartamentos e um apartamento tem um ou vários inquilinos. Inquilino é tabela "FILHA de Apartamentos que é tabela "FILHA de condominio.
Segundo sua base, o conceito está em: um condominio tem um ou mais apartamentos e um inquilino está em um ou mais apartamentos.
Neste seu caso (vide as constraits), quando da inclusão, Inquilino e condomínio devem ser cadastrados antes de apartamentos e, pior, quando da exclusão deve-se deletar primeiro apartamentos para depois deletar o inquilino ou condimínio, senão haverá erro de integridade referencial.
Você tornou Inquilino e condomínio como tabelas "PAI" e apartamentos como tabela "FILHA" destes dois.
Lembre-se a rotatividade de inquilinos entre apartamentos é maior que a de apartamentos em condomínio.
Pense e informe o que decidiu.
-
Bom dia pessoal...
Eu estou com uma duvida, eu estou ultilizando o mysql, alguém sabe se exite alguma ferramenta que auxilia na construção de um dicionario banco de dados para o mesmo.
Andei procurando a respeito e encontrei algumas coisas relacionadas, mas não obtive sucesso.
Se alguém souber e tiver como me dar uma dica ficarei muito agradecido.
Oi, Hilário!
Também não conheço nenhuma ferramenta decente para realizar esta tarefa.
Lendo na net encontrei estes (não sei se satisfarão sua necessidade).
<a href="http://webscripts.softpedia.com/scriptDownload/MySQL-Data-Dictionary-Creator-Download-3218.html" target="_blank">
http://webscripts.softpedia.com/scriptDown...nload-3218.html</a>
http://www.tonymarston.net/php-mysql/data-dictionary.html
Há tambem a INFORMATION_SCHEMA do próprio MySQL implementado a partir da versão 5.0
SELECT table_name, table_type, engine FROM INFORMATION_SCHEMA.tables WHERE table_schema = 'tp' ORDER BY table_type ASC, table_name DESC;
mas ainda não testei.
Estou desenvolvendo um modelo de dados em MySQL que me ajudará na documentação do sistema (dicionarização).
Se houver interesse poderemos conversar melhor. (Não me preocupo de tornar o modelo público).
att
Denis Courcy
-
Ola...Deniz..Grato em responder.
Será que é por causa de ser Paradox a Tabela??
muito Grato
Creio que sim. Pois o SQL que passei é padrão e utilizável em quase todos tipos de bancos de dados.
Então use a opção 1. Dará mais trabalho no ínício (para modificar as tabelas), mas você não terá mais este tipo de problema.
att
Denis Courcy
-
Olá, gostaria de saber se algum colega tem uma dica para o seguinte processo:
tenho um form de cadastro de produtos, então cadastra o nome do produto, código, etc, porém o complemento do cadastro terá que ser em uma janelinha separada, que abriria tipo um popup, como eu poderia fazer uma janela que abrisse com os edit's de complemento sem fazer um outro form somente para estes 4 ou 5 campos.
Se alguém puder me ajudar eu agradeço.
Oi, João Paulo!
Utilize um componente TPanel. Coloque dentro dele os TEdit que você precisa e colotrole-o com Vosible False/True para esconder e exibir o Panel quando necessário.
att
Denis Courcy
-
A conversão de graus em Fahrenheit para centígrados é obtida pela fórmula C=5/9 (F-32). Escreva um algorítmo que mostre essa conversão...
me ajudem se puder hehe!!
Oi, Anne!
Seu algorítimo é basicamente assim.
Declare variavel GrauFahrenheit GrauCelcius Escreva "Entre com o Grau em Fahrenheit" Leia GrauFahrenheit GrauCelcius <- (5 / 9 * (GrauFahrenheit - 32)) Escreva GrauCelcius
att
Denis Courcy
-
Oi, Eder! pelo que entendi está havendo a impressão em linha separada entre o
AAAAAA 22222222222222 e o
AAAAAA SA 22222222222222, pois o agrupamento considerou-os de forma diferente.
sua solução passa por um de dois passos a seguir:
1 - normalizar corretamente o seu banco de dados. colocando AAAAAA e AAAAAA SA como um único registro em outra tabela, de maneira que haja um relacionamento que aponte de forma correta para o que precisas e facilite a manutenção do cadastro em questão. (Esta é a maneira mais correta, pois este tipo de problema não se repetirá mais)
2 - Se seu banco de dados contém PAG_CNPJ para representar igualmente AAAAAA e AAAAAA SA, então retire o campo PAGADOR_NOME da cláusula GROUP BY, mantendo o PAG_CNPJ. O resultado será o mesmo. Se precisar de ordenação então utilize o PAGADOR_NOME na cláusula ORDER BY.
No início do select utilize o FIRST(PAGADOR_NOME) para que ele pegue o primeiro registro com o nome desejado (assim não ocasionará erro no resultado do SELECT por causa da cláusula GROUP BY.
Em suma, faça assim:
SELECT PAG_CNPJ, FIRST(PAGADOR_NOME), '+ 'SUM(VALOR_FRETE) AS VALOR_FRETE_TOTAL, '+ 'SUM(CONTADOR) AS CONTADOR_TOTAL, '+ 'SUM(KG_CALCULO) AS KG_CALCULO_TOTAL, '+ 'SUM(VALOR_N_FISCAL) AS VALOR_N_FISCAL_TOTAL '+ 'FROM CTRC ' + 'WHERE (SITUACAO_CTRC <> "C") '+ 'AND DATA_EMISSAO between :datai and :dataf '+ 'AND NOME_VENDEDOR = ' + QuotedStr(COMBOBOX1.text) + 'GROUP BY PAG_CNPJ ' + 'ORDER BY 3 DESC';
att
Denis Courcy
-
Oi, Ilano!
Dê uma lida no manual do MySQL versão 5.0.x, capítulos 17 e 12. Lá tem o que você precisa, já que a diferença de código é muito pequena.
att
Denis Courcy
-
Oi, Marcelo!
Nada impede que você vá até o usuário e instale o MySQL. Nem que o ensine a instalar. (O que localmente seria muito fácil).
O grande problema é o suporte. (Mas isso seria em qualquer base de dados). Você vai ter que ensiná-lo a corrigir tabelas, fazer backup, etc.
Já pensou em colocar o VNC na máquina do cliente e acessá-la via internet? Você poderia configurá-la e corrigi-la a distância.
Voltando a sua pergunta, se há outras bases que podem ser utilizadas? A resposta é sim. Acesss (o mais confiável, em minha opinião) Paradox (usado por uma empresa aqui do RJ chamada Nasajon), e outros menos confiáveis. Vai depender do volume armazenado e da quantidade de transações a serem efetuadas.
att
Denis Courcy
-
Caros colegas,
Estou com o seguinte problema, preciso extrair dados de duas tabelas, produtos e departamentos, ambas possuem o código do departamento, o nome do campo é dp_codigo. Então estou usando o seguinte comando:
SELECT * FROM produtos p, departamentos d
WHERE p.dp_codigo = d.dp_codigo or p.dp_codigo is null
O que acontece é que se a tabela departamentos estiver vazia não aparece o produto.
Como resolver isso ?
Muito Obrigado.
Oi, Luiz Carlos!
Quando tiver relacionamento entre duas ou mais tabelas dê preferencia ao uso da cláusula JOIN. é mais eficiente que controlar pela cláusula WHERE.
Para o seu caso o uso correto é com LEFT JOIN onde aparecerá todos os registros da tabela da esquerda e, onde não houher registros na tabela da direita os campos referentes a ela ficarão com NULL. Vamos ao código:
SELECT * FROM produtos p, LEFT JOIN departamentos d ON p.dp_codigo = d.dp_codigo
att
Denis Courcy
-
Oi, Paulo Jose!
Se entendi o que desejas, o código abaixo o satisfará.
UPDATE solicitacao_compras sc SET status_solicita = (SELECT status_autoriza FROM autoriza_compras ac WHERE ac.cod_solicit = sc.cod_solicit)
Informe sucesso ou fracasso.
att
Denis Courcy
-
Oi, Marcelo!
Receio que o que desejas não seja possível. Pois o Banco Mysql não é um "arquivinho" que possa se anexado a uma instalação qualquer. Ele requer cuidados e estrutura para que sua instalação tenha sucesso. Além de tunning conforme o cliente e o modelo a ser estruturado.
att
Denis Courcy
-
Oi, Francisco !
Verifique se a resposta que dei no post abaixo satisfaz sua necessidade
http://scriptbrasil.com.br/forum/index.php?showtopic=111392
Se não satisfizer, post novamente e avaliaremos outra solução.
att
Denis Courcy
-
Bom é o sequinte... será que alguém pode me ajudar????
Tenho um formulario que envia dois parametros:
$matricula e $ cpf
tenho duas tabelas, uma que possui a informação cpf e matricula e outra que irá receber os novos registros
queria comparar as informações adicionadas com o que já tem na tabela...
só que não consigo fazer funcionar!!!!
$consulta = mysql_query ("SELECT * FROM dados WHERE matricula = '$matricula'");
$con = mysql_query ("SELECT cpf FROM dados WHERE '$matricula' = matricula");
if ($cpf <> $con){
echo "ERRO: O CPF .'$cpf'. não corresponde ao numero da matricula informada .'$matricula'. ";
echo "Verifique se você não digitou errado";
exit;
Alguma dica???
O erro que aparece é este:
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 'Resource id #6' at line 1
Oi 'lukka' !
Você está confundindo a sintaxe do php com a sintaxe de select do MySQL.
Tente assim,
$con = mysql_query ("SELECT cpf FROM dados WHERE matricula = '".$matricula."'");
e informe sucesso ou fracasso.
att
Denis Courcy
P.S.: Não conheço o php usei o ponto como sinal de concatenação, porém se não for isso, troque polo correto.
-
Oi, 'ihc'!
Acho que você enviou a mensagem para o forum errado. Não vi nada relacionado a MySQL no seu post.
Envie este post para o forum do PHP.
att
Denis Courcy
-
-
bom dia, preciso de ajuda, eu tenho uma rotina que lê uma tabela com alguns criterios em um banco remoto, preenche num dataset e salva em um xml, só que preciso dar um load no mysql, mas dá erro, já baixei a versão 6.0 e nada, alguém já fez load xml com o mysql? se alguém puder me ajude é urgente!
Angelica
Oi, Angelica!
Que tipo de erro está ocorrendo?
O mecanismo de load é simples.
Consulte http://lists.mysql.com/internals/34169 e http://lists.mysql.com/internals/34170 que temostra como executar os comandos de load xml.
att
Denis Courcy
-
Oi, João Paulo!
Evite a qualquer custo fazer backup físico de banco de dados. No forum do MySQL comanto sempre que o melhor e mais seguro é utilizar o Mysqldump para backup. Você pode fazer o backup online e não afeta a integridade do banco.
Recentemente desenvolvi em delphi uma ferramenta que gerasse o backup usando uma chamada ao mysqldump, o que facilitou tremendamente o usuário pois o nome do arquivo de saida contem a data e a hora da geração, o que evita sobreposição de versão de backup.
Em seu caso, a rotina que criei poderia ser utilizada:
{$R *.dfm} function TfrmBackup.CreateProcessSimple(cmd: string):boolean; var SUInfo: TStartupInfo; ProcInfo: TProcessInformation; begin FillChar(SUInfo, SizeOf(SUInfo), #0); SUInfo.cb := SizeOf(SUInfo); SUInfo.dwFlags := STARTF_USESHOWWINDOW; SUInfo.wShowWindow := SW_HIDE; result := CreateProcess(nil, PChar(cmd), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, SUInfo, ProcInfo); if result then begin WaitForSingleObject(ProcInfo.hProcess, INFINITE); CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end; end; procedure TfrmBackup.btnOKClick(Sender: TObject); begin close; end; procedure TfrmBackup.ExecutarBackup; var aa,mm,dd, hh, mmm, ss, sss: word; aux : string; begin aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers --port=3306 '; aux := aux + '--user=root --result-file=backup.sql --databases sase"'; lblMensagem.Caption := 'Aguarde. Efetuando Backup'; lblMensagem.Refresh; if not createProcessSimple(aux) then lblMensagem.Caption := 'BACKUP NÃO FOI PROCESSADO!' else begin decodedate(date, aa, mm, dd); decodetime(time, hh, mmm, ss, sss); if FileExists('BACKUP.SQL') then begin aux := inttostr(aa); if mm < 10 then aux := aux + '0' + inttostr(mm) else aux := aux + inttostr(mm); if dd < 10 then aux := aux + '0'+ inttostr(dd) else aux := aux + inttostr(dd); if hh < 10 then aux := aux + '0'+ inttostr(hh) else aux := aux + inttostr(hh); if mmm < 10 then aux := aux + '0'+ inttostr(mmm) else aux := aux + inttostr(mmm); if ss < 10 then aux := aux + '0'+ inttostr(ss) else aux := aux + inttostr(ss); aux := aux + '.sql'; RenameFile('backup.sql', aux); lblMensagem.Caption := 'Backup Realizado!'; end; end; btnOK.Enabled := True; end;
divirta-se
att
Denis Courcy
-
Oi, jhony_8p!
veja a linha que você escreveu antes da declaração de criação da tabela em questão.
INSERT INTO `accounts` (`AccountID`, `Password`, `Type`, `Auth`, `Address`) VALUES ('test', '', 0, 2, NULL),
ela está terminando em VIRGULA e não em PONTO E VIRGULA.
att
Denis Courcy
P.S. Evite usar o nome CHARACTERS para nome de tabela esta é uma palavra reservada do MySQL e de repente vai dar xabu.
-
Eu fiz um sistema que usa relação entre as tabelas NOMES e SISTEMAS varios para varios
para mostra os resultados eu usei o left join que você mesmo me indicou,beleza eis a questão
quando na area que eu criei para administrador quando eu tento excluir um nome ou um sistema que já esteja
relacionado com outro ele não consegui , me ajude a resolver esse problema por favor!!!
Desde já agradeço sua atenção!
Oi, '--diegors10 --'!
Pelo que entendi você está usando innodb com auxilio de constraints para verificação e imposição de integridade referencial.
Se é assim, e você usou a cláusula ON UPDATE NO ACTION ON DELETE NO ACTION, então você deve excluir o valor da tabela de relacionamentos N para N primeiro pois ela é uma tabela filha. depois deletar o valor da tabela pai desejada.
Seu relacionamento ficou assim:
NOMES (1,N) RL_NOMES_X_SISTEMAS (N,1) SISTEMAS
(Três tabelas. a do meio é o relacionamento N para N com as outras duas) A do meio é filha e as outras duas pais.
Para evitar este vai e vem substituia as cláusulas citadas acima pelas cláusulas ON UPDATE CASCADE ON DELETE CASCADE.
Verifique e responda, por favor para que possamos analisar.
att
Denis Courcy
-
alguém sabe se tenho como passar o nome da tabela a ser pesquisada por parametro para uam procedure ?
Na verdade o que preciso é criar algo como :
select * form <nome_de_tabela_variavel>
ou algo semelhante .
Oi, CRITERIO!
Veja se última resposta que dei no tópico abaixo responde a sua pergunta.
http://scriptbrasil.com.br/forum/index.php?showtopic=108429
att
Denis Courcy
(Resolvido) OnMouseLeave
em Delphi, Kylix
Postado
Substitua o TPanel pelo TGroupBox. O TGroupBox tem o evento que você precisa.