vagner Posted March 26, 2012 Report Share Posted March 26, 2012 Olá, Estou testando o mysql, tenho uma table (de Cep), com uns 640.000 registros. Bom qndo coloquei isso no browse, ficou lento (em relação ao dbf). Bom me falaram para eu criar Ãndice que iria melhorar, realmente melhorou, porém, não está nem perto de ficar igual ao dbf. Bom, mas a pergunta é : Tenho como selecionar o Ãndice que criei ou o sql seleciona o que quer a hora que quer ? eu preciso que qndo mudar de coluna mudar o Ãndice tb mas não estou conseguindom ficando inviável a utilização do sql. Qual seria a saÃda ? Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
vagner Posted March 26, 2012 Author Report Share Posted March 26, 2012 Olá, Estou testando o mysql, tenho uma table (de Cep), com uns 640.000 registros. Bom qndo coloquei isso no browse, ficou lento (em relação ao dbf). Bom me falaram para eu criar Ãndice que iria melhorar, realmente melhorou, porém, não está nem perto de ficar igual ao dbf. Bom, mas a pergunta é : Tenho como selecionar o Ãndice que criei ou o sql seleciona o que quer a hora que quer ? eu preciso que qndo mudar de coluna mudar o Ãndice tb mas não estou conseguindom ficando inviável a utilização do sql. Qual seria a saÃda ? Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
joaosolution Posted March 26, 2012 Report Share Posted March 26, 2012 Wagner Boa tarde Este tipo de consulta com muitos registros em um browse eu considero inviável com MySql. Procuro trabalhar sempre com filtros para retornar o menor número de registros para trablhar em browse. Uma sugestão é filtrar por UF e colocar para ordenar pelas colunas com ORDER BY, direto sem Ãndices. Att João Bosco Contagem/MG FWH 10.6b xHb 1.2.1 WorkShop 4.5 PellesC SQLLIB SQLRDD xDev MySql MS-Sql Quote Link to comment Share on other sites More sharing options...
vagner Posted March 26, 2012 Author Report Share Posted March 26, 2012 citação:Wagner Boa tarde Este tipo de consulta com muitos registros em um browse eu considero inviável com MySql. Procuro trabalhar sempre com filtros para retornar o menor número de registros para trablhar em browse. Uma sugestão é filtrar por UF e colocar para ordenar pelas colunas com ORDER BY, direto sem Ãndices. Att João Bosco Contagem/MG FWH 10.6b xHb 1.2.1 WorkShop 4.5 PellesC SQLLIB SQLRDD xDev MySql MS-Sql id=quote>id=quote>Olá, Obrigado por responder, mas infelizmente não posso pedir ao usuário que está procurando por uma rua, e não sabe nem o estado nem a cidade e muito menos o bairro, saia colocando o estado, depois a cidade e bairro e para encontrar a rua que ele quer. O Que eu quero é poder selecionar o Indice que montei aà daria para eu fazer um order by... o que eu quiser depois Mesmo assim obrigado. Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
joaosolution Posted March 26, 2012 Report Share Posted March 26, 2012 Wagner Sugiro você carregar o browse em branco! Após o usuário digitar parte da Rua você executar a consulta no banco de dados e ir mostrando à medida que ele for digitando. No meu caso, eu trabalho com pelo menos 5 letras iniciais para executar o filtro, desta forma o número de registros retornados é menor. Att João Bosco Contagem/MG FWH 10.6b xHb 1.2.1 WorkShop 4.5 PellesC SQLLIB SQLRDD xDev MySql MS-Sql Quote Link to comment Share on other sites More sharing options...
vagner Posted March 26, 2012 Author Report Share Posted March 26, 2012 Olá João, Obrigado, mas meus usuários estão acostumados a trabalhar com pesquisa incremental , mas se não houver outro jeito, tô vendo que não vai dar para eu mudar para sql Placar : (1) Dbf x (0) Sql Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 26, 2012 Report Share Posted March 26, 2012 João Santos - São Paulo. joao@pleno.com.br Fone: (11) 3106-2832 http://pt-br.facebook.com/people/Jo%C3%A3o-Santos/100001195894196 FWH 2.7 - xHARBOUR WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
gilmer Posted March 26, 2012 Report Share Posted March 26, 2012 Vagner, use algum RDD para isto (RDDSQL ou SQLLIB) eles fazem um sistema de páginação interna, otimizando muito a performace, qualquer coisa eu mostro vc acessando para ver. e-mail: gilmer@fivewin.com.br msn: fivewinbrasil@hotmail.com Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted March 26, 2012 Report Share Posted March 26, 2012 Ola Vagner o que adianta exibir uma browse com mil registro por exemplo se o usuario ira enxergar apenas uns 20 30 no maximo por vez, faz como o João Bosco dize, exibe uma browse em branco e depois disto faz o filtro... Abraços Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Quote Link to comment Share on other sites More sharing options...
Luisão Posted March 26, 2012 Report Share Posted March 26, 2012 Com SQLLIB usando DBUSEAREA fica normal, pelo que me lembro. Algumas dicas: O MySQL usa os Ãndices automaticamente, para saber se ele realmente está usando um Ãndice numa query sua, coloque um Explain no Ãnicio e veja o resultado. Por exemplo: Se no seu programa você faz Select * From tabelaCEP Order By uf, execute no MySQL Workbench Explain Select * From tabelaCEP Order By uf que isso poderá te dar mais informações sobre sua query. Aqui eu uso a SQLLIB e quando faço abertura via DBUSEAREA, tem um SQL PACKET SIZE que você pode alterar (veja na documentação). Isso pode ajudar. Se estiver fazendo USE SQL, você pode optar por colocar um Limit ao final, por exemplo: Select * From tabelaCEP Order By uf Limit 1000, desse modo, apenas os 1000 primeiros registros serão retornados. Mais uma dica, ao invés de utilizar Select *, tente na medida do possÃvel trocar o * pelos campos que você precisa. Se sua tabela tem 70 campos mas só vai exibir 5 para o usuário, faça Select somente desses 5 campos. -- Luis Fernando Jr. (Luisão) FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY When I'm sad, I stop being sad and be awesome instead. True Story Quote Link to comment Share on other sites More sharing options...
vagner Posted March 26, 2012 Author Report Share Posted March 26, 2012 citação:Ola Vagner o que adianta exibir uma browse com mil registro por exemplo se o usuario ira enxergar apenas uns 20 30 no maximo por vez, faz como o João Bosco dize, exibe uma browse em branco e depois disto faz o filtro... Abraços Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 id=quote>id=quote>Olá, Eu uso pesquisa incremental, ou seja o usuário vai digitando e vai buscando automaticamente os dados, para isso não daria para usar a pesquisa incremental, teria que ficar pedindo para ele digitar e dar um enter para que pesquisasse a próxima Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
vagner Posted March 26, 2012 Author Report Share Posted March 26, 2012 citação:Com SQLLIB usando DBUSEAREA fica normal, pelo que me lembro. Algumas dicas: O MySQL usa os Ãndices automaticamente, para saber se ele realmente está usando um Ãndice numa query sua, coloque um Explain no Ãnicio e veja o resultado. Por exemplo: Se no seu programa você faz Select * From tabelaCEP Order By uf, execute no MySQL Workbench Explain Select * From tabelaCEP Order By uf que isso poderá te dar mais informações sobre sua query. Aqui eu uso a SQLLIB e quando faço abertura via DBUSEAREA, tem um SQL PACKET SIZE que você pode alterar (veja na documentação). Isso pode ajudar. Se estiver fazendo USE SQL, você pode optar por colocar um Limit ao final, por exemplo: Select * From tabelaCEP Order By uf Limit 1000, desse modo, apenas os 1000 primeiros registros serão retornados. Mais uma dica, ao invés de utilizar Select *, tente na medida do possÃvel trocar o * pelos campos que você precisa. Se sua tabela tem 70 campos mas só vai exibir 5 para o usuário, faça Select somente desses 5 campos. -- Luis Fernando Jr. (Luisão) FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY When I'm sad, I stop being sad and be awesome instead. True Story id=quote>id=quote>Sim, creio que fique parecida, mas aà acaba perdendo em performance (Mais ainda) Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
vagner Posted March 26, 2012 Author Report Share Posted March 26, 2012 Para que entendam melhor o que eu preciso: Quando o usuário clica no cabeçalho, eu coloco na ordem, e qndo ele vai digitando vai aparecendo o que ele quer, aà fica mais fácil dele procurar as coisas Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
joaosolution Posted March 26, 2012 Report Share Posted March 26, 2012 Wagner Eu tb utilizo pesquisa incremental! Mas quando executo Select * from tabela where campo like 'A%' o número de registros que serão retornados é muito grande. Então somente executo a pesquisa depois de colher 5 letras, Select * from tabela where campo like 'ANAPO%' Para o usuário a pesquisa fica mais rápida! Att João Bosco Contagem/MG FWH 10.6b xHb 1.2.1 WorkShop 4.5 PellesC SQLLIB SQLRDD xDev MySql MS-Sql Quote Link to comment Share on other sites More sharing options...
emotta Posted March 26, 2012 Report Share Posted March 26, 2012 Vagner, também uso pesquisa incremental no meu. Realmente ficava uma carroça, mas ai adotei a seguinte regra, a pesquisa incremental só inicia após o usuário digitar a 3a letra... Tenta isso... abraço citação:Para que entendam melhor o que eu preciso: Quando o usuário clica no cabeçalho, eu coloco na ordem, e qndo ele vai digitando vai aparecendo o que ele quer, aà fica mais fácil dele procurar as coisas Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" id=quote>id=quote>Eduardo Motta emotta@gmail.com.br FWH 9.09 (original) - xHARBOUR 1.2.1 (comercial e original) - SQLRDD Quote Link to comment Share on other sites More sharing options...
miragerr Posted March 26, 2012 Report Share Posted March 26, 2012 Ola amigos Vagner, realmente quando se trabalha com DBF e vai mudar para SQL, a coisa complica no quesito BROWSE, tambem tinha este problema com meus clientes, mais com o tempo o pessoal ja foi se acostumando e não tive mais problemas, imagina uma tabela com 4 milhoes de registros ou mais e fazer um BROWSE, pro DBF é facil, mais pro SQL fica dificil, mais adotando o FILTRO em SQL vc vera que em RELATORIOS vai acabar e muito com DO WHILE...IF ISSO... IF AQUILO, com apenas uma QUERY "consulta" em SQL vc praticamente monta todo o resultado da consulta. Te digo, quando passar para SQL, vc nem vai mais querer saber de DBF, vale muito a pena mudar para SQL, no meu caso atualmente estou usando MYSQL, mais ja estou mudando para POSTGRE, pois a consulta é muito mais rápida que no MYSQL. E outra o MYSQL não vai mais evoluir. Espero ter ajudado Jackson Douglas Boa Vista FWH 11.05 Lamborguini ( isso voa gente ) PellesC+xH 1.2.1 + FAST REPORT + DBFCDX + SQL 100% email : miragerr@osite.com.br MSN : jackson_rl@hotmail.com SKYPE : jackson_rr Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted March 26, 2012 Report Share Posted March 26, 2012 Achei que a pesquisa sensitive não tinha como, pois estou so nos primeiro teste , mais vi um exemplo do Sergio Imperio que funciona perfeito utilizando array, creio que seria mais ou menos da forma que o Gilmer mencionou acima, vi o codigo e achei bem pratico, sem limites de registros... Abraços Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Quote Link to comment Share on other sites More sharing options...
Wellington Vieira Posted March 27, 2012 Report Share Posted March 27, 2012 #include "FiveWin.ch" #include "common.ch" #include "postgres.ch" #include "Folder.ch" #define btn_width 12 #define btn_height 10 // Pesquisa sensitive a medida que vai digitando ele vai selecionando o que se digita.................................... // no POSTGRESQL................. function listbox_clientes() local lobjet private salvavarPesCli := "A" private opimcli define dialog listbox_clientes title oTitleListboxClientes from 000,000 to 620,1020 pixel brush obrush //transparent //STYLE nOr( WS_BORDER, WS_POPUP, WS_VISIBLE ) @ 0.1,0.3 to 1.5,72.7 label "" of listbox_clientes color corfrtsay,corfdosay @ 1.7,0.3 to 19.9,72.7 label "" of listbox_clientes color corfrtsay,corfdosay @ 20,0.3 to 22,72.7 label "" of listbox_clientes color corfrtsay,corfdosay asamplzclientes = {""} arecclientes = {} atipoclientes = {"Cliente","Fantasia","Parte do nome","CNPJ","CPF","Cidade","Estado"} mtipoclientes = "Cliente" mpesquisacliente = space(50) @ 009,005 say "Pesquisar por: " of listbox_clientes font mtahoma size 050,9 color corfrtsay,corfdosay pixel @ 007,050 combobox otipoclientes var mtipoclientes items atipoclientes font mtahoma size 050,25 of listbox_clientes color corfrtget,corfdoget pixel @ 007,101 get opesquisacliente var mpesquisacliente picture "@!" font mtahoma size 405,12 of listbox_clientes color corfrtget,corfdoget pixel @ 029.5,005 listbox obrzclientes fields asamplzclientes[obrzclientes],asamplzclientes[obrzclientes],; asamplzclientes[obrzclientes],asamplzclientes[obrzclientes],asamplzclientes[obrzclientes],; asamplzclientes[obrzclientes],asamplzclientes[obrzclientes]; headers "Codigo","Cliente","Fantasia","CNPJ/CPF","Cidade","Estado","Estado" FIELDSIZES 050,305,210,150,160,050,045; size 500,247 ; pixel of listbox_clientes obrzclientes:nClrPane := {|| iif(asamplzclientes[obrzclientes] = 'Ativo',corlstbxnormal,iif(empty(asamplzclientes[obrzclientes]),corlstbxnormal,corlstbxdifere)) } obrzclientes:nLineStyle := 2 obrzclientes:lCellStyle = .t. obrzclientes:lAutoSkip = .t. obrzclientes:SetArray(asamplzclientes) obrzclientes:bGoTop = { || obrzclientes:nat := 1 } obrzclientes:bGoBottom = { || obrzclientes:nat := Eval( obrzclientes:bLogicLen ) } obrzclientes:bSkip = { | nWant, nOld | nOld := obrzclientes:nat, obrzclientes:nat += nWant,; obrzclientes:nat := Max( 1, Min( obrzclientes:nat, Eval( obrzclientes:bLogicLen ) ) ),; obrzclientes:nat - nOld } obrzclientes:bLogicLen = { || Len( asamplzclientes ) } obrzclientes:cAlias = "Array" obrzclientes:nColAct := 1 obrzclientes:lMChange := .F. obrzclientes:SetFocus() obrzclientes:Refresh() @ 289,012 buttonbmp olisclibut00 bitmap "bmpnovo" left prompt "Novo" textright size 040,12 font obotaof of listbox_clientes pixel @ 289,056 buttonbmp olisclibut01 bitmap "bmpalterar" left prompt "Altera" textright size 040,12 font obotaof of listbox_clientes pixel @ 289,100 buttonbmp olisclibut02 bitmap "bmpexcluir" left prompt "Excluir" textright size 040,12 font obotaof of listbox_clientes pixel @ 289,144 buttonbmp olisclibut03 bitmap "" left prompt "Inatividade" textright size 040,12 font obotaof of listbox_clientes pixel @ 289,452 buttonbmp olisclibut10 bitmap "bmpsair" left prompt "Sair" textright size 040,12 font obotaof of listbox_clientes pixel action ( listbox_clientes:end() ) activate dialog listbox_clientes center on init pesquisa_cliente() salvavarPesCli := "A" opimcli:end() return nil function pesquisa_cliente() define timer opimcli interval 70 action psq_cliente() activate timer opimcli return nil function psq_cliente() if salvavarPesCli <> opesquisacliente:cText salvavarPesCli := opesquisacliente:cText enche_cliente() endif return nil function enche_cliente() if empty(opesquisacliente:cText) asamplzclientes = {""} arecclientes = {} obrzclientes:SetArray(asamplzclientes) obrzclientes:refresh() return .t. endif asamplzclientes = {} arecclientes = {} if mtipoclientes = "Cliente" cquery := "select * from fncliente where " +; "substr(razaosocial,1"+","+alltrim(str(len(alltrim(opesquisacliente:cText))))+")"+; " = " + "'"+alltrim(opesquisacliente:cText)+"'" +; " order by razaosocial asc;" elseif mtipoclientes = "Fantasia" cquery := "select * from fncliente where " +; "substr(fantasia,1"+","+alltrim(str(len(alltrim(opesquisacliente:cText))))+")"+; " = " + "'"+alltrim(opesquisacliente:cText)+"'" +; " order by fantasia asc;" elseif mtipoclientes = "Parte do nome" cquery := "select * from fncliente where " +; "razaosocial like " + "'%"+alltrim(opesquisacliente:cText)+"%'"+; " order by razaosocial asc;" elseif mtipoclientes = "CNPJ" cquery := "select * from fncliente where " +; "substr(numerodocumentonacional,1"+","+alltrim(str(len(alltrim(opesquisacliente:cText))))+")"+; " = " + "'"+alltrim(opesquisacliente:cText)+"'" +; " and pessoafisicajuridica = 'J'"+; " order by numerodocumentonacional asc;" elseif mtipoclientes = "CPF" cquery := "select * from fncliente where " +; "substr(numerodocumentonacional,1"+","+alltrim(str(len(alltrim(opesquisacliente:cText))))+")"+; " = " + "'"+alltrim(opesquisacliente:cText)+"'" +; " and pessoafisicajuridica = 'F'"+; " order by numerodocumentonacional asc;" elseif mtipoclientes = "Cidade" cquery := "select * from fncliente where " +; "substr(cidadeibge,1"+","+alltrim(str(len(alltrim(opesquisacliente:cText))))+")"+; " = " + "'"+alltrim(opesquisacliente:cText)+"'" +; " order by cidadeibge asc, razaosocial asc;" elseif mtipoclientes = "Estado" cquery := "select * from fncliente where " +; "substr(uf,1"+","+alltrim(str(len(alltrim(opesquisacliente:cText))))+")"+; " = " + "'"+alltrim(opesquisacliente:cText)+"'" +; " order by uf asc, razaosocial asc;" endif oquery := oServer:Query(cquery) DO WHILE ! oquery:Eof() a = oquery:Fieldget(oquery:Fieldpos('seqcliente')) b = oquery:Fieldget(oquery:Fieldpos('razaosocial')) fantasia = oquery:Fieldget(oquery:Fieldpos('fantasia')) c = oquery:Fieldget(oquery:Fieldpos('pessoafisicajuridica')) d = oquery:Fieldget(oquery:Fieldpos('numerodocumentonacional')) e = oquery:Fieldget(oquery:Fieldpos('cidadeibge')) f = oquery:Fieldget(oquery:Fieldpos('uf')) ativo = oquery:Fieldget(oquery:Fieldpos('ativo')) if !empty(a) aadd( asamplzclientes,{alltrim(str(a)),b,fantasia,iif(c = "J",transform(d,"@r 99.999.999/9999-99"),transform(d,"@r 999.999.999-99")),; e,f,iif( ativo = .t.,"Ativo","Inativo" ) } ) aadd( arecclientes,a ) endif oquery:Skip() END oquery:destroy() if empty( asamplzclientes ) asamplzclientes = {""} arecclientes = {} endif obrzclientes:SetArray(asamplzclientes) obrzclientes:refresh() return nil id=code>id=code>|Wellington Vieira| |Uberlândia/MG| |E-mail:wellington_programador@hotmail.com| Quote Link to comment Share on other sites More sharing options...
Erciley Junior Posted March 27, 2012 Report Share Posted March 27, 2012 Olá, aqui usamos pesquisa incremental, mas se aà você ficar usando like em 700k registros, aà ferr@ o parmera mesmo né. Aqui fazemos a pesquisa incremental em cima do array que já obtivemos através do select, fica excelente (tem que conhecer a classe um pouquinho para ir posicionando o browse corretamente). Quanto ao Ãndice, use o explain que o Luisão falou para você testar. O Ãndice é escolhido automaticamente pelo mysql, com base nos Ãndices que você criou, então igual no DBF, faça o select, colocando no where, a sequência correta dos campos do Ãndice. Exemplo tosco: CREATE INDEX idx_01 ON CLIENTES(regiao,estado,chucrutes) Correto: id=code>id=code>Errado: id=code>id=code>Ãndice em mysql é tão importante quanto em DBF, então, mesmo que o explain esteja retornando que está sendo usado um Ãndice, veja se não seria necessário complementar esse Ãndice para melhorar a performance. Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY) NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO Quote Link to comment Share on other sites More sharing options...
Erciley Junior Posted March 27, 2012 Report Share Posted March 27, 2012 Mais uma coisa Vagner... ^^ nesse programa, talvez você tenha razão que em DBF é mais rápido... mas procure um programa seu para converter para mysql, aqueles programinhas que você lê uns 4 arquivos para apresentar uma informação na tela, aà você vai ver a diferença de velocidade dos JOIN com os DBSEEK ^^ Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY) NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO Quote Link to comment Share on other sites More sharing options...
vagner Posted March 27, 2012 Author Report Share Posted March 27, 2012 Então. Como não quero fazer pesquisa incremental em cima de Array por causa que o ascan, é extremamente lento em relação ao DbSeek, estou testando pegar do sql e jogar para um DBF temporário em memória, que é extemamente rápido ainda mais com Ãndices em memória . Ou Seja, NÃO vou deixar meus DBF´s por nada ou até aparecer algo mais rápido (KKKKKKKKKK) Bom, agora que já consegui essa parte, vem o restante Depois que eu dei um select no arquivo, existe algum comando que eu crie um txt direto, ou preciso realmente ir registro por registro gravando a linha ? Algo como no DBF copy to sdf por exemplo, mas se não tiver algo assim, fazer o que né ? Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 27, 2012 Report Share Posted March 27, 2012 Vagner, você já testou o SQLRDD?? se não me engano, ele faz isso e muito mais q vc. quer. Existe uma versão DEMO do SQLRDD Extreme ? Sim! Basta acessar o nosso web site e baixar: http://www.xharbour.com.br/downloads.html Marcelo Lombardo Abs, João Santos - São Paulo. joao@pleno.com.br Fone: (11) 3106-2832 http://pt-br.facebook.com/people/Jo%C3%A3o-Santos/100001195894196 FWH 2.7 - xHARBOUR WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
qiinfo Posted March 27, 2012 Report Share Posted March 27, 2012 Olá Vagner, No harbour tem o adordd. Exemplo de uso: #include "adordd.ch" REQUEST ADORDD function Main() USE test00 VIA "ADORDD" TABLE "ACCOUNTS" MYSQL ; FROM "www.freesql.org" USER "myuser" PASSWORD "mypass" Browse() USE return nil Abraços, Rossine Harbour, Harbour, Harbour -> 3 vezes Harbour Quote Link to comment Share on other sites More sharing options...
vagner Posted March 27, 2012 Author Report Share Posted March 27, 2012 citação:Vagner, você já testou o SQLRDD?? se não me engano, ele faz isso e muito mais q vc. quer. Existe uma versão DEMO do SQLRDD Extreme ? Sim! Basta acessar o nosso web site e baixar: http://www.xharbour.com.br/downloads.html Marcelo Lombardo Abs, João Santos - São Paulo. joao@pleno.com.br Fone: (11) 3106-2832 http://pt-br.facebook.com/people/Jo%C3%A3o-Santos/100001195894196 FWH 2.7 - xHARBOUR WorkShop.Exe id=quote>id=quote>Oi, Vc já tentou rodar os demos ? Eu não consegui nenhum, compilou, mas aparece uma tela qndo vc escolhe o banco, ela fecha Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 27, 2012 Report Share Posted March 27, 2012 Nao, nunca cheguei a testar, melhor falar com o Marcelo: Marcelo Lombardo Telefone: 11 3775-7888 Celular.: 11 9319 9310 Twitter.: MLombardo_Now www.xharbour.com.br João Santos - São Paulo. joao@pleno.com.br Fone: (11) 3106-2832 http://pt-br.facebook.com/people/Jo%C3%A3o-Santos/100001195894196 FWH 2.7 - xHARBOUR WorkShop.Exe Editado por - kapiaba on 27/03/2012 14:28:18 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.