Ir para conteúdo
Fórum Script Brasil

paulobergo

Membros
  • Total de itens

    295
  • Registro em

  • Última visita

Tudo que paulobergo postou

  1. Oi pessoal... Desculpem pela pressa, mas é que realmente não deu para pesquisar mais detalhes em outros lugares ainda... O fato é que a máquina que tem a MB M810LR-H precisou ser desligada na última sexta e depois disso ela mostra essa mensagem CMOS Battery Low CMOS Memory Size Wrong ao iniciar. Então, a gente acerta tudo na BIOS e ela fica ok DESDE que o micro não seja desligado da tomada (isto é, do nobreak)... Já detectamos que não é a bateria e nem a fonte (ATX)... A máquina ficou ligada direto desde mais ou menos março do ano passado, quando a firma mudou para o endereço atual... antes, ela já tinha ficado ligada direto creio que por uns três anos... Agora, essa máquina (que tem o Linux/Kurumin7 instalado) ia passar a hibernar (íamos tentar isso) igual a outras duas com XP que já funcionam assim (hibernam depois de ~~ 4horas paradas, lá pelas 22h, e religam sozinhas às 6:30)... Com um multímetro, verifiquei que os 3v da bateria não chegam a lugar nenhum na mb (isto é, a chip nenhum)... então... teria como fazer algum tipo de "ponte" da bateria para a cmos (também preciso saber quem é que é a CMOS)... Qualquer dica, ajuda muito... Grato e um abraço!
  2. Oi denis... gostaria de ajudar, mas confesso que não entendi nada... "o id logado"... "passagem do cookie de 0..." Acho que estou precisando de uma penseira! Mas vamos lá... pode explicar melhor? Exemplo: Momento a) temos uma tabela com todos os ids de usuarios; Momento B) o usuario abre uma pagina; faz-se um update no registro dele, gravando data, hora, a página acessada, e o cookie gravado no computador dele Momento c) o usuario sai do IEx (ou Firefox, Netscape, etc), e seu status passa a ser zero na tabela... O que você precisa? Uma suposição: Você tem uma aplicação rodando num "loop infinito" que, sempre que descobre que um usuário abriu uma página, registra os dados na tabela... Outra: Você tem uma aplicação que é "disparada" no momento que um usuário abre uma página e precisa, então, abrir uma consulta mostrando quem abriu páginas, a que horas, que data, seu id, etc.. etc.. etc... Seria por aí?
  3. paulobergo

    Csv Para Mysql Via Script

    Cola aí algumas linhas do cidades.csv para podermos analisar... Meio que advinhando, a primeira informação em cada linha deverá ser zero... mas seria bom ver o que você está tentando importar... Ok?
  4. Olá.... Você pode dar um exemplo do que precisa? assim: preciso listar os cinco maiores pagamentos feitos aos fornecedores no dia tal... E um exemplo do que tem? assim: datapg, valor, vendedor 14/02/2007 80,00 acme 18/02/2007 120,00 loney tunes 13/03/2007 52,45 wbros 17/04/2007 1,99 cartoonnetwork 29/01/2007 99,88 disney 18/01/2007 100,00 acme 16/04/2007 120,00 fritzlang 07/06/2007 1,99 loney tunes E um exemplo do resultado esperado?
  5. Ah... claro... falta colocar o "group by"... "GROUP BY is required when both aggregate and non-aggregate fields are used in result set" Traduzindo, GROUP BY é requerido (portanto, obrigatório) quando tanto os campos agregados e os não-agregados são usados no resultado da query. Se você tivesse usado o BabelFish no cade, para traduzir, teria obtido isso: "O GRUPO é requerido PERTO quando os campos do agregado e do non-agregado são usados no resultado set" Então: select MAX(Cod) MAXCod,Nome FROM tb_teste group by nome retornaria algo como: maxcod, nome 00003, dumbledore 00983, harry 00889, hermione 01449, rony 00093, snape (observe que o "group by" já "ordena" o resultado...) Já select MAX(Cod) MAXCod FROM tb_teste retornaria apenas: maxcod 01449 Ok?
  6. Oi Kandrake. Ao tentar responder sua mensagem, recebi isto: "Não conseguimos localizar nenhum membro que correspondesse ao que você digitou, por favor verifique o valor digitado antes de enviar novamente" Qual o motivo?
  7. Ah.... agora está quase... você esta tentando mostrar o resultado da query antes de ela existir... então: qr_pesquisa.Active := false; qr_pesquisa.SQL.Clear; dbgrid1.DataSource := ds_pesquisa; qr_pesquisa.SQL.Add ('select MAX(Cod) MAXCod,Nome FROM tb_teste'); qr_pesquisa.Active := true; // Antes do ShowMessage!!! ShowMessage('Código do Cliente: ' + qr_pesquisa.FieldByName('MAXCod').AsString + ' / Nome do Cliente: ' + qr_pesquisa.FieldByName('Nome').AsString); Agora, aconselho melhorar seu código... nunca é tarde para começar a organizar seu trabalho... veja um exemplo: With qr_pesquisa do Begin Close; // Aqui, estva o .Active dbgrid1.DataSource := ds_pesquisa; SQL.Clear; SQL.Add('select max(cod) maxcod, nome'); SQL.Add('from tb_teste'); Try Open; // Aqui estava sem .Active := True; ShowMessage( 'Consulta Ok! Dados do Cliente:'+chr(13)+ 'Código: '+FieldByName('maxcod').AsString+chr(13)+ 'Nome: '+FieldByName('nome').AsString ); Close; Except ShowMessage('Hmm.... algo errado...'); End; End;{With qr_pesquisa} Ok? Abraços! (e se der certo, não esquece de marcar como resolvido)... (e não se acanhe... pode se inscrever no forum que será bem-vindo!)
  8. Observe.. esta query select MAX(Cod),Nome FROM tb_teste cria um resultado em que os campos terão os seguintes nomes: MAX(Cod) e Nome Daí... FieldByname('Cod').AsString gera erro... Agora, alterando o código da sua query select MAX(Cod), Nome FROM tb_teste ---------- \ / \ / \ / \/ --------------- select MAX(Cod) MAXCod, Nome FROM tb_teste Faz com que exista uma coluna (ou um campo) chamado MAXCod, cujo conteúdo nada mais é do que o resultado da função MAX(Cod)... Aí o ShowMessage seguinte: ShowMessage('Código do Cliente: ' + qr_pesquisa.FieldByName('MAXCod').AsString + ' / Nome do Cl... funciona perfeitamente... Eu aproveitei e disse também para você experimentar usar o SQL Explorer... Assim, poderá descobrir muita coisa possível de se fazer... Por exemplo, você pode digitar esta query, baseada na sua tabela: select 1*1 nada, "nome"+"sobrenome" nomecompletodapessoa from tb_teste Ver que ela retorna várias linhas com o número 1, em um campo chamado nada, e o texto nomesobrenome em um campo nomecompletodapessoa, ilustrando como se pode dar nomes às colunas geradas nas consultas SQL.
  9. Bom... creio que você possa usar o SQL Explorer que acompanha o Delphi, certo? Então, se você executar esta query lá no SQL Explorer (ou até no SQL Builder de um TQuery), verá que select MAX(Cod),Nome FROM `acme`.`personagens` retorna as colunas com estes nomes: MAX(Cod) Nome e não Cod e Nome... isto porque na tabela, realmente, existe uma columa (um campo) com o nome Cod mas isso não ocorre na "tabela" gerada pelo resultado da query... então, é só você usar: select max(cod) maxcod, nome from `acme`.`personagens` para obter, agora na coluna chamada "maxcod" (isso, para não confundi-la com a coluna "cod" original), o resultado que você espera... Ok? Então, importantíssimo: a) os campos apresentados por uma query NUNCA são os campos da tabela original, e, sim, apenas uma "visualização" desse conteúdo... B) os campos derivados de outros campos (como o max(cod) por exemplo) devem ser nomeados de forma a identificar o seu conteúdo exato para não confundir com o conteúdo original da tabela... então, isso: select max(cod) cod, ... está muito errado... Ok? Espero ter ajudado! (e se der certo, não esquece de marcar como resolvido)...
  10. Olá pessoal! Olha, como estou sem tempo para criar os seus dados em algum bd, peguei parte da query que uso para fazer um fluxo de caixa (cruzamento do contas a receber com o contas a pagar). A idéia é: como listar, na mesma query, o que eu tenho a receber em um período, relacionado com o que eu tenho a pagar no mesmo período... sendo que há datas com valores coincidentes nas tabelas e há datas que não coincidem... então, o jeito é usar subqueries, com o "union" em troca do join... a) Query que totaliza os valores do contas a receber: select sum(prvalo) rec_valor, 0 as pag_valor, prdata dataref from `acme`.`a_receber` where prdata between "2007/05/01" and "2007/05/30" group by dataref Isso retorna rec_valor pag_valor dataref 132,00 0,00 01/05/2007 40,00 0,00 07/05/2007 81,40 0,00 08/05/2007 42,30 0,00 23/05/2007 B) Query que totaliza os valores do contas a pagar: select 0 as rec_valor, sum(prvalo) pag_valor, prdata dataref from `acme`.`a_pagar` where prdata between "2007/05/01" and "2007/05/30" group by dataref Isso retorna rec_valor pag_valor dataref 0,00 170,00 01/05/2007 0,00 1618,59 02/05/2007 0,00 550,00 08/05/2007 0,00 1164,01 11/05/2007 0,00 34,39 18/05/2007 0,00 1164,68 23/05/2007 c) juntando as duas, temos: select sum(prvalo) rec_valor, 0 as pag_valor, prdata dataref from `acme`.`a_receber` where prdata between "2007/05/01" and "2007/05/30" group by dataref union select 0 as rec_valor, sum(prvalo) pag_valor, prdata dataref from `acme`.`a_pagar` where prdata between "2007/05/01" and "2007/05/30" group by dataref Isso retorna rec_valor pag_valor dataref 132,00 0,00 01/05/2007 40,00 0,00 07/05/2007 81,40 0,00 08/05/2007 42,30 0,00 23/05/2007 0,00 170,00 01/05/2007 0,00 1618,59 02/05/2007 0,00 550,00 08/05/2007 0,00 1164,01 11/05/2007 0,00 34,39 18/05/2007 0,00 1164,68 23/05/2007 d) Agora, o toque final... vamos agrupar o resultado anterior pela coluna "dataref": select sum(rec_valor) rec_valor, sum(pag_valor) pag_valor, dataref from ( select sum(prvalo) rec_valor, 0 as pag_valor, prdata dataref from `acme`.`a_receber` where prdata between "2007/05/01" and "2007/05/30" group by dataref union select 0 as rec_valor, sum(prvalo) pag_valor, prdata dataref from `acme`.`a_pagar` where prdata between "2007/05/01" and "2007/05/30" group by dataref ) as subquery group by dataref Isso retonará o que precisamos: rec_valor pag_valor dataref 132,00 170,00 01/05/2007 0,00 1618,59 02/05/2007 40,00 0,00 07/05/2007 81,40 550,00 08/05/2007 0,00 1164,01 11/05/2007 0,00 34,39 18/05/2007 42,30 1164,68 23/05/2007 Bom... isso tudo funciona no MySQL5... no SQL que acompanha a BDE da Borland (SQL92...) também, sendo que as subqueries precisam ser gravadas separadamente em arquivos texto previamente... nos demais "dialetos", não sei te dizer... mas creio que deva funcionar também... Ok? (e se der certo, não deixa de marcar como resolvido, ok?)
  11. é... não custa tentar... Já tentei todo tipo de opção... mas nada até agora funcionou... ou seja, só consigo usar o frontpage estando na máquina (pelo vnc ou area de trabalho remota)... Abraços!
  12. Olá pessoal... Olha... quase todos os sites nos quais acesso consultas em bancos de dados são criados e mantidos pelo Frontpage no IIS do XP instalado em uma partição FAT32... Assim, não tenho problema para criar, alterar, etc... tudo no site, esteja eu na rede local, pela Internet (discada, ou Velox ou rádio, ou modem roteado, etc...)... Agora, acabei de colocar um site também de consultas (uso o MySQL com cgi's e isapi's feitos no Delphi6) em um cliente que, por azar meu, tem a unidade C: (onde está o XP) NTFS... aí, não consigo abrir o site (via internet) pelo Frontpage da minha máquina, já que nenhuma das senhas que coloco (tentei de tudo no XP, no Frontpage e no gerenciador do IIS) dá certo... Então, o jeito é acessar a máquina pelo VNC e ficar usando o desktop do pessoal... Alguém poderia dar uma dica, um passo-a-passo, de como resolver isso? Quais contas criar no Windows? Quais as permissões a serem definidas no site lá nas propriedades da web no Gerenciador do IIS? Quais as opções a serem definidas em Segurança lá nas propriedas da web no Frontpage? Observação: Qualquer um terá acesso a navegar no site, ou seja, não precisa ser usuário, ter conta, etc... bastará digitar http://p4:777/acme para navegar pela web... (observação: p4=nome do computador, 777:porta designada no IIS) Qualquer um poderia ter acesso também a editar a web... como a única parte "protegida" é a parte de consultas que só funciona com senhas específicas e direitos específicos do MySQL, não teria problema em qualquer um acessar a web... Grato por qualquer ajuda!!! Abraços!
  13. Olá Robinhocne! Quanto ao início do tópico, o que parecia ser mesmo o problema é a falta de entendimento da relação de uma query com o formulário (a página) do QuickReport, ou seja, o problema das tags na página que não acompanham o "movimento" do dataset... Como parece que houve uma "mudança de rumo", coloque algumas linhas com dados das suas tabelas... E parece que o que você precisa é, simplesmente, "uma lista dos horários programados, bloqueados ou disponíveis para aulas em uma autoescola, em um determinado dia, e que esta lista contenha o nome do aluno e do instrutor programado para um dado horário ou uma marcação indicando que o horário está livre ou, ainda, uma marcação para um horário que esteja bloqueado"... seria isso? a) Voce precisa de uma tabela com a programação diaria... ela deve conter, por exemplo: Tabela: programacao data hora aluno instrutor veiculo Se planeja criar quadros com a programação (no estilo de tabelas do Word ou Planilhas do Excel), é importantíssimo que, a cada data gravada, sejam preenchidos todos os horários... Então, se vou incluir a aula de um aluno no dia 22 de setembro próximo às 10:00, devo preencher os demais horários também, mesmo que os demais campos fiquem com o conteúdo nulo. B) Demais tabelas com seus dados: Tabela: alunos codigo, nome, status, etc... 000001, harry 000002, hermione 000003, rony 000004, draco instrutor codigo, nome 000008, dumbledore 000009, sprout 000010, snape categoria codigo, nome 000010, vassoura 000202, po de flu 001938, lareira 000849, chave de portal c) Programação preenchida em duas datas: idprogramacao, data, hora, aluno, instrutor, veiculo 0,2007/09/12,07:00:00,000001, 000008, 000010 0,2007/09/12,08:00:00,null,null,null 0,2007/09/12,09:00:00,null,null,null 0,2007/09/12,10:00:00,000003, 000010, 000010 0,2007/09/12,11:00:00,000002, 000009, 001938 0,2007/09/12,12:00:00,000004, 000008, 000849 [code] d) O resultado que você precisa se parece com isso? +----------+----------+----------+ | Hora |12/09/2007|13/09/2007| +----------+----------+----------+ |07:00:00 |harry | | |dumbledore| | |vassoura | +----------+----------+ |08:00:00 | | | | | | | | +----------+----------+ |09:00:00 | | | | | | | | +----------+----------+ |10:00:00 |rony | | |snape | | |vassoura | +----------+----------+ |11:00.. | Olá Micheus... Bom... todo o poder e glória para o sql... Não há perda de desempenho como se possa suspeitar numa query cheia de subqueries como aquela... pelo contrário... há muito ganho de performance... A query usada para totalizar e mostrar as vendas na semana usa tabelas com muitos registros e é mais complexa do que no exemplo... para você ter uma idéia, essa query, executada pelo MySQL5 em um PentiumIII 700 com 256mb, sob o XP, retornando o resultado em uma página do IEx (a aplicação com a query é executada pelo IIS), e a tabela tendo uns 400mil registros (dados desde 1996), retorna o resultado em dez segundos... Antigamente, quando o mesmo procedimento era feito pelo Clipper, e, depois, no Delphi, com o programa tendo o trabalho de "filtrar" os dados, e com um banco de dados ainda menor, o tempo era muito maior e o processador ficava muito mais ocupado... Se o que o colega robinhocne precisa é um "quadro de horários", ainda prefiro gerar tudo no sql (neste caso, criaria uma tabela temporária para "armazenar" o resultado de cada linha que vai ser manipulada no QuickReport)... Ok? Abraços!
  14. Esta query select total, data, if(weekday(data)=0,'dom', if(weekday(data)=1,'seg', if(weekday(data)=2,'ter', if(weekday(data)=3,'qua', if(weekday(data)=4,'qui', if(weekday(data)=5,'sex','sab')))))) diasem from (select sum(nfvalor) total, nfdata data from `acme`.`faturamento` where nfdata between "2007/07/01" and "2007/07/07" group by nfdata ) as consulta1 Como 1º de julho foi domingo e a loja não abriu, teremos: total data diasem 4833,10 2007/07/02 seg 1915,60 2007/07/03 ter 4355,20 2007/07/04 qua 3942,40 2007/07/05 qui 3325,60 2007/07/06 sex 9130,53 2007/07/07 sab Só que eu não quero isso em linhas, quero em colunas certo? Então, se no quickreport eu colocar {total} {total} {total} {total} {total} {total} {total} Vou obter 4833,12 4833,12 4833,12 4833,12 4833,12 4833,12 4833,12 1915,60 1915,60 1915,60 1915,60 1915,60 1915,60 1915,60 4355,20 4355,20 4355,20 4355,20 4355,20 4355,20 4355,20 etc... certo? E' esse o problema? Bom, eu hoje procuro resolver tudo ao nível do próprio MySQL... então, em troca de ficar usando os recursos no programa (no Delphi, php, etc...), prefiro por o MySQL para trabalhar para mim... Assim, criei a query que me dá o faturamento semanal em uma só linha... A mesma query lá do começo ficaria assim (passaria ser uma query com várias subquerie): select nfdata, nfdata_1, total_1, nfdata_2, total_2, nfdata_3, total_3, nfdata_4, total_4, nfdata_5, total_5, nfdata_6, total_6, nfdata_7, total_7 from (select nfdata from faturamento where nfdata between "2007/07/01" and "2007/07/06" limit 1 ) as consultabase left outer join (select sum(nfvalo) total_1, nfdata nfdata_1 from faturamento where nfdata = "2007/07/01" group by nfdata_1 ) as dia1 on ("2007/07/01"=dia1.nfdata_1) left outer join (select sum(nfvalo) total_2, nfdata nfdata_2 from faturamento where nfdata = "2007/07/02" group by nfdata_2 ) as dia2 on ("2007/07/02"=dia2.nfdata_2) left outer join (select sum(nfvalo) total_3, nfdata nfdata_3 from faturamento where nfdata = "2007/07/03" group by nfdata_3 ) as dia3 on ("2007/07/03"=dia3.nfdata_3) left outer join (select sum(nfvalo) total_4, nfdata nfdata_4 from faturamento where nfdata = "2007/07/04" group by nfdata_4 ) as dia4 on ("2007/07/04"=dia4.nfdata_4) left outer join (select sum(nfvalo) total_5, nfdata nfdata_5 from faturamento where nfdata = "2007/07/05" group by nfdata_5 ) as dia5 on ("2007/07/05"=dia5.nfdata_5) left outer join (select sum(nfvalo) total_6, nfdata nfdata_6 from faturamento where nfdata = "2007/07/06" group by nfdata_6 ) as dia6 on ("2007/07/06"=dia6.nfdata_6) left outer join (select sum(nfvalo) total_7, nfdata nfdata_7 from faturamento where nfdata = "2007/07/07" group by nfdata_7 ) as dia7 on ("2007/07/07"=dia7.nfdata_7) (Acima está em uma versão "simplificada", executada diretamente no SQL Explorer); Então, se colocar no quickreport: {nfdata_1} {nfdata_2}...{nfdata_7} {total_1} {total_2}...{total_7} Você terá os dados corretamente impressos... Ok? Espero ter ajudado!
  15. Olá pessoal... Ontem, tentando reanimar uns computadores antigos a pedido de um cliente, experimentei abrir uma aplicação bem simples (etiquetas) no Windows95... Infelizmente, os componentes da ZeosLib (para acessar o MySQL5) não conseguem identificar as dll's (p.e., a libmysql.dll) apesar dela estar tanto na pasta windows\system como na pasta do executável... Creio que o problema seja devido à identificação de arquivos com nomes extensos no win95... Alguém já deparou (e/ou conseguiu contornar isso) no win95? Como não consegui ter mais acesso ao computador ontem e só conseguirei fazer testes de novo amanhã, se alguém tiver alguma idéia, fico grato pela dica!!! Abraços!
  16. paulobergo

    Join E Union

    You can also solve the problem efficiently by using a UNION that combines the output of two separate SELECT statements. See Section 13.2.7.2, “UNION Syntax”. Você pode resolver o problema eficientemente usando UNION que combina o resultado de dois comandos SELECT. Veja a seção 13.2.7.2, "UNION Syntax". Each SELECT searches only one key and can be optimized: Cada SELECT pesquisa apenas uma chave e pode ser otimizado: SELECT field1_index, field2_index FROM test_table WHERE field1_index = '1' UNION SELECT field1_index, field2_index FROM test_table WHERE field2_index = '1'; Agora, dê uma olhada no exemplo do post Problema Com Subconsulta em que há o exemplo de se "juntar" os resultados de duas queries... Quanto ao JOIN... serve para "ligar", ou "relacionar" tabelas, que contenham campos com informações em comum... Por exemplo, quero listar todos os produtos comprados pelo cliente código "00484", no dia 10/jul/2007: select produtos.descricao, produtos.unidade from `acme`.`vendas` vendas inner join `acme`.`produtos` produtos on (vendas.codigoean=produtos.codigoean) where vendas.data="2007/07/10" and vendas.clientecod="00484" Isso retornaria: descricao unidade mouse otico clone 3084 | un padmouse clone redondo | un pendrive kingston 1gb | un Estes dados foram colhidos a partir da tabela vendas, que contem o codigo do cliente (coluna clientecod) e outras como quantidade e valor unitario (estas não interessavam à consulta)... já o nome do produto e sua unidade, não ficam na tabela vendas, e, sim, somente na tabela produtos... assim "ligamos" ou "relacionamos" a tabela de vendas com a tabela de produtos com o campo que elas tem em comum, no caso codigoean (tanto na tabela vendas como na tabela produtos o nome da coluna foi o mesmo)... E se eu quisesse também a quantidade e o valor unitário (que ficam na tabela vendas), na mesma consulta? select produtos.descricao, produtos.unidade, vendas.quantidade, vendas.valorunitario from `acme`.`vendas` vendas inner join `acme`.`produtos` produtos on (vendas.codigoean=produtos.codigoean) where vendas.data="2007/07/10" and vendas.clientecod="00484" Ok?
  17. Bom... "in" se usa assim: select firma from `acme`.`emp` where cae1 in ("42.62.00-0","42.23.00-4"); Ou seja, listar as firmas cujo código de atividade economica sejam "42.62.00-0" ou "42.23.00-4", no caso, cae1=varchar... Estes exemplos estão no MySQL 5.0 Reference Manual mysql> SELECT 2 IN (0,3,5,7); -> 0 mysql> SELECT 'wefwf' IN ('wee','wefwf','weg'); -> 1 Como um select sempre retorna uma lista (linhas) como resultado, em troca de ("42.62.00-0","42.23.00-4") você poderia, então, e perfeitamente, colocar uma subquery... neste caso, uma que retorne as CAEs desejadas, como essa: select codigoscae from `acme`.`tabelacae` where ramo="PADARIA" group by codigoscae Isso aí, indica uma query que irá retornar apenas duas linhas contendo os códigos referentes a atividade Padaria. Então, a query, completa agora, ficaria assim: select firma from `acme`.`emp` where cae1 in ( select codigoscae from `acme`.`tabelacae` where ramo="PADARIA" group by codigoscae ); Certo? Quanto às versões, acredito que não deveria funcionar só a partir do MySQL 4... isso porque esta query: select codigo, nome, data from ":acmebde:clientesi" where cidade in ( select cidade from "c:\temp\subquery.sql" ) com "c:\temp\subquery.sql sendo este arquivo: select cidade from ":acmebde:clientesi.dbf" where estado="RJ" group by cidade funciona perfeitamente usando o SQL92 do Delphi, ou seja, é um recurso básico do SQL e deve estar implementado na versão 3 sim... Ok? Espero ter ajudado! Se der certo, não esquece de colocar o [resolvido]!!!
  18. paulobergo

    Banco De Dados

    Está começando? Olha... então... que tal começar lendo? isso mesmo... arrume um bom livro (PHP e MySQL Desenvolvimento Web, Ed. Campus) pois isso é fundamental para quem quer, realmente, aprender... Claro, os tutoriais, os fóruns, são também fantásticos... mas não dispense os livros... Ainda assim, não deixe de dar uma olhada no manual do php: http://br.php.net/manual/pt_BR/ Veja só estes links, um para quem precisa acessar uma tabela em dBase: http://br.php.net/manual/pt_BR/ref.dbase.php e este http://br.php.net/manual/pt_BR/ref.mysql.php para acessar MySQL... Ok? E insiste na leitura heim!
  19. paulobergo

    Fazer 2 Buscas

    Vamos lá... Acredito que em php se possa processar várias queries em, digamos, "off" certo? Então, baseado na execução de um Processor da Zeos Lib, posso executar estas queries em sequências separadas pelo ";"... creio que o mesmo se daria no PHP... Então, a idéia é ter uma tabela temporária para armazenar os dados que se deseja consultar. No exemplo a seguir, cria-se uma tabela temporária e, sequencialmente, é feita a inserção dos títulos dos artigos que contém a palavra "prefeito" nos jornais da cidade (tabela: 'jfnoticias' com titulos e notícias dos jornais que circulam no município, 'mgnoticias' com titulos e noticias dos jornais do estado e 'brnoticias' com os artigos de jornais do país)... create table `acme`.`temp` ( idtemp integer unsigned not null auto_increment, titulo varchar(200), jornal varchar(20), primary key (`idtemp`) ) engine = InnoDB; insert into `acme`.`temp` (idtemp, titulo, jornal) select 0, titulo, jornal from `acme`.`jfnoticias` where titulo like "%prefeito%"; insert into `acme`.`temp` (idtemp, titulo, jornal) select 0, titulo, jornal from `acme`.`mgnoticias` where titulo like "%prefeito%"; insert into `acme`.`temp` (idtemp, titulo, jornal) select 0, titulo, jornal from `acme`.`brnoticias` where titulo like "%prefeito%"; Aqui vai a sua busca em php (isto é, apenas seleção, já que a "busca" foi feita nas queries anteriores): $busca = "select jornal, titulo from `acme`.`temp`"; Ok? Espero ter ajudado! (se der certo, não esquece de marcar como "Resolvido") ok?
  20. Nos primeiros testes que fiz, funcionou perfeitamente trocar \scripts por ../scripts... Vou atualizar um site inteiro e caso ainda haja algum problema, relato aqui! Mais uma vez, grato pela colaboração... Abraços!
  21. a) Quanto ao MSN, infelizmente, não posso ajudá-lo, pois não tenho autorização para usá-lo... B) Quanto ao MySQLFront: não faço uso dele... uso o SQLExplorer (Borland) e o QueryBrowser do MySQLAdministrator... pode haver alguma dificuldade no MySQLFront em fazer com que a query seja processada apenas pelo MYSQL (essa diferença de tempo eu percebo no SQLExplorer com ODBC quando não defino onde as queries serão processadas: modo "local" ou "server")... c) Experimente executar a query, por exemplo, no prompt do MySQL ou, se usar o Delphi com componentes ZeosLib, dentro de uma zReadOnlyQuery Ok?
  22. paulobergo

    Update

    Bom... antes de mais nada, não existe a unidade mts... passar para isso (mts) seria um erro grave... pois unidade, como se pode ver, é "unidade", ou seja, singular, e, nunca, plural... Assim, para passar todas o conteúdo do campo unidade da atual (errada) "mts" para "m", faça isso: update `acme`.`produtos` set unidade="m" where unidade in ("mts","metrs", "metros", "metro"); Já que você está começando, veja outros exemplos de "unidades" usadas erradamente: metro = m e não mts, ml etc... metro quadradro = m2 e não mts2, mt2... metro cubico = m3 e não mts3, mt3s ml = mililitro (há quem insista que existe o tal "metro linear" = "ml"... só que TODO metro já é linear... exceto o quadro e o c*bico... horas = h e não hs... ou seja: dez horas = 10hs está errado... 10h quilometro = km e não kms, kmts quilo = kg e não kgs (você consegue comprar 10kg de banana mas não 10kgs de banana)... grama = g e não grs litro = l e não lts Quando fizer referência a peso, use quilo e nunca kilos Também não confunda embalagem ou apresentação com unidade... Exemplo: em um cadastro de supermercado, a lata de ervilha deve ter estes campos: nome = ervilha acme lata 150g unidade = un preco_unitario = 1,29 apresentacao_embalagem = caixa quantidade_embalagem = 24 O setor de compras trata a aquisicao de caixas O caixa trata como unidade Para saber mais sobre unidades de referência, acessa o site do INMETRO... Ok?
  23. Olá pessoal... Desenvolvo todos os sites de acesso a pesquisa e cosultas em bancos de dados com o Frontpage do Office 2000 e todas as páginas ficam hospedadas em IIS (XP), PWS (win98se) ou Apache (XP). Um link como este: <a href="\scripts/websqla.exe?OPCAO=1&REPFI=estoque\cadastro_fabselficha... é interpretado corretamente pelo navegador, quando este é um Internet Explorer 4 ou maior... Por exemplo, se estou acessando uma página que está hospedada no servidor "acme", em uma web qualquer (por exemplo, "loneytoones") o link fica assim: http://acme:81/scripts/websqla.exe?OPCAO=1&REPFI... ou, se for pelo endereço IP: http://192.168.0.1:81/scripts/websqla.exe?...O=1&REPFI... No entanto, se abro a mesma página no FireFox, o link fica assim: http://acme:81/loneytoones/scripts/websqla...O=1&REPFI... Isso acaba causando erro, pois o programa (cgi) não está na web "loneytoone" e sim na pasta scripts (quando no Apache, na cgi-bin) do servidor... Como, pelo próprio Frontpage, posso colocar uma forma da página, digamos, se ajustar ao navegador (IEx ou FireFox)? Grato!!!
  24. Que tal dar uma organizada? select f.id, f.nome, s.setor, f.data_admissao, f.data_nascimento, f.ramal, f.email from `acme`.`funcionarios` f inner join `acme`.`setores` s on (f.setor = s.id) where (f.status=1) and (f.nome like "%FRAJOLA%" or f.id like "%WARNER%") order by f.nome; * em tempo... não é bom usar "where" em troca de "inner"... * em tempo 2... é bom organizar as comparações com parênteses, principalmente quando você usa and e or juntos... Ok? Espero ter ajudado...
  25. a) Se a tabela tem poucos registros, você poderia ter feito: select codigo, nome, filiacao from `acme`.`registros` where empresa>="WARNER BROS" and codigo>=10 order by empresa B) Se quer mesmo usar subqueries, comece assim: faça uma query simples: select codigo, nome, filiacao from `acme`.`registros` where empresa>="WARNER BROS" *¹ importante: não classifique esta query, ou seja, não use o order by ainda, porque, já que será uma subquery, a classificação só irá atrasar o processamento... então, neste ponto, o que interessa, a princípio, é apenas filtrar os dados; *² evite selecionar todas as colunas desnecessariamente; c) Faça outra query; essa, sim, irá usar o resultado da primeira; ainda não classifique: select * from ( select codigo, nome, filiacao from `acme`.`registros` where empresa>="WARNER BROS" ) as subquery1 where codigo>=10 d) Faça uma terceira... esta sim irá classificar (ordenar) os dados: select * from ( select * from ( select codigo, nome, filiacao from `acme`.`registros` where empresa>="WARNER BROS" ) as subquery1 where codigo>=10 ) as subquery2 order by empresa Ok?
×
×
  • Criar Novo...