Luiz Arruda (ICO) Posted August 18, 2010 Report Share Posted August 18, 2010 Bom Dia.. Tô fazendo assim para criar Index com MySql id=code> id=code>Onde NOMECLIENTE imagino que seja o nome do index, CADCLI á tabela e NOME_CLI o campo... isto tá certo ??? Outra coisa.. como que eu seto o index ?? tipo ; Set Index to NOMECLIENTE desde já Obrigado Retorne avisando se a dica funcionouid=red> Luiz Arruda Corumbá - MS ico.corumba@gmai.com Editado por - ico on 20/08/2010 16:40:23 Editado por - ico on 01/09/2010 09:07:06 Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted August 18, 2010 Author Report Share Posted August 18, 2010 Bom Dia.. Tô fazendo assim para criar Index com MySql id=code> id=code>Onde NOMECLIENTE imagino que seja o nome do index, CADCLI á tabela e NOME_CLI o campo... isto tá certo ??? Outra coisa.. como que eu seto o index ?? tipo ; Set Index to NOMECLIENTE desde já Obrigado Retorne avisando se a dica funcionouid=red> Luiz Arruda Corumbá - MS ico.corumba@gmai.com Editado por - ico on 20/08/2010 16:40:23 Editado por - ico on 01/09/2010 09:07:06 Quote Link to comment Share on other sites More sharing options...
joaosolution Posted August 18, 2010 Report Share Posted August 18, 2010 Luiz Boa tarde Não sou especialista! Mas para ordenar as consultas, você deve utilizar ORDER BY nos comandos SELECT Ex.: SELECT * FROM CADCLI ORDER BY NOME_CLI Os indices no mysql são importantes para melhorar a performance das consultas, tornando-as mas rápidas. Att João Bosco Contagem/MG FWH 10.6b xHb 1.2.1 WorkShop 4.5 PellesC SQLLIB Quote Link to comment Share on other sites More sharing options...
Luisão Posted August 18, 2010 Report Share Posted August 18, 2010 Só vou postar para concordar com o João. Você só vai precisar dos comandos xBase se for trabalhar com comandos xBase (Acha, sério ??? falei o óbvio hehehehe) Então é importante ter os Ãndices para que os "Where", "Order By", etc sejam otimizados. Mas você vai conseguir ordenar e filtrar seus dados mesmo sem Ãndices. Resumidamente, é isso. Luis Fernando Jr. (Luisão) Leme/SP -- FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script E-Mail: juninho.luisao@gmail.com MSN: juninho_luisao@hotmail.com Skype: luis.fernando.jr Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted August 18, 2010 Author Report Share Posted August 18, 2010 Hummmm!!! eu já tava entrando no browse com Order By Nome,, mas preciso procar por Order by Cod_Cli em tempo de execução ??? Y agora ?? Busca Sensitiva com SQL é possivel ?? Vou dar uma pesquisada.. mas se alguém quiser adiantar o expediente é que meu ADSL tá Pho... hoje tá não tá estabilizando.. o "tenico" fala que não tem nada e a OI telecom diz que o sinal está normal... Abraços.. Retorne avisando se a dica funcionouid=red> Luiz Arruda Corumbá - MS ico.corumba@gmai.com Quote Link to comment Share on other sites More sharing options...
Luisão Posted August 18, 2010 Report Share Posted August 18, 2010 Você faz o Order By sempre com o nome do campo. O MySQL se encarrega de escolher o melhor Ãndice. Você pode ver se ele está usando um indice ou não, usando Explain Select * From Cliente Order By Nome, por exemplo. Você pode também fazer Select * from Cliente Where Nome Like 'Lui%' Order By Nome, desse modo, ele vai mostrar todos os clientes que comecem com "Lui". Você pode também fazer Where Nome Like '%Luis%', que irá mostrar todos os clientes que tenham Luis em qualquer parte do nome. Bom, e agora é ir treinando =) Luis Fernando Jr. (Luisão) Leme/SP -- FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script E-Mail: juninho.luisao@gmail.com MSN: juninho_luisao@hotmail.com Skype: luis.fernando.jr Quote Link to comment Share on other sites More sharing options...
joaosolution Posted August 18, 2010 Report Share Posted August 18, 2010 Bom! Continuando! No caso da busca sensitiva retirei dos sistemas pois fica muito lento. Banco de dados com 1.000.000 de registros Neste a pessoa digita o nome completo e depois solicita a busca. O número de linhas a ser retornado e varrido pelo BD é bêm menor. Se você faz uma busca por uma ou duas letras é lento, se coloca dois nomes o tempo da busca reduz bastante. Att João Bosco Contagem/MG FWH 10.6b xHb 1.2.1 WorkShop 4.5 PellesC SQLLIB Quote Link to comment Share on other sites More sharing options...
laurenti Posted August 18, 2010 Report Share Posted August 18, 2010 Eu indexei a tabela de cliente pelo nome e na busca incremental quando coloco 'select matricula,nome,cpf from cliente where nome like"'+cString+"% ', o where automaticamente já seleciona o indice associado ao campo nome. Obs coloque no select somente os campos que você vai precisar apresentar na pesquisa FWH 8.08/XHB1.1/Pelles/Mysql/fastreport laurentinocarlos@gmail.com Montes Claros MG Quote Link to comment Share on other sites More sharing options...
marcio1361303176 Posted August 18, 2010 Report Share Posted August 18, 2010 Vou postar algo. Não sei se pode ajudar. mas Vamos lá IF(! Table("vales_vendedor") ) If MsgYesNo("Tabela cadastro de VALES_VENDEDOR Não encontrada no BANCO DE DADOS"+CRLF+"Deseja cria-la ?",SISTEMA) BEGIN TRANSACTION cCMDSQL := " CREATE TABLE `vales_vendedor` ( " cCMDSQL := cCMDSQL + " `ID_VALES_VENDEDOR` int(11) NOT NULL auto_increment, " cCMDSQL := cCMDSQL + " `DATA_VALE_VENDEDOR` DATE DEFAULT '0000-00-00' COMMENT 'Data de Lançamento do Vale do Vendedor', " cCMDSQL := cCMDSQL + " `OBSERVACAO` varchar(30) default '' COMMENT 'Observação do Vale do Vendedor', " cCMDSQL := cCMDSQL + " `VALOR_VALE_VENDEDOR` decimal(18,2) default 0, " cCMDSQL := cCMDSQL + " `CODIGO_VENDEDOR` int(06) default 0 COMMENT 'Código do Vendedor', " cCMDSQL := cCMDSQL + " PRIMARY KEY (`ID_VALES_VENDEDOR`) " cCMDSQL := cCMDSQL + ") ENGINE=InnoDB DEFAULT CHARSET=latin1 " SqlExecute( cCMDSQL ) END TRANSACTION ENDIF ENDIF * Agora uma montagem de browse com possibilidade de ordenar clicanco na coluna selecionanda. * Se tiver alguma coisa a melhorar, me avisem ok... IF SELECT("vales_vendedor") != 0 vales_vendedor->(DbCloseArea()) ENDIF cQuery:='select * from vales_vendedor WHERE CODIGO_VENDEDOR = ' + TRANSFORMA_SQL(T_CODI_VENDEDOR,'N',06,0) + ' ORDER BY DATA_VALE_VENDEDOR DESC ' use sql cQuery alias "vales_vendedor" new via 'MYSQL' vales_vendedor->( DbGoTop()) oDB_VALES_VENDEDOR := TXBrowse():New( oDlg_CD_VALE_VENDEDOR ) oDB_VALES_VENDEDOR:cAlias := "vales_vendedor" oDB_VALES_VENDEDOR:bKeyDown :={|nKey| if(nkey=13,( T_ID_VALE_VENDEDOR:=vales_vendedor->ID_VALES_VENDEDOR ),) } oDB_VALES_VENDEDOR:bChange :={|| T_ID_VALE_VENDEDOR:=vales_vendedor->ID_VALES_VENDEDOR } oDB_VALES_VENDEDOR:bLDblClick :={|| T_ID_VALE_VENDEDOR:=vales_vendedor->ID_VALE_VENDEDOR } oDB_VALES_VENDEDOR:nMarqueeStyle := MARQSTYLE_HIGHLROW oDB_VALES_VENDEDOR:nColDividerStyle := LINESTYLE_BLACK oDB_VALES_VENDEDOR:nRowDividerStyle := LINESTYLE_BLACK oDB_VALES_VENDEDOR:lColDividerComplete := .T. oDB_VALES_VENDEDOR:lFooter := .F. oDB_VALES_VENDEDOR:lRecordSelector := .T. oDB_VALES_VENDEDOR:nHeaderLines := 1.5 oDB_VALES_VENDEDOR:nDataLines := 1.5 oDB_VALES_VENDEDOR:bClrStd := {|| { CLR_BLACK, IIF((vales_vendedor->(ORDKEYNO()))%2==0, rgb(168,211,255), rgb(255,255,255) ) } } oDB_VALES_VENDEDOR:bClrSelFocus := {|| { CLR_WHITE, CLR_BLUE } } *---------------------------------------------------------------------------- oCol := oDB_VALES_VENDEDOR:AddCol() oCol:bStrData := { || DTOC(vales_vendedor->DATA_VALE_VENDEDOR) } oCol:cHeader := "Data Lanc" oCol:cFooter := " " oCol:nDataStrAlign := AL_LEFT oCol:nHeadStrAlign := AL_LEFT oCol:bLClickHeader := {|r,c,f,o| ( T_CAMPO_ORDENAR:='DATA_VALE_VENDEDOR', ORDENA_VALES_VENDEDOR() )} oCol:cSortOrder := 'DATA_VALE_VENDEDOR' *---------------------------------------------------------------------------- oCol := oDB_VALES_VENDEDOR:AddCol() oCol:bStrData := { || (vales_vendedor->OBSERVACAO) } oCol:cHeader := "Observação" oCol:cFooter := " " oCol:nDataStrAlign := AL_LEFT oCol:nHeadStrAlign := AL_LEFT oCol:bLClickHeader := {|r,c,f,o| ( T_CAMPO_ORDENAR:='OBSERVACAO', ORDENA_VALES_VENDEDOR() )} oCol:cSortOrder := 'OBSERVACAO' *---------------------------------------------------------------------------- oCol := oDB_VALES_VENDEDOR:AddCol() oCol:bStrData := { || TRANSFORM(vales_vendedor->VALOR_VALE_VENDEDOR,'@E 999,999,999.99') } oCol:cHeader := "Valor" oCol:cFooter := " " oCol:nDataStrAlign := AL_RIGHT oCol:nHeadStrAlign := AL_LEFT oCol:bLClickHeader := {|r,c,f,o| ( T_CAMPO_ORDENAR:='VALOR_VALE_VENDEDOR', ORDENA_VALES_VENDEDOR() )} oCol:cSortOrder := 'VALOR_VALE_VENDEDOR' *---------------------------------------------------------------------------- oDB_VALES_VENDEDOR:CreateFromResource(4027) * *================================================================================= /// Pesquisa no Banco de dados Dependedo da Chave escolhida ///============================================================================= STATIC FUNCTION ORDENA_VALES_VENDEDOR() IF cOrder = 'A' cOrder := 'D' ELSE cOrder := 'A' ENDIF T_CAMPO_ORDENAR := 'DATA_VALE_VENDEDOR' IF SELECT("vales_vendedor") != 0 vales_vendedor->(DbCloseArea()) ENDIF cQuery:='select * from vales_vendedor ' cQuery := cQuery + ' ORDER BY ' + ALLTRIM(T_CAMPO_ORDENAR) + IF(cOrder='A',' DESC',' ASC') use sql cQuery alias "vales_vendedor" new via 'MYSQL' vales_vendedor->( DbGoTop()) oDB_VALES_VENDEDOR: GoTop() oDB_VALES_VENDEDOR: Refresh() Return(.t.) id=code>id=code>vejam o Resultado. Posso ordenar por quaquer campo da tabela e pesuisar por qualquer campo que ele esteja ordenado... vejam a imagem abaixo outro exemplo informaisvrb@gmail.com FWHX 2.6+ SQLLIB + xDev + rpv + MYSQL 5.0 / fwh808+sqllib(atual) Msn.: mastermarvrb@msn.com Quote Link to comment Share on other sites More sharing options...
neto_23 Posted August 19, 2010 Report Share Posted August 19, 2010 Essa tela de consulta ficou show Dar para fazer com fw2.7 ? e qual a versão do brwose? fw27harbour-xDev Studio-bcc55-Mysql-Pelles cp80.cp80@hotmail.com.br ; Quote Link to comment Share on other sites More sharing options...
Luisão Posted August 19, 2010 Report Share Posted August 19, 2010 E mais uma dica, para utilizar a pesquisa incremental sem deixar muito lento, você pode colocar no final de seu select um LIMIT 100, por exemplo. Desta forma, se você pesquisar por algo que retornaria 5000 registros e levaria um certo tempo, ele vai retornar apenas 100 registros e agilizar o processo. E essa ideia do Marcio de ordenar por um campo e filtrar por ele é muito boa. Eu não uso xBrowse e uma vez alterei a classe WBrowse para fazer isso. =) (mas no final acabei nem usando) Luis Fernando Jr. (Luisão) Leme/SP -- FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script E-Mail: juninho.luisao@gmail.com MSN: juninho_luisao@hotmail.com Skype: luis.fernando.jr Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted August 19, 2010 Author Report Share Posted August 19, 2010 Bom Dia a todos.. Veja o que aconteceu ao clicar no botão "buscar" O inicio do PRG tá assim; USE "CADCLI" as "Select * from CADCLI ORDER BY NOME_CLI" Alias "CADCLI" New Via "MySQL" sqlexec("create index NOMECLIENTE on CADCLI (NOME_CLI)") < "Aqui Crio o Browse" > Redefine Button obtn prompt "Buscar" ID 4006 Of oDlg Action Busca(oBrw,cPegaNome) id=code>id=code>Na Proc de pesquisa tá assim ; Procedure Busca(oBrw,cPegaNome) cQuery:='select * from CADCLI ' cQuery := cQuery + ' ORDER BY ' + ALLTRIM(NOME_CLI) use sql cQuery alias "cQuery" new via 'MYSQL' CADCLI->( DbGoTop()) oBRW[1]:GoTop() oBrw[1]:Refresh() Return(.t.)id=code>id=code>Onde tá errado.. 6 vão ter um pouco de pacência comigo.. sempre iniciei alguma coisa em SQL mas nunca dei continuidade... agora vou ingressar de vez no mundo SQL.. e vou perturbar muito por aqui Obrigado.. Retorne avisando se a dica funcionouid=red> Luiz Arruda Corumbá - MS ico.corumba@gmai.com Quote Link to comment Share on other sites More sharing options...
Luisão Posted August 19, 2010 Report Share Posted August 19, 2010 O erro está aqui: ' ORDER BY ' + ALLTRIM(NOME_CLI) Ao fazer isso, sua query está ficando Order By Luiz, por exemplo, mas Luiz é o valor de um campo e não o nome do campo. O correto seria "...Where NOME_CLI LIKE '"+Alltrim(cPegaNome)+"%' Order By NOME_CLI" E lembre-se de fazer o USE SQL novamente, mas dessa vez sem usar o NEW, pois você vai "atualizar" a área já aberta. A parte onde está criando o indice não precisa mais, pois se ela já foi executada uma vez, já estará criado. Luis Fernando Jr. (Luisão) Leme/SP -- FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script E-Mail: juninho.luisao@gmail.com MSN: juninho_luisao@hotmail.com Skype: luis.fernando.jr Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted August 19, 2010 Author Report Share Posted August 19, 2010 Certo.. deu uma clareada.. mas o que vem antes de ; "...Where NOME_CLI LIKE '"+Alltrim(cPegaNome)+"%' Order By NOME_CLI"id=code>id=code>No lugar dos "..." ? Retorne avisando se a dica funcionouid=red> Luiz Arruda Corumbá - MS ico.corumba@gmai.com Quote Link to comment Share on other sites More sharing options...
Luisão Posted August 19, 2010 Report Share Posted August 19, 2010 Ah... os "..." é o seu Select. Coloquei ... para digitar menos =) Seria o select * from CADCLI Luis Fernando Jr. (Luisão) Leme/SP -- FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script E-Mail: juninho.luisao@gmail.com MSN: juninho_luisao@hotmail.com Skype: luis.fernando.jr Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted August 19, 2010 Author Report Share Posted August 19, 2010 Luisão.. Mesmo erro.. só que agora demora + um pouquinho pra aparecer.. como se tivesse processando alguma coisa... cQuery:="select * from CADCLI Where NOME_CLI LIKE "+Alltrim(cPegaNome)+"%" Order By NOME_CLI" use sql cQuery alias "cQuery" new via 'MYSQL' CADCLI->( DbGoTop()) oBRW[1]:GoTop() oBrw[1]:Refresh() Return(.t.)id=code>id=code>Retorne avisando se a dica funcionouid=red> Luiz Arruda Corumbá - MS ico.corumba@gmai.com Quote Link to comment Share on other sites More sharing options...
joaosolution Posted August 19, 2010 Report Share Posted August 19, 2010 Luiz Entrometendo! Aki no primeiro Select você colocou o Alias "CADCLI", Na entrada da pesquisa. Na consulta vc colocou Alias "cQuery"... Att João Bosco Contagem/MG FWH 10.6b xHb 1.2.1 WorkShop 4.5 PellesC SQLLIB Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted August 19, 2010 Author Report Share Posted August 19, 2010 Joao e Luisão agora fiz assim, Procedure Busca(oBrw,cPegaNome) /* cQuery:='select * from CADCLI ' */ cQuery:= "select * from CADCLI Where NOME_CLI LIKE '"+Alltrim(cPegaNome)+"%' Order By NOME_CLI" use sql cQuery alias "cQuery" new via 'MYSQL' CADCLI->( DbGoTop()) oBRW[1]:GoTop() oBrw[1]:Refresh() Return(.t.)id=code>id=code>O erro sumiu mas não faz busca nem uma e nem atualiza o Browse.. Se eu clico no botão novamente mostra esse erro ; Error description: Error DBCMD/1011 Alias already in use: cQueryid=code>id=code>Como reabro o BD ao sair da consulta ?? Num repara não.. to mais perdido que cão caÃdo de mudança... Retorne avisando se a dica funcionouid=red> Luiz Arruda Corumbá - MS ico.corumba@gmai.com Quote Link to comment Share on other sites More sharing options...
Anderson.OL Posted August 19, 2010 Report Share Posted August 19, 2010 Eu tenho uma classe de pesquisa generica e incremental, vou criar um sample e tentar colocar em dicas... Fw 2.6 | Clipper 5.3b | DBFCDX -- FwxH 8.02 | xHb 1.1.0 | DBFCDX -- FwxH 9.06 | xHb 1.2.1 | SqlLibid=brown> O burro nunca aprende, o inteligente aprende com sua própria experiência, o sábio com a experiência dos outros. Quote Link to comment Share on other sites More sharing options...
Anderson.OL Posted August 19, 2010 Report Share Posted August 19, 2010 Postei no megaupload, estava dando erro em dicas, pode ser pelo tamanho do arquivo, 5MB Bem, basta seguir o passo a passo abaixo para testar: 1 - Antes de executar o programa configure o arquivo CONNECT.INI - Na variavel ADDRESS informe o ip do seu servidor MySql - Configure as demais variaveis conforme necessário 2 - Execute o programa pelo DOS passando o parametro "RESTORE" - G:\prog\FiveWin\Pesquisa MySql>Farma1.EXE restore - Selecionar o arquivo.SQL que acompanha o programa 3 - Posteriormente execute o programa normalmente. - Selecionar Cadastro de produtos > Botão pesquisar id=code>id=code>O arquivo pode ser baixado no seguinte link: http://www.megaupload.com/?d=E7E7ZEHS Tem uma tela de cadastro de produtos com 27 mil registros e a pesquisa incremental está instantânea! Fw 2.6 | Clipper 5.3b | DBFCDX -- FwxH 8.02 | xHb 1.1.0 | DBFCDX -- FwxH 9.06 | xHb 1.2.1 | SqlLibid=brown> O burro nunca aprende, o inteligente aprende com sua própria experiência, o sábio com a experiência dos outros. Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted August 19, 2010 Author Report Share Posted August 19, 2010 Puxa!!! eu só queria filtrar dados no Browse.. Tô paradão no tempo... Eu amo DBF !!! Retorne avisando se a dica funcionouid=red> Luiz Arruda Corumbá - MS ico.corumba@gmai.com Quote Link to comment Share on other sites More sharing options...
Anderson.OL Posted August 19, 2010 Report Share Posted August 19, 2010 citação: Puxa!!! eu só queria filtrar dados no Browse.. Tô paradão no tempo... Eu amo DBF !!! Retorne avisando se a dica funcionouid=red> Luiz Arruda Corumbá - MS ico.corumba@gmai.com id=quote>id=quote>Usa Skype ? Fw 2.6 | Clipper 5.3b | DBFCDX -- FwxH 8.02 | xHb 1.1.0 | DBFCDX -- FwxH 9.06 | xHb 1.2.1 | SqlLibid=brown>O burro nunca aprende, o inteligente aprende com sua própria experiência, o sábio com a experiência dos outros. Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted August 19, 2010 Author Report Share Posted August 19, 2010 ainda não... Abraços.. Retorne avisando se a dica funcionouid=red> Luiz Arruda Corumbá - MS ico.corumba@gmai.com Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted August 20, 2010 Author Report Share Posted August 20, 2010 Ééééé´pessoal, Não dá mais o tempo tá acabando de novo... ACHO QUE VOU ABANDONAR NOVENTE ESSE NEGOCIO DE SQLid=size5> Abrigado a todos... Até a próxima tentativa... Uma simples filragem de nomes não deu em nada imagina mais pra frente... Retorne avisando se a dica funcionouid=red> Luiz Arruda Corumbá - MS ico.corumba@gmai.com Quote Link to comment Share on other sites More sharing options...
Luisão Posted August 20, 2010 Report Share Posted August 20, 2010 Luiz, fica frio. Eu to meio enrolado, mas no final de semana posto alguma coisa nesse tópico para ajudar. Mas não desanime não, "abrace" o futuro com MySQL, Skype, etc... =) Luis Fernando Jr. (Luisão) Leme/SP -- FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script E-Mail: juninho.luisao@gmail.com MSN: juninho_luisao@hotmail.com Skype: luis.fernando.jr 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.