Ir para conteúdo
Fórum Script Brasil

paulobergo

Membros
  • Total de itens

    295
  • Registro em

  • Última visita

Tudo que paulobergo postou

  1. Oi kethellen Veja só... o que o Denis pode estar tentando dizer é que você precisa ampliar os seus horizontes... muitos problemas podem ser resolvidos até se você raciocinar com uma lógica fora da programação, da informática... Veja mais: considerando esta lista de publicações: nome numero CARTÃO DE REFERENCIA MBASIC 85-216-0456-4 CARTÃO DE REFERENCIA TURBO BASIC 85-216-0567-6 WINDOWS ASSEMBLY LANGUAGE AND.. . 0-87930-474-X PADROES DE PROJETO............ .. 85-7307-610-0 CONSTRUINDO O FUTURO ATRAVES DA EDUCACAO 85-221-0331-3 Como pode ver acima, o código ISBN não tem um padrão (os códigos acima correspondem exatamente ao impresso nas respectivas publicações) Agora se você tem muitas informações erradas, já que em algum momento foi possível cadastrar códigos errados (veja a lista a seguir), o que pode ser feito? nome numero CARTÃO DE REFERENCIA MBASIC 8.521-604,56.4 CARTÃO DE REFERENCIA TURBO BASIC 85 21/605-67.6 WINDOWS ASSEMBLY LANGUAGE AND SYSTEMS 0-87, 930-474-X PADROES DE PROJETO............ .. 85-73 07-610-0 CONSTRUINDO O FUTURO ATRAVES DA EDUCACAO 8.5-2|21-03.31-3 Imagine se você não tivesse computador, não existisse SQL... o que você faria para "datilografar" a lista acima? depois disso, vamos para a informática... Medidas a serem adotadas: a) impedir que sejam cadastrados novos dados com caracteres inválidos e isso você pode fazer, por exemplo, usando javascript, php ou de outra forma, dependendo de como as tabelas são alimentadas: isto já a solução para você, que terá, então, que pesquisar, aprender como implementar e pode fazer isso procurando aqui mesmo dentre as centenas de códigos e scripts disponíveis... B) identificar os códigos que contém caracteres inválidos, ou seja, caracteres que não sejam 0-9, X e - Nisso, posso colaborar com estes exemplos; exemplo, caso o campo com o número ISBN tivesse apenas 5 caracteres - varchar(5)... entenda a lógica e desenvolva o resto... c) identificados os códigos, faça a correçao... use a solução da letra (B)... Esta query lista o nome e número das publicações com ISBN contendo caracteres inválidos. select nome, numero as numero_atual, concat(if(substring(numero, 1, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-"), substring(numero, 1, 1), "-"), if(substring(numero, 2, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-"), substring(numero, 2, 1), "-"), if(substring(numero, 3, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-"), substring(numero, 3, 1), "-"), if(substring(numero, 4, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-"), substring(numero, 4, 1), "-"), if(substring(numero, 5, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-"), substring(numero, 5, 1), "-") ) as numero_novo from `acme`.`publicacoes` where not( (substring(numero, 1, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-")) and (substring(numero, 2, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-")) and (substring(numero, 3, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-")) and (substring(numero, 4, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-")) and (substring(numero, 5, 1) in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "-")) ) Ok? então, mãos-à-obra!
  2. paulobergo

    Resultado SQL

    Bom... aí vai o que você precisa, para exibir o resultado em duas colunas por linha... Para três ou quatro, deixo por sua conta a modificação... select nome1, row1, nome2, row2 from (select nome1, row1 from (select nome1, (@row1 := @row1+1) as row1 from (select nome as nome1, (@row1 := 0) as row1 from clientes where nome between "m" and "n" limit 10 ) as consulta_a ) as parte1 where row1 mod 2 = 1 ) as ladoa left outer join (select nome2, row2 from (select nome2, (@row2 := @row2+1) as row2 from (select nome as nome2, (@row2 := 0) as row2 from clientes where nome between "m" and "n" limit 10 ) as consulta_b ) as parte2 where row2 mod 2 = 0 ) as ladob on (ladoa.row1+1=ladob.row2) O truque é construir-se queries separadas... uma para o lado impar e outra para o lado par... e juntá-las No exemplo, você aproveita e vê todo o poder do MySQL... Dentro de cada subquery, criamos uma coluna "ordinal", ou seja, que reflete a ordem da linha do resultado, sendo que na primeira mantivemos apenas as linhas impares e na segunda apenas as linhas pares... A clausula Limit deve ser tirada de ambas as queries... só a deixei para poder testar com uma quantidade pequena de registros no resultado... Finalmente, as subqueries precisam ser exatamente iguais com relação à limitação da pesquisa... não daria certo se colocasse a validação de "a" até "z" na primeira e de "m" até "z" na segunda... funcionaria mas o resultado ficaria errado... Ok? Espero ter colaborado!
  3. Oi Denis... Infelizmente, "tee" também não funciona... Veja este script: Conteúdo do arquivo cmd2my.sql: tee //users/pmsd/spool/pmsd/info; use acme; select dam_numero, data_pg, valor_pago from inscritos limit 5; \t Se executo o comando: mysql -upaulo -p(senha) -h10.3.2.1 -e "\. //users/pmsd/spool/pmsd/cmd2my.sql" a query é executada mas o arquivo-texto não é gerado(mesmo se incluir o comando tee na linha de comando do MySQL... é como se o MySQL estivesse programado para recusar salvar o resultado de qualquer query quando chamado para execução de comandos em um script... De qualquer forma, continuo tentando descobrir... Grato! abraços!
  4. Complementando... mysql> select valor_pago, valor_pago/4 as modo_1, -> valor_pago div 4 as modo_2, -> valor_pago mod 4 as modo_3 -> from inscritos limit 10; +------------+-----------+--------+--------+ | valor_pago | modo_1 | modo_2 | modo_3 | +------------+-----------+--------+--------+ | 60.00 | 15.000000 | 15 | 0.00 | | 60.00 | 15.000000 | 15 | 0.00 | | 30.00 | 7.500000 | 7 | 2.00 | | 40.00 | 10.000000 | 10 | 0.00 | | 50.00 | 12.500000 | 12 | 2.00 | | 30.00 | 7.500000 | 7 | 2.00 | | 60.00 | 15.000000 | 15 | 0.00 | | 40.00 | 10.000000 | 10 | 0.00 | | 80.00 | 20.000000 | 20 | 0.00 | | 60.00 | 15.000000 | 15 | 0.00 | +------------+-----------+--------+--------+ 10 rows in set (0.00 sec) * Você pode obter o guia do MySQL (eu uso um .chm) com todas as funções e comandos e muito mais... é só visitar http://dev.mysql.com/downloads/ Ok?
  5. Bom dia! Dentre várias, programo numa linguagem XBase (Opus) que funciona amarrada a um banco de dados chamado OpenBase. Eventualmente, passo muitas informações desse banco de dados para o MySQL (5.0.27), usando comandos executados pelo MySQL (por scripts) e esses dados são manipulados, consultados depois por aplicações web, delphi, etc. Agora, preciso, também, fazer com que o MySQL, simplesmente, grave em um arquivo texto o resultado de uma query... parecia simples, mas o comando \T não cria o arquivo texto desejado quando executado a partir de um script Há alguma coisa especial a definir para a gravação ser realizada? Exemplo que dá certo, usando o próprio prompt do MySQL: dev_pmsd> mysql -ubergo -p(xxxxx) -h10.3.2.1 mysql> use acme Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> \T //users/pmsd/spool/pmsd/info.txt Logging to file '//users/pmsd/spool/pmsd/info.txt' mysql> select dam_numero, data_pg, valor_pago from inscritos limit 5; +------------+------------+------------+ | dam_numero | data_pg | valor_pago | +------------+------------+------------+ | 270000025 | 2008-08-01 | 60.00 | | 270000033 | 2008-08-01 | 60.00 | | 270000041 | 2008-08-01 | 30.00 | | 270000050 | 2008-08-01 | 40.00 | | 270000068 | 2008-08-01 | 50.00 | +------------+------------+------------+ 5 rows in set (0.01 sec) mysql> \t Outfile disabled. mysql> exit Bye dev_pmsd => cat //users/pmsd/spool/pmsd/info.txt mysql> select dam_numero, data_pg, valor_pago from inscritos limit 5; +------------+------------+------------+ | dam_numero | data_pg | valor_pago | +------------+------------+------------+ | 270000025 | 2008-08-01 | 60.00 | | 270000033 | 2008-08-01 | 60.00 | | 270000041 | 2008-08-01 | 30.00 | | 270000050 | 2008-08-01 | 40.00 | | 270000068 | 2008-08-01 | 50.00 | +------------+------------+------------+ 5 rows in set (0.01 sec) mysql> \t dev_pmsd> E o que não funciona: Código "as-clipper" no programa: cr = chr(13) lf = chr(10) c_MySQLCatalog = 'acme' c_MySQLUsuario = 'bergo' c_MySQLSenha = '(xxxx)' c_MySQLHost = '10.3.2.1' n_has2del = 0 c_sql_file = '//users/pmsd/spool/pmsd/cmd2my.sql' c_result_file = '//users/pmsd/spool/pmsd/info.txt' if file(c_result_file) delete file c_result_file endif if file(c_result_file) @ 10, 00 say 'Não foi possível excluir '+c_result_file+'!' wait endif c_cmd_content = 'use '+c_MySQLCatalog+cr+lf+; '\T //users/pmsd/spool/pmsd/info.txt'+cr+lf+; 'select dam_numero, data_pg, valor_pago from inscritos limit 5;'+cr+lf+; '\t'+cr+lf set printer to 'cat > '+c_sql_file set print on ? c_cmd_content set print off set printer to cCmdLine = 'mysql -u'+c_MySQLUsuario+' '+; '-p'+c_MySQLSenha+' '+; '-h'+c_MySQLHost+' -e "\. '+c_sql_file+'"' run cCmdLine Quit O que acontece na prática ao executar o script é que o MySQL abre e executa o programa (o script definido na linha de comando no parâmetro -e) exceto o comando \T Alguma idéia de como fazê-lo funcionar? Grato por qualquer colaboração!!!
  6. paulobergo

    Ado ou Zeos

    Uso ODBC para acessar Oracle, Access e (PRINCIPALMENTE) o MySQL e, em alguns casos, também a Zeos, que foi a forma de acesso mais aproximada ao ODBC que encontrei para os sistemas. A mais parte dos dados está sob o MySQL em Linux e XP Em Linux, uso o Mediator para acesso ao MySQL, via ODBC, por programas em XHarbour No XP, as aplicações principais acessam as bases em MYSQL também via ODBC, por TQUERY e TDatabase e as aplicações "independentes" (não dependem de ODBC, BDE, etc...) acessam as bases pelo ZeosBDO com TZQUERY, TZConnection, etc... Ok? Espero ter contribuido!
  7. paulobergo

    Sintegra

    Não é o Sintegra quem manda... é a empresa que envia para a Receita (ou Receitas, já que pode-se enviar para vários estados) o arquivo com TODA movimentação de mercadorias e serviços (notas fiscais, cupons fiscais, conhecimentos de transporte, conta de energia elétrica)... OBRIGATORIAMENTE, em fevereiro deve-se enviar, também, o INVENTÁRIO do ano anterior... portanto, presume-se que a(s) Receita(s) Estadual(ais) consigam, assim, obter o estoque do estabelecimento... Mais informações? www.sintegra.gov.br Mais ainda? www.sef.mg.gov.br => duvidas e perguntas frequentes sobre o Sintegra. Ainda insatisfeito? www.receita.fazenda.gov.br => sped e nf-e Ok?
  8. paulobergo

    HELP sum group

    a) Primeiro, vamos simplificar... se você organizar melhor as queries, fica mais fácil... veja um exemplo... Digamos que você tem a seguinte query: select nf_numero, nf_pedido, nf_data, nf_cfop, nf_valor from `acme`.`notasfiscais` as nfs where nf_data between "2008/08/01" and "2008/08/01" and substring(nf_cfop, 1, 1) in ("5", "6", "7") order by nf_numero; nf_numero nf_pedido nf_data nf_cfop nv_valor 002040 000404 01/08/2008 5102 800 002041 000406 01/08/2008 6102 100 002042 000407 01/08/2008 5102 200 002043 000405 01/08/2008 5102 300 002044 000000 01/08/2008 5102 150 * obtenho todas as notas fiscais, com o valor total de cada uma... e ainda esta outra query: select numero, sum(quantidade*valor_unit) as soma from `acme`.`pedidos` as peds where ped_data_fat between "2008/08/01" and "2008/08/10" group by numero numero soma 000404 800 000405 300 000406 100 000407 150 * obtenho todos os pedidos faturados, com o valor total de cada um deles. B) Agora eu quero ligar o resultado da segunda query com a primeira, para checar, por exemplo, se as notas faturadas tem o mesmo valor dos pedidos ou se tem algum pedido que não foi atendido totalmente... select nf_numero, nf_pedido, nf_data, nf_cfop, nf_valor, soma as valor_pedido from (select nf_numero, nf_pedido, nf_data, nf_cfop, nf_valor, valor_pedido from `acme`.`notasfiscais` as nfs where nf_data between "2008/08/01" and "2008/08/01" and substring(nf_cfop, 1, 1) in ("5", "6", "7") order by nf_numero ) as querya left outer join (select numero, sum(quantidade*valor_unit) as soma from `acme`.`pedidos` as peds where ped_data_fat between "2008/08/01" and "2008/08/01" group by numero ) as queryb on (querya.nf_pedido=queryb.numero); nf_numero nf_pedido nf_data nf_cfop nv_valor valor_pedido 002040 000404 01/08/2008 5102 800 800 002041 000406 01/08/2008 6102 100 100 002042 000407 01/08/2008 5102 200 150 002043 000405 01/08/2008 5102 300 300 002044 000000 01/08/2008 5102 150 0 c) Note que a nota fiscal 002044 não tem pedido... ou seja, foi faturada diretamente sem que houvesse uma pré-venda... O "left outer join" fez, então, que todas as notas aparecessem, havendo ou não pedidos para elas... d) Se você quiser consultar apenas as notas fiscais cujo valor coincide com o do pedido, acrescentaria apenas where (querya.nf_valor=queryb.soma) e) E apenas as notas com valor diferente do pedido: where (not (querya.nf_valor=queryb.soma)) or (queryb.soma is null) Ok? Espero ter contribuido...
  9. Bom... já que você está começando... aprenda a usar e acessar as tabelas "paradox" somente via SQL (use os componentes TQuery)... assim, você vai ter perto de 0 (zero) problemas com indexação, travamento e corrupção... Usando SQL você já estará aprendendo o que é usado basicamente no MySQL, Oracle, MS SQL Server, Postgres, Firebird... Quanto ao que você precisa, deverá indexar o campo de forma que ele não aceite duplicatas, isto é, será uma chave única. a) Criando a tabela create table 'usuarios.db' ( idusuarios autoinc, nome char(30), nascimento date, altura numeric(4,2), ativo boolean, assinatura numeric(12,2), primary key (idusuarios) ); B) Criando o índice. Não será permitido incluir mais de uma pessoa com o mesmo nome. create unique index nome on 'usuarios.db' (nome); c) Inserindo alguns registros. insert into 'usuarios.db' (nome, nascimento, altura, ativo, assinatura) values ("JOAO", "10/22/1980", 1.69, true, 20.00); insert into 'usuarios.db' (nome, nascimento, altura, ativo, assinatura) values ("JOSE", "11/01/1988", 1.72, true, 20.00); * O comando a seguir não será executado, pois já existe outro usuário com o nome JOAO... insert into 'usuarios.db' (nome, nascimento, altura, ativo, assinatura) values ("JOAO", "01/31/1977", 1.66, true, 20.00); d) consultando os dados da tabela: select * from "usuarios.db" idusuarios nome nascimento altura ativo assinatura ---------- ---- ---------- ------ ----- ---------- 1 JOAO 22/10/1980 1,69 true 20,00 2 JOSE 31/01/1977 1,66 true 20,00 Vantagens do SQL?... bom... tirando as diferenças entre os "dialetos", tudo o que você aprender com SQL/PARADOX servirá para SQL/DBASE, SQL/FOXPRO, SQL/Firebird, MySQL, Oracle, Postgres, SQLServer, etc... sem contar a segurança nos processos de acesso - leitura/gravação - nas tabelas... Ok? Espero ter contribuído... * Em tempo... A BDE, por si só, permite o acesso às tabelas do VisualDBase 7 e IV (índices múltiplos MDX) com autoincremento, chaves únicas, etc., VisualFoxPro (índices múltiplos CDX), Paradox (citado mais acima) e dBaseIII+ (índices NDX, superlentos por sinal...)... (espero não ter esquecido de outros suportados)...
  10. Olá pessoal... E' possível incluir as opções em um campo no formulário a partir com AJAX? Explicando melhor, em uma página simples, tenho um script que retorna algumas opções de horários de ônibus, já formatadas assim: <option value="10:00">10:00</option> <option value="15:00">15:00</option> <option value="21:00">21:00</option> e preciso inserir isto em um campo dentro de um formulário. O código a seguir ilustra isto: <html> <head> <meta HTTP-EQUIV="Pragma" CONTENT="no-cache"> <script> var request = false; try {request = new XMLHttpRequest();} catch (trymicrosoft){ try {request = new ActiveXObject("Msxml2.XMLHTTP");} catch (othermicrosoft) { try {request = new ActiveXObject("Microsoft.XMLHTTP");} catch (failed) {request = false;} } } if (!request) alert("Error initializing XMLHttpRequest!"); function getCustomerInfo() {var url = "Uf.php"; url = "pegaopcoes.php"; request.open("GET", url, true); request.onreadystatechange = updatePage; request.send(null); } // end function getCustomerInfo() function updatePage() {if (request.readyState == 4) {if (request.status == 200) {var conteudo = ""; // alert(conteudo); var response = request.responseText.split("|"); for (i=0; i < response.length; i++) {conteudo += response[i]; // + "\n"; } // end for (i=0... // // document.getElementById("xinserthere").value = conteudo; // a variável conteúdo passa corretamente para o campo texto // com o comando abaixo... document.getElementById("texto").value = conteudo; // a seguir, precisaria de uma forma de colocar também os dados // da variável conteudo no lugar em que fica a tab <#xinseriraqui> // ou, por outro jeito, preencher as opções... document.getElementByTag("xinseriraqui").value = conteudo; } else alert("status is " + request.status); } // end if (request.status == 200) } // end if (request.readstate == 4) </script> </head> <form method="POST" action="scripts/abrir.exe"> <input type="button" value="Clique para povoar... " size="14" name="botao" onClick="getCustomerInfo();" /> <select size="1" name="opcoes"> <#xinserthere> </select> <input type="text" size="20"> <textarea id="texto" cols=20 rows=10> </textarea> </p> <input type="submit" value="Confirmar" name="confirmabutton"> </form> </html> Grato por qualquer ajuda! * Em tempo... perdão pela formatação... é que primeiro fiz uma função em Delphi para testar o projeto e aproveitei o fonte para passar para a Web...
  11. Olá pessoal... Estou vivendo o seguinte "embaraço": No Delphi 6, no trabalho, todos os componentes (opcionais, com TEF, KEdit, DSPack, Halcyon, Comport, KZip e outros) estão disponíveis na pallete independente do usuário que faz o login no XP. Em casa, durante muito tempo, compartilhava o mesmo desktop que a minhas duas filhas... até que não deu mais para suportar tanta desorganização e acabei criando uma outra conta de usuário... Só que, ao fazer o login com a nova conta, o Delphi não traz todos os componentes... Alguém saberia aí o motivo e uma solução para isso? Grato e abraços!
  12. Oi pessoal... toda aquela query é para criar um campo "ordinal"? isto é, um número sequencial que representa a posição do registro no resultado? Olha só o jeito mais simples de se colocar em uma query, aliás, qualquer query, devidamente ordenada, um número ordinal: select if((@row is null), @row:=1, @row := @row+1 ) as Ordinal, nome, municipio, uf from clientes order by nome; Resultado: +---------+---------+-------------------+----+ | Ordinal | nome | municipio | uf | +---------+---------+-------------------+----+ | 1 | EDUARDO | PARAOPEBA | MG | | 2 | JOAO | MATIAS BARBOSA | MG | | 3 | MARIA | BELO HORIZONTE | MG | | 4 | PEDRO | DUQUE DE CAXIAS | RJ | | 5 | ROBERTA | VITORIA | ES | | 6 | ZILDA | JUAZEIRO DO NORTE | CE | +---------+---------+-------------------+----+ O truque na expressão "if((@row is null), @row:=1, @row := @row+1 )" não deixa dúvidas quanto à capacidade do MySQL resolver questões complexas de forma bem simples não é? Assim, ao "montar" a primeira linha do resultado, quando ela ainda é nula, atribuímos 1 à coluna, digamos, "virtual"... depois, o próprio MySQL se encarrega de incrementá-la... E não importa o argumento do order by... veja que foi feita uma ordenação alfabética, mas poderia ter sido uma ordenação numérica e até decrescente (uma lista de produtos mais vendidos começando pelos que vendem mais em valor, ou "curva abc")... Ok?
  13. paulobergo

    se existe database

    Amigo... impossível entender... Tenta explicar de novo...
  14. paulobergo

    CREATE TABLE

    Bom saber do seu interesse pelo MySQL... mas que tal ler pelo menos um pouco do básico? CREATE TABLE `acme`.`usuario` ( `idusuario` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, `nome` VARCHAR(45) NOT NULL, `login` VARCHAR(12) NOT NULL, `senha` VARCHAR(12) NOT NULL, PRIMARY KEY (`idusuario`) ) ENGINE = InnoDB; Aí uma sintaxe correta, pelo menos na versão 5.0.27 do MySQL... Ok?
  15. Quase por aí... Faz de conta que tem a tabela "socios" com o campo "data_nasc" criado erradamente como varchar(10) e um campo novo "datanasc" criado corretamente como date... Todos os registros já tem o campo "data_nasc" preenchidos... no formato DD/MM/AAAA e agora precisa passar o conteúdo desse campo para o correto, "datanasc"... Então, se temos: nome, data_nasc, datanasc maria, "21/03/1985", null joao, "01/04/1988", null eliseu, "31/01/1980", null e fizermos um select primeiro: mysql> select nome, data_nasc, convert(data_nasc, date) as novoconteudo -> from socios; +--------+------------+--------------+ | nome | data_nasc | novoconteudo | +--------+------------+--------------+ | maria | 21/03/1985 | NULL | | joao | 01/04/1988 | NULL | | jose | 31/01/1980 | NULL | +--------+------------+--------------+ 3 rows in set, 3 warnings (0.00 sec) assim, fazer o comando update socios set datanasc=convert(data_nasc, date); irá resultar em erro... mysql> update socios set datanasc=convert(data_nasc, date); ERROR 1292 (22007): Truncated incorrect datetime value: '21/03/1985' porque você precisa colocar a data atual do campo varchar no formato data como dd/mm/aaaa e não AAAA/MM/DD da função convert... Isso dá certo: mysql> update socios set datanasc=str_to_date(data_nasc, '%d/%m/%Y'); Query OK, 3 rows affected (1.08 sec) Rows matched: 3 Changed: 3 Warnings: 0 Então, você pode verificar: mysql> select nome, data_nasc, datanasc -> from socios; +--------+------------+------------+ | nome | data_nasc | datanasc | +--------+------------+------------+ | maria | 21/03/1985 | 1985-03-21 | | joao | 01/04/1988 | 1988-04-01 | | jose | 31/01/1980 | 1980-01-31 | +--------+------------+------------+ 3 rows in set (0.00 sec) Agora, ainda antes de processar, você precisa verificar se não tem data errada, incompleta, etc... do tipo "31/02/1980", "29/02/1971", "31/111/985" ... Ok?
  16. Colegas... Para exibir os resultados das consultas feitas ao servidor MySQL, uso uma aplicação cgi ou isapi, principalmente sob o IIS (em alguns casos, Apache)... Ocorre que, às vezes, o usuário abre uma consulta que gera um resultado enorme... por exemplo, exibir todos os produtos do estoque, de A a Z, de uma tabela com 12mil registros... Então, dependendo da máquina, o IEx, FF (e também essa figurinha Chromocomatica...) esgotam a memória e não conseguem exibir os dados, dando um erro de falta de memória... Aí a pergunta... alguém já conseguiu dimensionar, de alguma forma, se um resultado poderá ser exibido ou não? algo como... qual a memória necessária para exibir os dados de uma query com X registros com Y caracteres cada? Assim, após executar a query, poderia, de alguma forma, verificar, antes de retornar o resultado para o browser, se os dados poderão ou não ser exibidos e se o usuário precisa "refinar" sua pesquisa... Ok? Grato!
  17. uai... o Nicholas está coberto de razão... Olha só se ajuda... tabela clientes codigo nome telefone bloqueado tabela promissorias codigo_cliente promissoria_numero promissoria_valor Obviamente, cada promissoria tem o codigo_cliente vinculado a um registro de cliente pelo codigo dele... exemplo: cliente 003928 Juan Palacio Tesvez 3240-2020 N tem as promissorias 004892A 10,80 039899C 22,60 então select clientes.*, promissorias.* from clientes inner join promissorias on (clientes.codigo=promissorias.codigo_cliente) where clientes.bloqueado="N"; * o inner join liga cada promissoria a seu respectivo cliente * o where limit a consulta para que só apareçam os clientes que não estejam bloqueados. e se eu quero incluir também os clientes que não tenham promissórias???? aí sim uso o left outer... select clientes.*, promissorias.* from clientes left outer join promissorias on (clientes.codigo=promissorias.codigo_cliente) where clientes.bloqueado="N"; isso aí diz ao MySQL que quero todos os clientes (a tabela da esquerda), que tenham ou não registros na tabela promissorias (a da direita)... e, claro, limitando a consulta somente aos bloqueados... e se eu quero uma consulta mais rápida? aí, posso usar subqueries... select oscliqquero.*, promissorias.* from (select clientes.* from clientes where bloqueado="N" ) as oscliqquero left outer join promissorias on (oscliqquero.codigo=promissorias.codigo_cliente); isso fez com que o Mysql primeiro criasse uma consulta (oscliqquero) só com os clientes "não-bloqueados" e, aí sim, ligasse a essa consulta à de promissórias, independente de existir ou não promissória para esses clientes... Ok?
  18. Ê trein compricado né| Bom... já passei e as vezes torno a passar por isso... Então... para relembrar, olha o que eu acabei de fazer, em um computador que tem o IIS: XPsp3, IIS 5.???, com varias webs "frontpage" sob a pasta inetpub\wwwroot, acessiveis via browser para navegação (iex, ff e até esse brinquedin novo do "seu creisson" chamado cromi...) Depois que instalei o ftp no iis, reiniciei o computador... Pelo administrador do IIS: - propriedades do Site FTP padrão - guia Contas de Segurança - desmarquei o Permitir Conexões Anônimas. Com isso, só é possível acessar via ftp, para edição, quem tem conta de usuário no próprio computador (neste caso, a máquina está num grupo e não num domínio... se estivesse em um domínio, seria pelos usuários registrados no domínio)... - depois, criei um diretorio virtual ftp para um site já registrado no iis... supondo que eu já tinha o site "acme" na pasta c:\inetpub\wwwroot\acme, criei o site ftp com o mesmo nome... o alias, então, ficou sendo "acme" também... já o caminho, em troca de ser c:\inetpub\ftproot\acme, ficou sendo o que já existe: c:\inetpub\wwwroot\acme. - em seguida, ativei a gravação o pronto... site ftp criado... Então, é possível abrir o site tanto pelo Frontpage (via http+extensões do Frontpage) com via FTP (eu prefiro também o Frontpage mas também uso o próprio iex ou ff como cliente ftp, mas os colegas aqui gostam de um monte de outros programas, sendo o filezilla o preferido...) Espero ter ajudado... se não funcionar alguma coisa ainda, volta a postar, ok? Abraços...
  19. Olá... Hospedo alguma coisa no Tripod, gratuitamente, em troca de banner de propaganda... Dê uma olhada... http://members.tripod.com.br/pcol/index.htm ... o tripod está em vários países e é mantido on-line e sem surpresas há pelo menos uns dez anos... Se você quiser simplificar a url, pode usar um redirecionamento... Outra coisa que você pode fazer é hospedar, você mesmo, o seu servidor... dependendo da quantidade de acessos e de disponibilidade do seu servidor, isso também pode ser feito... tenho conhecimento de pessoas que publicam sites com as extensões do Frontpage desde o PWS com o Windows98 e o IIS no 2000Server, 2003 e XPsp2+ Neste caso, você não fica dependendo de provedor... Espero ter ajudado! Abraços Em tempo... Para tirar o CPF, Cadastro de Pessoa Física, você deve ir a uma das agências da Caixa Econômica Federal, Banco do Brasil ou dos Correios. Será cobrada uma taxa e o documento será emitido em até 40 dias. É necessário levar os seguintes documentos: · Carteira de identidade (RG); · Título de eleitor (quem tem menos de 18 anos e mais de 70 anos não precisa apresentar o título); Fique legal, Ok?
  20. Boa tarde! Na firma que trabalho, vivemos a situação a seguir: Nossa conexão de Internet é via rádio, do tipo "condomínio", isto é, um só IP compartilhado por vários (aliás, poucos) usuários. Por algum "lapso" do provedor, na época em que contratamos o serviço, eles direcionaram uma porta do roteador deles para o ip do nosso servidor, SEM cobrar (ou "extorquir") alguma coisa por isso... com essa porta direcionada, nós tivemos, então, condição de colocar o serviço de home page ativo... No entanto, é só uma porta... e não dá, por exemplo, para ter acesso ao nosso computador usando o VNC, a não ser tirando a porta do serviço "html" e colocando essa porta no VNC..., ou ao MySQL (porta 3306)... O computador que fica conectado ao roteador tem o WindowsXP sp2 instalado e ele direciona todas as requisiçoes na porta liberada para a máquina que tem o Apache do nosso Linux (Kurumin 7), ou seja o XP direciona as chamadas da porta 8181 para a 81 do Apache no Kurumin. Arrisquei pedir a liberação de mais três portas (duas para o VNC e mais uma para o MySQL) mas o provedor veio com um blá-blá-blá de que o serviço seria acrescido de mais R$ 30,00 por porta, por mês... rídiculo, já que a banda larga, 1mega, da Telemig é R$ 70,00... Então gostaria de saber se, colocando a máquina com o Linux conectado ao provedor, ele teria condições de "distribuir" as requisições feitas em uma única porta para o serviço adequado, coisa que o XP não é capaz (e talvez não seja possível mesmo) ... Grato por qualquer idéia ou ajuda! Abraços!
  21. Ótimo exemplo... Mas... como criar essa função, digamos, "global"... Criei uma função genérica, para converter o mês "inteiro" para seu respectivo nome... no entanto, ao tentar criá-la, me retorna o erro 1046 No database selected... Os passos foram: a) Abrir o MySQL Command Line Client; B) Excluir a função (caso existisse): drop function if exists mesptbr1; * ERROR 1046 (3D000): No database selected c) Trocar o ; por ! (delimitador), pois há ";" no código em C: delimiter ! d) Criar a função: create function mesptbr1 (mesnr integer) returns char(9) charset latin1 begin declare mes char(9); set mes = ""; if mesnr = 1 then set mes = "Janeiro"; elseif mesnr = 2 then set mes = "Fevereiro"; elseif mesnr = 3 then set mes = "Março"; elseif mesnr = 4 then set mes = "Abril"; elseif mesnr = 5 then set mes = "Maio"; elseif mesnr = 6 then set mes = "Junho"; elseif mesnr = 7 then set mes = "Julho"; elseif mesnr = 8 then set mes = "Agosto"; elseif mesnr = 9 then set mes = "Setembro"; elseif mesnr = 10 then set mes = "Outubro"; elseif mesnr = 11 then set mes = "Novembro"; elseif mesnr = 12 then set mes = "Dezembro"; else set mes=""; end if; return mes; end! * ERROR 1046 (3D000): No database selected e) Recuperar o delimitador ; delimiter ; Bom... então, para criar uma função "global", a ser aceita por em qualquer "alias", qual o database a selecionar? Abraços!
  22. ôooo... essa eu não tive tempo de descobrir até hoje e por isso uso isso aí, que "quebra o galho" há um bom tempo: select personagem, concat("nascido a ", day(nasc), " de ", if(Month(nasc)=1,"janeiro", if(Month(nasc)=2,"fevereiro", if(Month(nasc)=3,"março", if(Month(nasc)=4,"abril", if(Month(nasc)=5,"maio", if(Month(nasc)=6,"junho", if(Month(nasc)=7,"julho", if(Month(nasc)=8,"agosto", if(Month(nasc)=9,"setembro", if(Month(nasc)=10,"outubro", if(Month(nasc)=11,"novembro","dezembro"))))))))))), " de ", Year(nasc)) criadoem from `acme`.`personagens` where nasc between "1951/01/01" and "1959/12/31"; personagem, criadoem pernalonga, nascido a 26 de janeiro de 1955 papaleguas, nascido a 14 de outubro de 1958 coiote, nascido a 14 de outubro de 1958 Só não sei se funciona em todas as versões... mas pelo menos nos my4 e my5, com certeza! Ok?
  23. Oi pessoal... Bom... ontem à noite, quebrando a cabeça, identifiquei em outras quatro placas PCChips e duas ASUS que, simplesmente, os 3v da bateria são levados ao pino 3 do jumper ClearCMOS... Então, a solução paliativa, foi soldar uma ponte (um fio) por baixo da mb, conectando os 3v da bateria ao pino3... pronto! CMOS alimentada e sem problemas!!! Agora, quanto a solução correta... Segui a trilha da bateria, novamente comparando com as outras mb... o que elas tem em comum é um componente (zinho) que parece um minitransistor (que passo a chamar MiniT)... na placa com problema o primeiro MiniT não deixa "passar" os 3v... pode estar, então, queimado... Este MiniT tem a inscrição 352AA e não consegui encontrar nenhum igual em outras placas... Observei também que placas mais antigas têm dois diodos ao invés desses MiniTs Bom... se alguém souber com (ou saber de alguém) criar um circuito paralelo que substitua o componente e puder dar uma ajudazinha, fico grato!!! Abraços!
  24. Olá... Bom... o que falta mesmo é um detalhamento seu... Por exemplo: a) Qual é o retorno dessa função MinhaFuncao() , isto é, ela retorna o resultado de uma query, ou seja, uma lista de registros contendo colunas? B) Se MinhaFuncao() é um "conjunto" de queries, isto pode ser resolvido, realmente, usando-se subqueries, mas se você não especifica (com exemplos) essa função (talvez por não querer compartilhar com ninguém o seu conteúdo), pode colocar, digamos, "exemplos fictícios"... isso ajudaria bastante... c) Descrever o que precisa (o resultado) e os dados disponíveis, na forma como sugeri antes... Assim, talvez pudesse ajudar... Ok?
  25. Oi pessoal... Uma vez mandei um curriculum para a Gol e o endereço ficou lá... não adiantou apagar históricos, instalar programinhas que garantiam que apagavam o histórico; nada excluía, nada... não era uma questão do Internet Explorer e sim de um recurso que começou (acho) no Windows 98, como uma forma de acelerar a pesquisa por sites, endereços e também pastas e arquivos mais digitados... Isso significa: - eu clicava em iniciar; executar, e só digitava "go" e lá vinha um link com www.gol... e o meu nome... - abria meu computador e digitava "pa" na barra de endereços e de novo lá estava o link... e teve até uma pessoa (muito curiosa) que acabou abrindo este link mesmo... foi bem engraçado... Mas... vamos à solução! O jeito que descobri foi excluir determinados arquivos; não lembro precisamente o caminho, mas algo assim: c:\documents and settings\(nome)\configurações locais\historico\history.ie5 Só consegui excluir os arquivos iniciando o XP em modo de segurança... depois, selecionei a pasta como a indicada acima; aí aparecem uma pastas "mshist" com datas, como "mshist012005121320051214", etc... mais um arquivo "desktop.ini" mais um arquivo "index.dat" (esse é que era o "maledeto"; editando, com o notepad, esse arquivo, identifiquei os links indesejáveis)... Bom... apaguei tudo e aí sim resolveu... Ok? Se der certo, não esquece de marcar como "resolvido"!
×
×
  • Criar Novo...