Ir para conteúdo
Fórum Script Brasil

paulobergo

Membros
  • Total de itens

    295
  • Registro em

  • Última visita

Tudo que paulobergo postou

  1. O código no caso é varchar(5)... Aí, uma coisa que não sei o motivo... mas em todos os testes que já realizei até hoje com pesquisa e índices, as realizadas com campos "string" foram mais rápidas do que com campos numéricos... Fazer uma select para "filtrar" os produtos com código EAN entre "7896050500001" e "7896050599999" é muito mas rápida se o campo "codigoean" for varchar(13) do que int ... se ele for indexado, mais rápido ainda... Assim, nas tabelas que preciso de mais velocidade de pesquisa, prefiro usar varchar do que int (claro, isso depende de cada situação)... Outra coisa que faz diferença é o uso das subqueries (uso e abuso delas): Isso: select * from (select nome, codigo from `acme`.`clientes` where ultimocontato="2007/05/14" ) as consulta1 order by nome é imensamente mais rápida do que select nome, codigo from `acme`.`clientes` where ultimocontato="2007/05/14" order by nome Experimenta comparar... Quanto ao seu exemplo, mudei a pesquisa para nome (quarenta caracteres em ambas as tabelas) e incluí mais um monte de registros de outras tabelas, de forma que a tabela "alterada" passou a ter 4035 nomes novos... Então select a.nome, a.codigo from `acme`.`clientes` a left outer join `warnerbros`.`clientes` b on (a.nome=b.nome) where b.nome is null foi igualmente rápida... não me deu sequer condição de dizer que foi um segundo mais lenta do que a primeira... E ressalvo que a tabela clientes tem quatro índices: . codigo varchar(05) not null, nome varchar(40) not null, cnpj varchar(18) not null, cpf varchar(14) not null, . . unique index codigo(`codigo`), index nome(`nome`), index cnpj(`cnpj`), index cpf(`cpf`) ) engine = InnoDB; Isso acelera muito as operações, conforme a necessidade de muita pesquisa e atualizações vinculadas... Ok? Espero ter ajudado!
  2. Olá. Pode ser um problema na sua query... Como não tenho uma tabela assim, peguei uma de clientes (120mil registros) e dupliquei em outro catálogo; depois, nesta tabela duplicada, incluí oito registros novos. Então: select sum(1) quantos from `acme`.`clientes` a left outer join `warnerbros`.`clientes` b on (a.codigo=b.codigo) where b.codigo is null gerou quantos 8 em 2seg, tanto em um Pentium 1.6 512k como num Duron 1.8 392k, ambos com MySQL 5.027... E... select a.nome, a.codigo from `acme`.`clientes` a left outer join `warnerbros`.`clientes` b on (a.codigo=b.codigo) where b.codigo is null mostrou os nomes e codigos novos... sendo a = tabela nova com 122356 e b = tabela original com 122348 registros. Ok? espero ter ajudado!
  3. Um dos fatores de força do MySQL é a possibilidade de resolver muita coisa sem depender das linguagues... aí é só questão de tempo para identificar uma forma de fazer aquilo que imaginávamos não ser possível (como combinar letras com o número gerado num campo autoinc, lembram?) Então, parcialmente resolvido, no nível apenas do MySQL, precisamos criar uma tabela temporária e juntá-la com a que precisamos... algo como: CREATE TEMPORARY TABLE aux (code INT); INSERT INTO aux VALUES (048929),(048929),(048929),(048929),(048929),(048929),(048929), (048927),(048927),(048927),(048927),(048927); SELECT nome, preço, acme.`tabela`.codigo FROM acme.`tabela` INNER JOIN aux USING(codigo); Claro... agora falta conseguir substituir a linha do Insert por algo como INSERT INTO aux VALUES Repeat("(048929)",7); Então, se alguém tiver alguma idéia... Grato e um abraço! (continuarei tentando!)
  4. A ambiguidade aí pode ser devida ao MySQL não saber a qual tabela o campo usuario você está se referindo. Então, provavelmente, nas três tabelas você deve ter o campo "usuario"... Esta ambiguidade deve ser referente, então, ao "usuario" da validação (a linha do "where") e não da linha de definição do resultado (a linha do select)... Ok?
  5. paulobergo

    (Resolvido) Count()

    Ora... Quantos produtos tenho no estoque com a unidade "UN "... e quantos com a unidade "PAR"? select sum(IF(unidade="UN ",1,0)) quantos_com_un, sum(if(unidade="PAR",1,0)) quantos_com_par from `acme`.`estoque` Ok? Numa só query!
  6. Oi pessoal... Tem como repetir as linhas do resultado de uma query x vezes? Exempo: select nome, preço, codigo from `acme`.`tabela` resulta em: chave de fenda 1pol 10.50 048929 chave de fenda 2pol 10.90 048927 Porém preciso, por exemplo, 7 x o primeiro produto e 5 x 0 segundo, assim: chave de fenda 1pol 10.50 048929 chave de fenda 1pol 10.50 048929 chave de fenda 1pol 10.50 048929 chave de fenda 1pol 10.50 048929 chave de fenda 1pol 10.50 048929 chave de fenda 1pol 10.50 048929 chave de fenda 1pol 10.50 048929 chave de fenda 2pol 10.90 048927 chave de fenda 2pol 10.90 048927 chave de fenda 2pol 10.90 048927 chave de fenda 2pol 10.90 048927 chave de fenda 2pol 10.90 048927 Alguma idéia? Grato!
  7. paulobergo

    Usando Mysql

    Para baixar, vai em http://dev.mysql.com/downloads/ Quanto às outras dúvidas... melhor dizer o que eu fiz e faço: a) meus sistemas partiam de COBOL, dBaseIIIPlus, FoxBase, VisualFox, Clipper e Acess... B) migrei e continuo migrando tudo para MysQL5 c) uso XP como servidor d) uso IIS e Apache como servidor web: não produzo mais nenhum tipo de relatório nos programas desktop... todo relatório só é obtido através dos browsers (principalmente IEx) com o uso de CGI e ISAPI... (exceto impressão de documentos fiscais, como notas fiscais, duplicatas, cheques e registros fiscais) e) uso Delphi 4 e 6 para desenvolvimento; Frontpage para as páginas sob IIS; DW para as páginas sob Apache; f) uso o MySQL5.0.27 para servidor dos bancos de dados; g) para administrar, uso o MySQLAdministrator; uso, demais, o SQL Explorer (dbexplorer.exe) da Borland (Delphi) para criar, testar queries, interagir, importar dados dos bds antigos (principalmente VisualDBase e Clipper+mdx)..., acessar remotamente os bancos de dados dos clientes, etc... h) para conexão dos programas com bancos de dados, uso odbc 3.5... (também disponível no mysql)... e as dlls dos componentes ZeosLib... Para sistemas que usam queries mais complexas e que acessam servidores locais e remotamente, via velox (adsl) por exemplo, uso os componentes da Zeos. Para os sistemas que usam queries mais simples, em computadores "standalone" ou redes locais e poucos usuarios, uso os componentes da bde (TQuery) via odbc... i) como referência, uso o próprio guia do MySQL... além, é claro, do suporte dos companheiros de forums como este... j) finalmente... uso e abuso de queries dentro de queries... acho o MySQL super eficiente nisso... Bom... esse é só o meu ponto de vista.. Espero ter ajudado! Abraços
  8. Oi Micheu... Oi Helena... tudo bem? Eita trenzinho complicado né? Olha... já experimentei alguns demos: um da Puma e um da Datastead... infelizmente, são muito complexos e não dão muita certeza de que se, ao adquiri-los, funcionariam (o componente da Puma é mais em conta: uns R$ 240,00 e o da Datastead bem salgado... na base de R$ 1.300,00); Com o demo da Puma, consegui gravar avi compactado com Divx... mas wmv (ou asf) com qualidade (com 700k), nada... e o da Datastead não prestou para nada... Então vou continuar pelejando... Quanto ao MovieMaker, o único problema com ele é que não conseguirmos executar duas instâncias dele... ou seja, só dá para fazer uma captura e precisamos capturar dois vídeos... De qualquer forma, vou dar uma olhada no programa que você sugeriu! Grato e um abraço!
  9. paulobergo

    Rx Com Mysql

    Olá... Olha... também acesso tabelas visualdbase e mysql... no entanto, as queries tem algumas diferenças pois alguns comandos e funções no MySQL são diferentes... Por exemplo: Consultar uma tabela de contas a pagar .dbf (visualdbase) select datavc, datapg, valor, quitada from ":acme:ctapagar" where quitada=true and datapg between "06/01/2007" and "06/30/2007" Mesma query, porém para mysql (via odbc ou zeosbdo): select datavc, datapg, valor, quitada from `acme`.`ctapagar` where quitada=1 and datapg between "2007/06/01" and "2007/06/30" Outro exemplo (uma query abrindo uma subquery). dBase: select nome, telefone from (c:\temp\subquery.sql) where nome between "M" and "T" order by nome (neste caso, foi criada, previamente, e salva, um arquivo "subquery.sql" na pasta c:\temp, com o conteudo: select nome, endereco, telefone, bairro, cep, cidade, uf, contato from ":acme:clientes" where cidade="JUIZ DE FORA" Agora, em MySQL: select nome, telefone from (select nome, endereco, telefone, bairro, cep, cidade, uf, contato from `acme`.`clientes` where cidade="JUIZ DE FORA" ) as consulta1 where nome between "M" and "T" order by nome Ok?
  10. 'There is no default printer currently selected'. Não há uma impressora padrão selecionada atualmente... E' isso que sua aplicação está dizendo... Este aplicativo que tem o "form" de impressão está esperando, por exemplo, encontrar uma 'epson fx880' padrão (originalmente, ela foi "levada" junto com seu aplicativo ao compilar)... E, agora, quando você abre o mesmo aplicativo em outra máquina (que não tem a mesma impressora), ele dá essa mensagem... Bom... isso é o que eu imagino... Ok?
  11. Oi Helena! Longo caminho a trilhar! Tenho tentado isso também... sem sucesso... Parece que, como o colega Micheus diz, realmente há uma forma de gravar vídeo já compactado mas não é tão simples... e realmente não há exemplos no DsPack que mostrem claramente isso... o exemplo do videocap mostra como capturar e salvar em avi, mas não como compactar... o exemplo de comprimir um video (previamente gravado), mostrar a compressão so a partir de um "file" mas não como faze-lo a partir de (o meu caso) uma camcoder (igual a uma webcam)... Se voce não precisar de qualidade, tente o asfwriter... compacta bastante... só a qualidade é que é ruim (falta ai também um exemplo de como melhorar a resolucao e/ou a bitrate - no meu caso, precisaria de 700k a 1mb contra os 32k cheio de manchas em que ele resulta)... Já tentei outros componentes também... tem um de uma tal de "datastead", que custa !!! US$700 !!! e que é super-complexo... além do mais, ainda não consegui ter certeza de que ele resolve... pois o pessoal do suporte dessa datastead não passa informações muito detalhadas até que você compre o componente... Tem também outros dois: visioforge e puma... eles custam menos (cerca de US$90 a US$120)..., para Delphi7 e 2006> e, como o da Datastead, não são simples não... (não sei se realmente cumprem o que prometem)... Assim que conseguir alguma coisa, posto aqui novamente! Por enquanto, vou tentar uma forma de abrir o MovieMaker em duas janelas separadas! Boa sorte e bem-vinda!
  12. Olá. Veja se isso serve de pista: O MySQL tem a função LAST_INSERT_ID(), LAST_INSERT_ID(expr) Retorna o mais recente valor gerado automaticamente em um campo auto_increment, pelo mais recente Insert ou Update. Exemplo: mysql> SELECT LAST_INSERT_ID(); -> 195 O "id" gerado é mantido no servidor para cada conexão... assim, o valor não é "afetado" pelos outros usuários, que podem (e tem) seus próprios valores para o campo auto_increment, assegurando que cada um consiga obter seu próprio "id", sem necessidade de bloqueios ("locks") ou transações. E se você fizer multiplos "insert", Last_insert_id() só retornará o valor do último (isto é, o mais recente). Creio que no banco de dados que você está usando deve haver algo do tipo... Ok? Espero ter ajudado!
  13. E'... seria interessante dar uma olhada... só que,depois de verificar a autenticidade do windows, o link da microsoft da microsoft não funciona... " Obrigado pelo download Windows Media Encoder 7.1 - Portugus (Brasil) Instrues de Download: Na caixa de dilogo Download de Arquivo, siga um destes procedimentos: Para iniciar a instalao imediatamente, clique em Abrir ou Executar este programa a partir do seu local atual. Para copiar o download para o computador a fim de instalar posteriormente, clique em Salvar ou em Salvar este programa em disco. Para obter mais informaes sobre o download selecionado, inclusive instrues de instalao detalhadas, retorne pgina de informaes de download. Se o download no for iniciado em 30 segundos, clique neste link: Iniciar download. Obrigado por usar o software autntico da Microsoft Para aproveitar mais downloads gratuitos e vantagens adicionais reservadas para clientes do Windows original, visite o site de Vantagens do Windows Original. " Depois tento de novo! Grato!
  14. O melhor a fazer é usar o SQLExplorer do Delphi. Então, você terá que: a) instalar a BDE (Borland Database Engine); B) instalar o SQL Explorer; c) instalar o MySQL ODBC Conector (3.51...); Instalados? Ok. Aí você tem que: d) Criar uma conexão no ODBC para o banco de dados MySQL... ou seja, um "alias" na BDE direcionado para o "catalog" do MySQL que vai receber os dados importados do dBaseIII e) Criar um alias para a pasta onde estão os bancos de dados dBaseIII, isto é, um "alias" que representa, por exemplo, uma pasta como "c:\dBaseIII\acme" f) Importar as tabelas. Uma vez que você esteja familiarizado com as igualdades e diferenças entre modelos de bancos de dados, você pode, abrindo o "alias" designado para as tabelas dBaseIII, executar uma query como essa, na guia SQL do SQL Explorer: insert into ":acmemysql:inv200608" (idinvent, estcodi, estcodb, estnome, estunid, estpcus, estpvis, estesta, esticms) select 0, estcodi, estcodb, estnome, estunid, estpcus, estpvis, estesta, esticms from ":acmedbase:inv0608.dbf" Sendo a tabela inv200608 (inventário, no mysql): idinvent: autoinc estcodi varchar(6) estcodb varchar(13) estnome varchar(40) estunid varchar(3) estpcus decimal(10,2) estpvis decimal(10,2) estesta decimal(13,3) esticms varchar(2) e a tabela inv0608.dbf (inventário, no dBaseIII): estcodi c 6 estcodb c 13 estnome c 40 estunid c 3 estpcus n 10,2 estpvis n 10,2 estesta n 13,3 esticms c 2 Ok? Espero ter ajudado!
  15. Olá! Tem alguma função que retorne qual a data da criação ou ultima modificação (inclusão, exclusão ou alteração) de dados em uma tabela? Exemplo: considerando que tenho a tabela "inventario" no catalog "acme", algo como: select fileage(`acme`.`inventario`) ultimoacesso ultimoacesso -------------- 01/06/2006 19:15:25 ? Grato!!!
  16. Olá! Grato pela resposta... Na verdade, já tentei de tudo um pouco... Com base nos exemplos, o componente para captura de wmv (asf) é o TASFWriter... e com ele a captura funciona... no entanto, na sua propriedade Profile, só consigo usar wmp_V80_288VideoOnly ou wmp_V80_56VideoOnly... precisaria usar uma taxa de, por exemplo, 512k, como no MovieMaker... Quanto ao "videocap", já havia experimentado outras opções realmente, mas só funciona com AVI, sem compactação, sendo que só consegui encontrar a função SetOutputFileName com referência ao tipo de gravação: Isso dá certo: SetOutputFileName(MEDIASUBTYPE_Avi, PWideChar(CapFile), multiplexer, Writer); Esses não resultam em erro, mas também não salvam nada... SetOutputFileName(MEDIASUBTYPE_DIVX, PWideChar(sCap1File), multiplexer, Writer); SetOutputFileName(MEDIASUBTYPE_MDVF, PWideChar(sCap1File), multiplexer, Writer); SetOutputFileName(MEDIASUBTYPE_MPEG1Packet, PWideChar(sCap1File), multiplexer, Writer); etc... Expandindo também a propriedade BaseFilter do Video1SourceFilter, temos inúmeras opções... mas nada que faça funcionar a gravação em outro formato que não o AVI... De qualquer forma, grato pela colaboração!!!
  17. paulobergo

    Codigo De Barras

    Olá. Aparentemente, os códigos de barras são números... mas só aparentemente... O ideal é considerá-los como "strings"... assim... Se vai usar: EAN (13 ou 8): codigoean varchar(13) 2x5 (código sempre com quantidade par de digitos), com oito dígitos, p.e.: codigo2by5 varchar(8) 3x9 (código alfanumérico, também sempre par), com 22 caracteres, p.e.: codigo3by9 varchar(22) Em um banco de dados "mysql", com 16mil registros de produtos, buscar um código ean de 13 digitos (como 7894823934840), é mais rápido com o código gravado como texto (char ou varchar) do que como número... qual o motivo, não sei... quanto à pesquisa de um código no IB, não tenho idéia... então, convem experimentar... Ok? Espero ter ajudado!
  18. Em tempo!! Só lembrar que a captura é feita "ao vivo"... ou seja, não posso usar um "conversor" tipo "mpg" para "wmv", "avi" para "wmv", etc... Ok Grato!
  19. Oi. Para desligar o pc, é simples... use o ExitWindowsEx(EWX_SHUTDOWN,0); Agora... tenha em mente que isso pode não ser muito seguro se alguma aplicação não for preparada para fazer seu encerramento completo (tabelas de bancos de dados que podem estar abertas e não façam o devido "commit" antes de serem encerradas) ao detectar que o computador está sendo desligado... Usamos este comando em um programa de caixa (com impressora fiscal), que, ao fechar, pergunta ao operador se ele vai também desligar o computador (a pergunta é opcional)... Já na firma em que trabalho o servidor desliga, ou melhor, hiberna, automaticamente, depois de (acho) quatro horas parado (controlado pelo gerernciador de energia do próprio XP), e isso geralmente acontece às dez da noite... ele liga sozinho às 6:00 da manhã... O meu computador também hiberna sozinho, duas horas depois de inativo (geralmente às oito da noite)... ele liga sozinho às 08:00... assim, quando chego, ele já tá pronto para uso, já atualizou o antivirus, já fez as varreduras e pronto... Estes recursos podem ser bem interessantes, conforme necessário... e acho que vale a pena dar uma experimentada neles... Ok?
  20. O link remete para o "Rmvb Fixer 3.21", que é um "patcher" para vídeos já prontos... Vi que tem outros componentes... inclusive para gravar... Vou dar uma olha e se funcionar, adiciono uma resposta!!! De qualquer forma, grato..... Quanto a editar o titulo, sem problemas... 'E que realmente a maquina que faz a captura dos dados trabalha numa condição extrema... tem trechos de estrada que chegam a mais de cem quilometros, filmados a 40km/h... sem contar que o gps passar uma informação com os dados de coordenadas, altitude, direção, velocidade a cada segundo, o odometro manda cerca de oito linhas de dados por segundo e o dispositivo da barra estabilizadora manda cerca de 90 dados por segundo... tudo isso tem que ser "juntado" num banco de dados, ao mesmo tempo que o engenheiro bate no teclado cerca de vinte tipos de ocorrencias que ele observa... E o que é mais engraçado... o unico tipo de banco de dados possível de ser gravado e ser executado em qualquer pc foi o dbaseIII do componente Halcyon 5 para Delphi... isso porque os dados tem que ser apresentados (para Denit, Dersa, DER, etc.) sem que seja instalado nem um componente ou recurso nos computadores deles... (aliás, essa é outra coisa que eu precisaria ver mais para frente...) Também, de qualquer forma, obrigado pela atenção!
  21. Oi Pessoal! Olha, para obter o ip da internet, use isto: Function bIpValido(var IP:String):Boolean; Begin Try Begin IeTesteForm.NMHTTP1.Disconnect; IeTesteForm.NMHTTP1.Get('http://checkip.dyndns.org/'); htmlBody := IeTesteForm.NMHTTP1.Body; End; Except htmlBody := '-'; End; If htmlBody <> '-' then Begin StartPos := Pos(StartText, HTMLBody) + Length(StartText); Leng := Pos(EndText, HTMLBody) - StartPos; If IP <> Copy(HTMLBody, StartPos, Leng) then Begin IP := Copy(HTMLBody, StartPos, Leng); If (Copy(IP,1,3) = '192') OR (Copy(IP,1,3) = '127') then Begin Result := False; End Else Begin Result := True; End; {EndIf} End Else Begin Result := False; End; {EndIf} End; {EndIf} bIpValido := True; End; * Existem outros provedores que fornecem o seu ip "externo", ou seja, o seu ip da internet... por exemplo, o "www.meuip.com.br", que é o que eu dito as pessoas que precisam, as vezes, me fornecer o ip, para que eu faça um acesso remoto para suporte, pelo vnc ou pela area de trabalho remota do xp... * O código da função acima, usando o componente nmhttp, uso em um programa que fica funcionando como serviço no xp e, de acordo com o ip renovado (de conexão discada ou mesmo do velox), envia o ip atualizado dentro de um determinado tempo (a cada dez minutos, p.e.) para mim... Ok? Espero ter ajudado! Abraços!
  22. Oi Pessoal... Seguinte... Desenvolvi um software, em Delphi 4 (agora "migrando" para o Delphi 6) que captura dados sobre rodovias (lê um gps, um odometro e um indicador de oscilacao na barra traseira), mais os dados observados por um engenheiro que fiscaliza a rodovia... tudo é gravado em um banco de dados... e ao mesmo tempo é feita a "filmagem" do trecho verificado, usando-se o MovieMaker (xp), que salva o vídeo no formato wmv... Agora, passando o software para o Delphi 6, fiz varias melhorias e, a mais importante, eliminei a (possível) necessidade de se usar o MovieMaker para filmar a rodovia, colocando dentro da propria aplicacao a filmagem, e ainda acrescentando mais uma camera (uma filma a frente e a outra a lateral da via)... Só consegui, até agora, dois componentes para salvar video: o DSPack e o VideoGrabber da Datastead. O VideoGrabber é muito complexo e o DSPack muito mais simples... no entanto, até esta madrugada, não conseguia capturar um vídeo no formato wmv (windows media) e salvá-lo usando o DSPack... somente dava para fazer isso com o VideoGrabber... porém, logo de madrugada, consegui "descobrir" como capturar para wmv (asf)... O único problema é que em ambos os componentes não encontrei meios de aumentar a taxa de bits dos 28 ou 56k para, p.e., 700k (melhor qualidade)... Caso alguém use algum desses componentes (ou outro parecido) e possa dar alguma dica, ficarei muito grato!!! Abraços!
  23. Filie-se a www.eanbrasil.com.br Mas atente para o seguinte... uma coisa é codigo para embalagem e outra para produto... Voce pode ter um codigo para uma embalagem que contem quatro produtos e cada produto pode ter seu codigo individual... De qualquer forma, você encontra todo o suporte no link acima... E para obter os codigos (voce recebe um "segmento" de codigos para usar conforme uma certa quantidade estimada de produtos), tem que se associar e pagar uma taxa anual sim... Ok?
  24. Olá... Já passei por isso há muito tempo atrás... Veja... se você precisa abrir tabelas usando o DBaseIII+, tudo bem... continue usando índices NDX Agora, se você precisa abrir as tabelas usando o Clipper, seria melhor usar MDX E se precisar abrir as tabelas usando o VisualFoxPro, seria melhor usar CDX Para resolver essa encrenca de uma vez por todas, eu adotei a indexação apenas via sql: With Query1 do Begin; Close; SQL.Clear; SQL.Add('create table clientes'); SQL.Add('('); SQL.Add('idcliente autoinc,'); SQL.Add('nome char(30),'); SQL.Add('cpfcnpj char(16)'); SQL.Add(')'); ExecSQL;` Close; SQL.Add('create index nome on clientes (nome)'); ExecSQL;` Close; SQL.Clear; SQL.Add('create index cpfcnpj on clientes (cpfcnpj)'); ExecSQL;` Close; End;{With Query} Depois disso, você tem uma tabela clientes.dbf e um arquivo clientes.mdx com os dois indices dentro dele (nome e cpjcnpj) Verifique as propriedades do "alias"... (lá no DBExplorer ou BDEAdministrator) assegure-se que seja do tipo DBase Sugiro que você adote gravar, alterar, excluir os dados apenas por comandos SQL... com isso, nunca (isso é meio forte de dizer, mas deve haver uns cinco anos que não vejo um índice dentro de um MDX ser corrompido) terá problemas de arquivo de índice corrompido; Ah... você pode comparar, pelo próprio DBExplorer, a pesquisa em um arquivo indexado das três formas: NDX, CDX e MDX Depois de criar e indexar uma tabela com estes formatos, esperimente executar uma query simples de consulta em um arquivo bem grande (com uns 256mil registros) por exemplo... verá que a velocidade é muito maior nos indices MDX, depois nos CDX e, por ultimo, nos NDX Em tempo: se optar pelos MDX, experimente criar, sempre, um campo autoincremento em suas tabelas DBF... assim o Delphi vai formata-la sempre como do tipo Visual DBase7, que só gera indice MDX Já as DBaseIII+ e DBaseIV (acho eu) podem ter NDX... Ok? Espero ter ajudado...
  25. Oi pessoal... Preciso, por uma query, saber se uma determinada tabela existe ou não em um database... Por exemplo, esta query, executada no DBExplorer (via ODBC conector), retorna o nome de uma tabela que existe... show tables from `acme` like "inventario200704" Dá esse resultado: tables_in_acme (inventario200704) inventario200704 No entanto, esta query tem um comportamento estranho... Se tento executá-la em uma máquina, com Windows98, acessando o mesmo servidor MySQL, recebo: tables_in_acme (inventario200704) (MEMO) * vem MEMO em maiúsculas se a tabela existir e em minúsculas quando contrário... Mas o pior mesmo é que, abrindo esta query em um componente TQuery no Delphi, o resultado vem vazio (recordcount = -1)... Então... tem alguma maneira de saber se uma tabela existe? Grato por qualquer ajuda!
×
×
  • Criar Novo...