ola amigos. alguem usa banco de dados postrgres ou mysql, tenho um sistema feito em clipper+dbf e preciso migrar para esses bando de dados postrgres ou mysql, alguem tem os caminhos das pedras pra me dar uma ajuda?
Robson
bando de dados postgres ou mysql.
Moderador: Moderadores
bando de dados postgres ou mysql.
S COM INFORMÁTICA
CLIPPER 5.3 / FIVEWIN 2.0 / BLINKER 7
XHARBOUR/ BCC582
CLIPPER 5.3 / FIVEWIN 2.0 / BLINKER 7
XHARBOUR/ BCC582
bando de dados postgres ou mysql.
Eu ouvi falar, e até queria a confirmação dos experientes colegas aqui do fórum, que seria mais fácil migrar de dbf para FireBird
lugab
bando de dados postgres ou mysql.
SCOM bando de dados é Acess.. rsrs (brincadeira... se alguém usa...)
Bom falando sério vc disse q tem clipper + dbf e quer migrar, agora pra ter uma visão melhor e quem sabe melhor orientar, qual segmento q seu sistema atende e qual seria uma idéia de tamanho de tabelas (do seu banco no geral) num cliente de grande porte?
Pergunto pois os BD tem diferenças, alguns tem limites de tamanho, tipos de licenças e etc...
Outra questão q vc tem q pensar é: Porque realmente eu preciso mudar? Pois se vc usa o clipper poderia migrar para o xHarbour ou o Harbour e ter ganhos de performance e talvez por um tempo continuar com os dbfs e posteriormente migrar, o que em xHarbour ou Harbour é mais fácil pois vc terá acesso nativo (necessita conhecimento de SQL) ou através de RDDs (se bem q vc tem isso no clipper tb).
[]´s
Bom falando sério vc disse q tem clipper + dbf e quer migrar, agora pra ter uma visão melhor e quem sabe melhor orientar, qual segmento q seu sistema atende e qual seria uma idéia de tamanho de tabelas (do seu banco no geral) num cliente de grande porte?
Pergunto pois os BD tem diferenças, alguns tem limites de tamanho, tipos de licenças e etc...
Outra questão q vc tem q pensar é: Porque realmente eu preciso mudar? Pois se vc usa o clipper poderia migrar para o xHarbour ou o Harbour e ter ganhos de performance e talvez por um tempo continuar com os dbfs e posteriormente migrar, o que em xHarbour ou Harbour é mais fácil pois vc terá acesso nativo (necessita conhecimento de SQL) ou através de RDDs (se bem q vc tem isso no clipper tb).
[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
bando de dados postgres ou mysql.
OLA Fladimir
atende e qual seria uma idéia de tamanho de tabelas (do seu banco no geral) num cliente de grande porte?
R: No caso andei fazendo pesquisas na internet e ja como vou começar do zero me aconselharão a fazer com POSTGRESQL por se um banco totalmente free e a performace do Mysql com ele fica se milessimos de segundos mais rapido com mysql, mas que o POSTRGRES ja é mais pra grande porte e mais seguro.
Outra questão q vc tem q pensar é: Porque realmente eu preciso mudar?
R: pelo fato de poder executar comandos sql e mais rapidez ma busca de dados gerando menos trafico na rede e mais segurança porque os DBF não tem segurança menhuma qualque um que tenha um pouco de conhecimento usa um DBU ou DBASE e abre os arquivos sendo que MYSQL ou POSTGRES tem senha.
por que a principio me parece que tenho que migrar meu sistema para Xharbour ou Harbour e ja que vou faze isso ja queria fazer esse novo sistema ja com bando de dados CLIENTES/SERVIDOR.
agora se tivese alguma maneira ótima e funcional pra usar o clipper com MYSQL ou POSTEGRES seria muito bom, mas ai me esbaro no problema de maquinas com WIN 7 64 bits que o clipper não roda ja o harbour o u xharbour roda sem problema.
Robson
atende e qual seria uma idéia de tamanho de tabelas (do seu banco no geral) num cliente de grande porte?
R: No caso andei fazendo pesquisas na internet e ja como vou começar do zero me aconselharão a fazer com POSTGRESQL por se um banco totalmente free e a performace do Mysql com ele fica se milessimos de segundos mais rapido com mysql, mas que o POSTRGRES ja é mais pra grande porte e mais seguro.
Outra questão q vc tem q pensar é: Porque realmente eu preciso mudar?
R: pelo fato de poder executar comandos sql e mais rapidez ma busca de dados gerando menos trafico na rede e mais segurança porque os DBF não tem segurança menhuma qualque um que tenha um pouco de conhecimento usa um DBU ou DBASE e abre os arquivos sendo que MYSQL ou POSTGRES tem senha.
por que a principio me parece que tenho que migrar meu sistema para Xharbour ou Harbour e ja que vou faze isso ja queria fazer esse novo sistema ja com bando de dados CLIENTES/SERVIDOR.
agora se tivese alguma maneira ótima e funcional pra usar o clipper com MYSQL ou POSTEGRES seria muito bom, mas ai me esbaro no problema de maquinas com WIN 7 64 bits que o clipper não roda ja o harbour o u xharbour roda sem problema.
Robson
S COM INFORMÁTICA
CLIPPER 5.3 / FIVEWIN 2.0 / BLINKER 7
XHARBOUR/ BCC582
CLIPPER 5.3 / FIVEWIN 2.0 / BLINKER 7
XHARBOUR/ BCC582
bando de dados postgres ou mysql.
Robson, acredito q vc mesmo já sabe as respostas... eu iria sugerir o PosGreSQL pelos motivos q vc mesmo disse, com relação a segurança vc tb já disse td... e com relação a usar o Clipper com os BDs q vc citou não saberia dizer...
Então baseado no q pude levantar do teu universo, acredito q PostGreSQL ou MySQL vc estara bem servido, qto a migrar para xHarbour ou Harbour tb acredito ser o caminho para vc encontrar mais ferramentas e apoio para seu objetivo, aki mesmo no fórum tem muita coisa, fora a Internet....
Agora um fato q vc deve pensar é aprender SQL (não sei se vc já sabe), mas pra usar nativo, digamos assim seu o uso de um RDD para ter maior transparência e performance, na minha opinião.
Grande abraço.
Sucesso!!!
Então baseado no q pude levantar do teu universo, acredito q PostGreSQL ou MySQL vc estara bem servido, qto a migrar para xHarbour ou Harbour tb acredito ser o caminho para vc encontrar mais ferramentas e apoio para seu objetivo, aki mesmo no fórum tem muita coisa, fora a Internet....
Agora um fato q vc deve pensar é aprender SQL (não sei se vc já sabe), mas pra usar nativo, digamos assim seu o uso de um RDD para ter maior transparência e performance, na minha opinião.
Grande abraço.
Sucesso!!!
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
bando de dados postgres ou mysql.
Eu uso Postgresql com xHarbour + SQLRDD e estou satisfeito com o resultado.
É mais fácil você dar uma estudada de como funciona os SGBD do que alguém lhe explicar como instalar e configurar esses SGBD como postgresql.
É mais fácil você dar uma estudada de como funciona os SGBD do que alguém lhe explicar como instalar e configurar esses SGBD como postgresql.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
gilsonpaulo
- Usuário Nível 3

- Mensagens: 135
- Registrado em: 02 Fev 2008 11:30
- Localização: Quatro Barras
bando de dados postgres ou mysql.
Use o MariaDB, nao tem licensa dupla, é um fork do MySQL, usa os mesmos comandos e dlls para acesso do MySQL, pois quem desenvolve é o ex dono do MySQL. Vc pode usar o HeidiSQL para criar os bancos e tabelas.
Seque trecho de um sistema com MariaDB (MySQL)
Seque trecho de um sistema com MariaDB (MySQL)
Código: Selecionar todos
#include <hmg.ch>
Function fornecedor
Private fAlt:=.f.,fInc:=.f.
Private aFornecedor:={}
Private aGridOrd := { { || ChgOrd(1)}, { || ChgOrd(2)} }
oServer := TMySQLServer():New("ip ou dominio do servidor", "usuario", "senha")
If oServer:NetErr()
MsgStop("Servidor de Base de Dados não foi encontrado!!!")
Main.Release
Endif
oServer:SelectDB("ducler")
Load Window Fornecedor
Fornecedor.Center
Fornecedor.Activate
Return(nil)
********************************************************************************
Function fornecedor_form_oninit
Local oQuery
Local oRow
Local i
Local oCnpj,oTipo
fornecedor.txt_codigo.Enabled := .f.
fornecedor.txt_descricao.Enabled := .f.
fornecedor.txt_cep.Enabled := .f.
fornecedor.combo_pessoa.Enabled := .f.
fornecedor.txt_ibge.Enabled := .f.
fornecedor.txt_endereco.Enabled := .f.
fornecedor.txt_numero.Enabled := .f.
fornecedor.txt_bairro.Enabled := .f.
fornecedor.txt_cidade.Enabled := .f.
fornecedor.txt_uf.Enabled := .f.
fornecedor.txt_cnpj.Enabled := .f.
fornecedor.txt_insc.Enabled := .f.
fornecedor.txt_telefone.Enabled := .f.
fornecedor.txt_fax.Enabled := .f.
fornecedor.txt_celular.Enabled := .f.
fornecedor.txt_contato.Enabled := .f.
fornecedor.txt_email.Enabled := .f.
fornecedor.txt_web.Enabled := .f.
fornecedor.btn_gravar.Enabled := .f.
fornecedor.btn_cancelar.Enabled := .f.
fornecedor.grid_fornecedor.DeleteAllItems()
oQuery := oServer:Query("Select * From fornecedor Order By razao_social" )
for i := 1 To oQuery:LastRec()
oRow := oQuery:GetRow(i)
oCnpj:=''
oTipo:=''
if len(alltrim(oRow:fieldGet(11))) = 14
oCnpj:=transform(oRow:fieldGet(11), '@R 99.999.999/9999-99')
endif
if len(alltrim(oRow:fieldGet(11))) = 11
oCnpj:=transform(oRow:fieldGet(11), '@R 999.999.999-99')
endif
fornecedor.grid_fornecedor.additem({strzero(oRow:fieldGet(01),6,0),;
oRow:fieldGet(02),;
transform(oRow:fieldGet(13), '@R (99)9999-9999'),;
transform(oRow:fieldGet(14), '@R (99)9999-9999'),;
transform(oRow:fieldGet(15), '@R (99)9999-9999'),;
oRow:fieldGet(17),;
transform(oRow:fieldGet(03), '@R 99999-999'),;
str(oRow:fieldGet(04)),;
oRow:fieldGet(05),;
oRow:fieldGet(06),;
oRow:fieldGet(07),;
oRow:fieldGet(08),;
oRow:fieldGet(09),;
oRow:fieldGet(10),;
oCnpj,; //oRow:fieldGet(11)
oRow:fieldGet(12),;
oRow:fieldGet(16),;
oRow:fieldGet(18),;
oRow:fieldGet(19)})
oQuery:Skip(1)
next
oQuery:Destroy()
fornecedor.grid_fornecedor.SetFocus
fornecedor.grid_fornecedor.Value := 1
Return(nil)
********************************************************************************
Function fornecedor_btn_incluir_action
fInc := .t.
fornecedor.btn_incluir.Enabled := .f.
fornecedor.btn_alterar.Enabled := .f.
fornecedor.btn_excluir.Enabled := .f.
fornecedor.btn_procura.Enabled := .f.
fornecedor.btn_sair.Enabled := .f.
fornecedor.btn_gravar.Enabled := .t.
fornecedor.btn_cancelar.Enabled := .t.
fornecedor.txt_descricao.Enabled := .t.
fornecedor.txt_cep.Enabled := .t.
fornecedor.combo_pessoa.Enabled := .t.
fornecedor.txt_endereco.Enabled := .t.
fornecedor.txt_numero.Enabled := .t.
fornecedor.txt_bairro.Enabled := .t.
fornecedor.txt_cidade.Enabled := .t.
fornecedor.txt_uf.Enabled := .t.
fornecedor.txt_cnpj.Enabled := .t.
fornecedor.txt_insc.Enabled := .t.
fornecedor.txt_telefone.Enabled := .t.
fornecedor.txt_fax.Enabled := .t.
fornecedor.txt_celular.Enabled := .t.
fornecedor.txt_contato.Enabled := .t.
fornecedor.txt_email.Enabled := .t.
fornecedor.txt_web.Enabled := .t.
fornecedor.grid_fornecedor.Enabled := .f.
fornecedor.txt_descricao.Setfocus
fornecedor.txt_codigo.Value := ''
fornecedor.txt_descricao.Value := ''
fornecedor.txt_cep.Value := ''
fornecedor.combo_pessoa.Value := 0
fornecedor.txt_ibge.Value := ''
fornecedor.txt_endereco.Value := ''
fornecedor.txt_numero.Value := ''
fornecedor.txt_bairro.Value := ''
fornecedor.txt_cidade.Value := ''
fornecedor.txt_uf.Value := ''
fornecedor.txt_cnpj.Value := ''
fornecedor.txt_insc.Value := ''
fornecedor.txt_telefone.Value := ''
fornecedor.txt_fax.Value := ''
fornecedor.txt_celular.Value := ''
fornecedor.txt_contato.Value := ''
fornecedor.txt_email.Value := ''
fornecedor.txt_web.Value := ''
Return(nil)
********************************************************************************
Function fornecedor_btn_alterar_action
Local i
i := fornecedor.grid_fornecedor.Value
if i == 0
Return(nil)
endif
fAlt := .t.
fornecedor.btn_incluir.Enabled := .f.
fornecedor.btn_alterar.Enabled := .f.
fornecedor.btn_excluir.Enabled := .f.
fornecedor.btn_procura.Enabled := .f.
fornecedor.btn_sair.Enabled := .f.
fornecedor.btn_gravar.Enabled := .t.
fornecedor.btn_cancelar.Enabled := .t.
fornecedor.txt_descricao.Enabled := .t.
fornecedor.txt_cep.Enabled := .t.
fornecedor.combo_pessoa.Enabled := .t.
fornecedor.txt_endereco.Enabled := .t.
fornecedor.txt_numero.Enabled := .t.
fornecedor.txt_bairro.Enabled := .t.
fornecedor.txt_cidade.Enabled := .t.
fornecedor.txt_uf.Enabled := .t.
fornecedor.txt_cnpj.Enabled := .t.
fornecedor.txt_insc.Enabled := .t.
fornecedor.txt_telefone.Enabled := .t.
fornecedor.txt_fax.Enabled := .t.
fornecedor.txt_celular.Enabled := .t.
fornecedor.txt_contato.Enabled := .t.
fornecedor.txt_email.Enabled := .t.
fornecedor.txt_web.Enabled := .t.
fornecedor.grid_fornecedor.Enabled := .f.
Return(nil)
********************************************************************************
********************************************************************************
Function fornecedor_btn_gravar_action
if fInc = .t.
grava_inclusao()
endif
if fAlt = .t.
grava_alteracao()
endif
Return(nil)
********************************************************************************
Function grava_inclusao
Local fCod,fDes,fCep,fTipo,fIbge,fEnd,fnum,fBai,fCid,fUf,fCnpj,fInsc,fFone,fFax,fCel,fCont,fMail,fWeb
Local oQuery
Local i
Local oCnpj
fDes := fornecedor.txt_descricao.Value
fCep := strtran(fornecedor.txt_cep.Value,"-")
fTipo := str(fornecedor.combo_pessoa.Value)
fIbge := fornecedor.txt_ibge.Value
fEnd := fornecedor.txt_endereco.Value
fNum := fornecedor.txt_numero.Value
fBai := fornecedor.txt_bairro.Value
fCid := fornecedor.txt_cidade.Value
fUf := fornecedor.txt_uf.Value
fCnpj := strtran(strtran(strtran(fornecedor.txt_cnpj.Value,"."),"-"),"/")
fInsc := fornecedor.txt_insc.Value
fFone := strtran(strtran(strtran(fornecedor.txt_telefone.Value,"("),")"),"-")
fFax := strtran(strtran(strtran(fornecedor.txt_fax.Value,"("),")"),"-")
fCel := strtran(strtran(strtran(fornecedor.txt_celular.Value,"("),")"),"-")
fCont := fornecedor.txt_contato.Value
fMail := fornecedor.txt_email.Value
fWeb := fornecedor.txt_web.Value
oQuery:=oServer:Query("select fornecedor from controle")
oRow := oQuery:GetRow(i)
fCod:=strzero(oRow:FieldGet(01)+1,6,0)
oQuery:Destroy()
oQuery:=oServer:Query("insert into fornecedor (codigo,razao_social,cep,tipo_pessoa,ibge,endereco,numero,bairro,cidade,uf,cnpj_cpf,insc_rg,telefone,fax,celular,contato,email,web) values ("+fCod+",'"+fDes+"','"+fCep+"',"+fTipo+",'"+fIbge+"','"+fEnd+"','"+fNum+"','"+fBai+"','"+fCid+"','"+fUf+"','"+fCnpj+"','"+fInsc+"','"+fFone+"','"+fFax+"','"+fCel+"','"+fCont+"','"+fMail+"','"+fWeb+"')")
oQuery:Destroy()
oQuery := oServer:Query("Select * From fornecedor where codigo="+fCod+"")
oRow := oQuery:GetRow(i)
oCnpj:=''
if len(alltrim(oRow:fieldGet(11))) = 14
oCnpj:=transform(oRow:fieldGet(11), '@R 99.999.999/9999-99')
endif
if len(alltrim(oRow:fieldGet(11))) = 11
oCnpj:=transform(oRow:fieldGet(11), '@R 999.999.999-99')
endif
fornecedor.grid_fornecedor.additem({strzero(oRow:fieldGet(01),6,0),;
oRow:fieldGet(02),;
transform(oRow:fieldGet(13), '@R (99)9999-9999'),;
transform(oRow:fieldGet(14), '@R (99)9999-9999'),;
transform(oRow:fieldGet(15), '@R (99)9999-9999'),;
oRow:fieldGet(17),;
transform(oRow:fieldGet(03), '@R 99999-999'),;
str(oRow:fieldGet(04)),;
oRow:fieldGet(05),;
oRow:fieldGet(06),;
oRow:fieldGet(07),;
oRow:fieldGet(08),;
oRow:fieldGet(09),;
oRow:fieldGet(10),;
oCnpj,; //oRow:fieldGet(11)
oRow:fieldGet(12),;
oRow:fieldGet(16),;
oRow:fieldGet(18),;
oRow:fieldGet(19)})
oQuery:Destroy()
oQuery:=oServer:Query("update controle set fornecedor="+fCod+"")
oQuery:Destroy()
ChgOrd(2)
for i:=1 to fornecedor.grid_fornecedor.itemcount
if fornecedor.grid_fornecedor.item(i)[1] = fCod
fornecedor.grid_fornecedor.Value := i
endif
next
fInc := .f.
fornecedor.btn_incluir.Enabled := .t.
fornecedor.btn_alterar.Enabled := .t.
fornecedor.btn_excluir.Enabled := .t.
fornecedor.btn_sair.Enabled := .t.
fornecedor.btn_procura.Enabled := .t.
fornecedor.btn_gravar.Enabled := .f.
fornecedor.btn_cancelar.Enabled := .f.
fornecedor.txt_descricao.Enabled := .f.
fornecedor.txt_cep.Enabled := .f.
fornecedor.combo_pessoa.Enabled := .f.
fornecedor.txt_endereco.Enabled := .f.
fornecedor.txt_numero.Enabled := .f.
fornecedor.txt_bairro.Enabled := .f.
fornecedor.txt_cidade.Enabled := .f.
fornecedor.txt_uf.Enabled := .f.
fornecedor.txt_cnpj.Enabled := .f.
fornecedor.txt_insc.Enabled := .f.
fornecedor.txt_telefone.Enabled := .f.
fornecedor.txt_fax.Enabled := .f.
fornecedor.txt_celular.Enabled := .f.
fornecedor.txt_contato.Enabled := .f.
fornecedor.txt_email.Enabled := .f.
fornecedor.txt_web.Enabled := .f.
fornecedor.grid_fornecedor.Enabled := .t.
fornecedor.grid_fornecedor.Setfocus
Return(nil)
********************************************************************************
Function grava_alteracao
Local fCod,fDes,fCep,fTipo,fIbge,fEnd,fnum,fBai,fCid,fUf,fCnpj,fInsc,fFone,fFax,fCel,fCont,fMail,fWeb
Local oQuery
Local i
Local oCnpj,oTipo
i := fornecedor.grid_fornecedor.Value
if i = 0
Return(nil)
endif
fCod := fornecedor.txt_codigo.Value
fDes := fornecedor.txt_descricao.Value
fCep := strtran(fornecedor.txt_cep.Value,"-")
fTipo := str(fornecedor.combo_pessoa.Value)
fIbge := fornecedor.txt_ibge.Value
fEnd := fornecedor.txt_endereco.Value
fNum := fornecedor.txt_numero.Value
fBai := fornecedor.txt_bairro.Value
fCid := fornecedor.txt_cidade.Value
fUf := fornecedor.txt_uf.Value
fCnpj := strtran(strtran(strtran(fornecedor.txt_cnpj.Value,"."),"-"),"/")
fInsc := fornecedor.txt_insc.Value
fFone := strtran(strtran(strtran(fornecedor.txt_telefone.Value,"("),")"),"-")
fFax := strtran(strtran(strtran(fornecedor.txt_fax.Value,"("),")"),"-")
fCel := strtran(strtran(strtran(fornecedor.txt_celular.Value,"("),")"),"-")
fCont := fornecedor.txt_contato.Value
fMail := fornecedor.txt_email.Value
fWeb := fornecedor.txt_web.Value
oQuery:=oServer:Query("update fornecedor set razao_social='"+fDes+"',cep='"+fCep+"',tipo_pessoa="+fTipo+",ibge='"+fIbge+"',endereco='"+fEnd+"',numero='"+fNum+"',bairro='"+fBai+"',cidade='"+fCid+"',uf='"+fUf+"',cnpj_cpf='"+fCnpj+"',insc_rg='"+fInsc+"',telefone='"+fFone+"',fax='"+fFax+"',celular='"+fCel+"',contato='"+fCont+"',email='"+fMail+"',web='"+fWeb+"' where codigo='"+fCod+"'")
fornecedor.grid_fornecedor.Cell(i,02) := fornecedor.txt_descricao.Value
fornecedor.grid_fornecedor.Cell(i,03) := fornecedor.txt_telefone.Value
fornecedor.grid_fornecedor.Cell(i,04) := fornecedor.txt_fax.Value
fornecedor.grid_fornecedor.Cell(i,05) := fornecedor.txt_celular.Value
fornecedor.grid_fornecedor.Cell(i,06) := fornecedor.txt_contato.Value
fornecedor.grid_fornecedor.Cell(i,07) := fornecedor.txt_cep.Value
fornecedor.grid_fornecedor.Cell(i,08) := fornecedor.combo_pessoa.Value
fornecedor.grid_fornecedor.Cell(i,09) := fornecedor.txt_ibge.Value
fornecedor.grid_fornecedor.Cell(i,10) := fornecedor.txt_endereco.Value
fornecedor.grid_fornecedor.Cell(i,11) := fornecedor.txt_numero.Value
fornecedor.grid_fornecedor.Cell(i,12) := fornecedor.txt_bairro.Value
fornecedor.grid_fornecedor.Cell(i,13) := fornecedor.txt_cidade.Value
fornecedor.grid_fornecedor.Cell(i,14) := fornecedor.txt_uf.Value
fornecedor.grid_fornecedor.Cell(i,15) := fornecedor.txt_cnpj.Value
fornecedor.grid_fornecedor.Cell(i,16) := fornecedor.txt_insc.Value
fornecedor.grid_fornecedor.Cell(i,18) := fornecedor.txt_email.Value
fornecedor.grid_fornecedor.Cell(i,19) := fornecedor.txt_web.Value
ChgOrd(2)
for i:=1 to fornecedor.grid_fornecedor.itemcount
if fornecedor.grid_fornecedor.item(i)[1] = fCod
fornecedor.grid_fornecedor.Value := i
endif
next
fAlt := .f.
fornecedor.btn_incluir.Enabled := .t.
fornecedor.btn_alterar.Enabled := .t.
fornecedor.btn_excluir.Enabled := .t.
fornecedor.btn_sair.Enabled := .t.
fornecedor.btn_procura.Enabled := .t.
fornecedor.btn_gravar.Enabled := .f.
fornecedor.btn_cancelar.Enabled := .f.
fornecedor.txt_descricao.Enabled := .f.
fornecedor.txt_cep.Enabled := .f.
fornecedor.combo_pessoa.Enabled := .f.
fornecedor.txt_endereco.Enabled := .f.
fornecedor.txt_numero.Enabled := .f.
fornecedor.txt_bairro.Enabled := .f.
fornecedor.txt_cidade.Enabled := .f.
fornecedor.txt_uf.Enabled := .f.
fornecedor.txt_cnpj.Enabled := .f.
fornecedor.txt_insc.Enabled := .f.
fornecedor.txt_telefone.Enabled := .f.
fornecedor.txt_fax.Enabled := .f.
fornecedor.txt_celular.Enabled := .f.
fornecedor.txt_contato.Enabled := .f.
fornecedor.txt_email.Enabled := .f.
fornecedor.txt_web.Enabled := .f.
fornecedor.grid_fornecedor.Enabled := .t.
fornecedor.grid_fornecedor.Setfocus
Return(nil)
********************************************************************************
********************************************************************************
Function fornecedor_grid_fornecedor_onchange
Local fCod,fDes,fCep,fTipo,fIbge,fEnd,fnum,fBai,fCid,fUf,fCnpj,fInsc,fFone,fFax,fCel,fCont,fMail,fWeb
Local oQuery
Local aGridRow
Local i
i := fornecedor.grid_fornecedor.Value
if i = 0
Return(nil)
endif
aGridRow := fornecedor.grid_fornecedor.Item (i)
fcod := aGridRow[01]
fDes := aGridRow[02]
fCep := aGridRow[07]
fTipo := val(aGridRow[08])
fIbge := aGridRow[09]
fEnd := aGridRow[10]
fNum := aGridRow[11]
fBai := aGridRow[12]
fCid := aGridRow[13]
fUf := aGridRow[14]
fCnpj := aGridRow[15]
fInsc := aGridRow[16]
fFone := aGridRow[03]
fFax := aGridRow[04]
fCel := aGridRow[05]
fCont := aGridRow[06]
fMail := aGridRow[18]
fWeb := aGridRow[19]
fornecedor.txt_codigo.Value := fCod
fornecedor.txt_descricao.Value := fDes
fornecedor.txt_cep.Value := fCep
fornecedor.combo_pessoa.Value := fTipo
fornecedor.txt_ibge.Value := fIbge
fornecedor.txt_endereco.Value := fEnd
fornecedor.txt_numero.Value := fNum
fornecedor.txt_bairro.Value := fBai
fornecedor.txt_cidade.Value := fCid
fornecedor.txt_uf.Value := fUf
fornecedor.txt_cnpj.Value := fCnpj
fornecedor.txt_insc.Value := fInsc
fornecedor.txt_telefone.Value := fFone
fornecedor.txt_fax.Value := fFax
fornecedor.txt_celular.Value := fCel
fornecedor.txt_contato.Value := fCont
fornecedor.txt_email.Value := fMail
fornecedor.txt_web.Value := fWeb
Return(nil)
********************************************************************************
********************************************************************************
Function fornecedor_txt_cep_onlostfocus
Local oCep
Local oQuery
Local oRow
Local i
oCep:=strtran(fornecedor.txt_cep.Value,"-")
oQuery:=oServer:Query("select abrev_tipo,nome_log,extenso_ba,nome_local,uf_log from cep2007 where cep8_log='"+oCep+"'")
oRow := oQuery:GetRow(i)
if !empty(oRow:fieldGet(1))
fornecedor.txt_endereco.Value := alltrim(oRow:fieldGet(1))+" "+alltrim(oRow:fieldGet(2))
fornecedor.txt_bairro.Value := alltrim(oRow:fieldGet(3))
fornecedor.txt_cidade.Value := alltrim(oRow:fieldGet(4))
fornecedor.txt_uf.Value := alltrim(oRow:fieldGet(5))
oQuery:Destroy()
oQuery:=oServer:Query("select codigo from ibge where cidade='"+fornecedor.txt_cidade.Value+"'")
oRow := oQuery:GetRow(i)
fornecedor.txt_ibge.Value := oRow:fieldGet(1)
oQuery:Destroy()
else
oQuery:Destroy()
endif
Return(nil)
********************************************************************************
********************************************************************************
Function fornecedor_btn_procura_action
Load Window pesfor
pesfor.Center
pesfor.Activate
Return(nil)
********************************************************************************
Function pesfor_txt_pesfor_onenter
Local oQuery
Local oRow
Local i
Local pProcura
Local oCnpj,oTipo
pProcura := pesfor.txt_pesfor.Value
pesfor.release
Wait Window "Aguarde, Pesquisando Fornecedores" NoWait
fornecedor.grid_fornecedor.DeleteAllItems()
oQuery := oServer:Query("Select * From fornecedor where codigo like '%"+pProcura+"%' or razao_social like '%"+pProcura+"%' Order By razao_social" )
for i := 1 To oQuery:LastRec()
oRow := oQuery:GetRow(i)
oCnpj:=''
oTipo:=''
if len(alltrim(oRow:fieldGet(11))) = 14
oCnpj:=transform(oRow:fieldGet(11), '@R 99.999.999/9999-99')
endif
if len(alltrim(oRow:fieldGet(11))) = 11
oCnpj:=transform(oRow:fieldGet(11), '@R 999.999.999-99')
endif
fornecedor.grid_fornecedor.additem({strzero(oRow:fieldGet(01),6,0),;
oRow:fieldGet(02),;
transform(oRow:fieldGet(13), '@R (99)9999-9999'),;
transform(oRow:fieldGet(14), '@R (99)9999-9999'),;
transform(oRow:fieldGet(15), '@R (99)9999-9999'),;
oRow:fieldGet(17),;
transform(oRow:fieldGet(03), '@R 99999-999'),;
str(oRow:fieldGet(04)),;
oRow:fieldGet(05),;
oRow:fieldGet(06),;
oRow:fieldGet(07),;
oRow:fieldGet(08),;
oRow:fieldGet(09),;
oRow:fieldGet(10),;
oCnpj,; //oRow:fieldGet(11)
oRow:fieldGet(12),;
oRow:fieldGet(16),;
oRow:fieldGet(18),;
oRow:fieldGet(19)})
oQuery:Skip(1)
next
oQuery:Destroy()
Wait Clear
fornecedor.grid_fornecedor.SetFocus
fornecedor.grid_fornecedor.Value := 1
Return(nil)
********************************************************************************
********************************************************************************
Static Function ChgOrd( nOrder )
Local aTemp := {}
Local nX
for nX := 1 to fornecedor.grid_fornecedor.ItemCount
aadd( aTemp, fornecedor.grid_fornecedor.Item( nX ) )
next nX
aTemp := asort( aTemp,,,{|a,b| a[nOrder]<=b[nOrder]} )
fornecedor.grid_fornecedor.DeleteAllItems
for nX := 1 to len( aTemp )
fornecedor.grid_fornecedor.AddItem( aTemp[nX] )
next nX
fornecedor.grid_fornecedor.Value := 1
Return(nil)
********************************************************************************
********************************************************************************
Function fornecedor_btn_excluir_action
Local i
Local pCod
Local aGridRow
i := fornecedor.grid_fornecedor.Value
if i == 0
Return
EndIf
aGridRow := fornecedor.grid_fornecedor.Item (i)
pCod := aGridRow [1]
oQuery := oServer:Query("delete from fornecedor where codigo =" + pCod)
fornecedor.grid_fornecedor.DeleteItem (i)
fornecedor.grid_fornecedor.Setfocus
fornecedor.grid_fornecedor.Value := i
Return(nil)
********************************************************************************
********************************************************************************
Function fornecedor_btn_sair_action
Fornecedor.release
Return(nil)
********************************************************************************
********************************************************************************
Function fornecedor_btn_cancelar_action
Local i
i := fornecedor.grid_fornecedor.Value
fAlt:=.f.
fInc:=.f.
fornecedor.btn_incluir.Enabled := .t.
fornecedor.btn_alterar.Enabled := .t.
fornecedor.btn_excluir.Enabled := .t.
fornecedor.btn_sair.Enabled := .t.
fornecedor.txt_descricao.Enabled := .f.
fornecedor.txt_cep.Enabled := .f.
fornecedor.combo_pessoa.Enabled := .f.
fornecedor.txt_endereco.Enabled := .f.
fornecedor.txt_numero.Enabled := .f.
fornecedor.txt_bairro.Enabled := .f.
fornecedor.txt_cidade.Enabled := .f.
fornecedor.txt_uf.Enabled := .f.
fornecedor.txt_cnpj.Enabled := .f.
fornecedor.txt_insc.Enabled := .f.
fornecedor.txt_telefone.Enabled := .f.
fornecedor.txt_fax.Enabled := .f.
fornecedor.txt_celular.Enabled := .f.
fornecedor.txt_contato.Enabled := .f.
fornecedor.txt_email.Enabled := .f.
fornecedor.txt_web.Enabled := .f.
fornecedor.grid_fornecedor.Enabled := .t.
fornecedor.btn_procura.Enabled := .t.
fornecedor.btn_gravar.Enabled := .f.
fornecedor.btn_cancelar.Enabled := .f.
fornecedor.grid_fornecedor.Setfocus
fornecedor.grid_fornecedor.Value := i
fornecedor_grid_fornecedor_onchange()
Return(nil)
********************************************************************************
********************************************************************************