Jump to content
Fivewin Brasil

cpbart

Membros
  • Posts

    3
  • Joined

  • Last visited

Everything posted by cpbart

  1. Ola, desde os tempos do clipper faço da seguinte forma: Uma Matriz contento os campos da base {"NOME", "C", 35,0},; {"EST", "C", 2,0}},; "TABELA IBGE DE MUNICIPIOS",; {{"CADMUN->CODIGO", "CADMUN01"},; {"CADMUN->NOME", "CADMUN02"}}}) id=code>id=code>Tenho uma função especifica para gerenciar base de dados, com ele posso adicionar campos, reidenxar e packear a base, teste ai p ver se te serve Codigo: //cPati = Path dos Indices //Modo = 1 - Checar Existencia Base de Dados e Estrutura //Modo = 2 - Reindexar Tabelas //Modo = 3 - Packear Tabelas Function Config_Arq(aDbfs, Modo) If !lIsDir(cPath) lMkDir(cPath) EndIf IF !lIsdir(cPati) lMkDir(cPati) EndIf For nConta = 1 to Len(aDbfs) If Modo = 1 If !File(cPath+aDbfs[nConta][1]+".DBF") aEstru := aDbfs[nConta][2] DbCreate(cPath+aDbfs[nConta][1], aEstru) Close Databases EndIf aArq := aDbfs[nConta][1] aEstru := aDbfs[nConta][2] aInd := aDbfs[nConta][4] Use (cPath+aArq) Alias (aArq) EXCLUSIVE IF NetErr() Return EndIF aVerif := DbStruct() // aInd := aDbfs[nConta][4] Close DataBases IF Len(aVerif) <> Len(aEstru) cOldNome := cPath+aArq cOldNome2 := cPath+aArq+".FPT" cNovoNome := cPath+"TEMP" cNovoNom2 := cPath+"TEMP" cNovoNome2 := cPath+"TEMP.FPT" Use (cOldNome) Alias (aArq) New Exclusive Copy All to (cNovoNome) Close (aArq) Ferase(cOldNome+".dbf") Ferase(cOldNome+".fpt") DbCreate(cPath+aDbfs[nConta][1], aEstru) Close Databases Use (cPath+aArq) Alias (aArq) New Exclusive Do While .T. IF (aArq)->(Flock()) __dbApp(cNovoNome ,{ },,,,,.F.,"DBFCDX") (aArq)->(DbUnlock()) Exit Else Loop EndIF EndDo Close Databases FErase(cNovoNome) For nContaI = 1 To Len(aInd) aIndex := aInd[nContaI][2] aCampo := aInd[nContaI][1] Use (cPath+aArq) Alias (aArq) New If (aArq)->(Flock()) Ferase(cPati+aIndex+".cdx") MeuMeter( { | oMeter, oText, oDlg, lEnd | BuildIndex( oMeter, oText, oDlg, @lEnd,aCampo,cPati,aIndex ) }, "Criando o Indice : "+aIndex+".cdx" ) EndIf (aArq)->(DbUnlock()) Close (aArq) Next EndIf ElseIf Modo = 3 aArq := aDbfs[nConta][1] Use (cPath+aArq) Alias (aArq) EXCLUSIVE IF NetErr() Alert("Bancos de Dados Em Uso Por Outra Estação, Operação Abortada !", "Erro Em Rede") Return EndIF If (aArq)->(Flock()) Pack EndIf (aArq)->(Dbunlock()) Close (aArq) aArq := aDbfs[nConta][1] aEstru := aDbfs[nConta][2] Use (cPath+aArq) Alias (aArq) New aVerif := DbStruct() aInd := aDbfs[nConta][4] Close DataBases IF Len(aVerif) <> Len(aEstru) cOldNome := cPath+aArq+".DBF" cOldNome2 := cPath+aArq+".FPT" cNovoNome := cPath+"TEMP.DBF" cNovoNome2 := cPath+"TEMP.FPT" Frename(cOldNome, cNovoNome) If File(cOldNome2) Frename(cOldNome2, cNovoNome2) EndIf DbCreate(cPath+aDbfs[nConta][1], aEstru) Close Databases Use (cPath+aArq) Alias (aArq) New Append From (cNovoNome) Close Databases FErase(cNovoNome) aInd := aDbfs[nConta][4] aIndex := aInd[nConta][2] aCampo := aInd[nConta][1] Use (cPath+aArq) Alias (aArq) New If (aArq)->(Flock()) Ferase(cPati+aIndex+".cdx") MeuMeter( { | oMeter, oText, oDlg, lEnd | BuildIndex( oMeter, oText, oDlg, @lEnd,aCampo,cPati,aIndex ) }, "Criando o Indice : "+aIndex+".cdx" ) EndIf (aArq)->(DbUnlock()) Close (aArq) EndIf EndIf aInd := aDbfs[nConta][4] nContaI = 1 If Modo = 1 For nContaI = 1 to Len(aInd) If !File(cPati+aInd[nContaI][2]+".cdx") aIndex := aInd[nContaI][2] aCampo := aInd[nContaI][1] aArq := aDbfs[nConta][1] Use (cPath+aArq) Alias (aArq) EXCLUSIVE IF NetErr() Alert("Bancos de Dados Em Uso Por Outra Estação, Operação Abortada !", "Erro Em Rede") Return EndIF If (aArq)->(Flock()) Ferase(cPati+aIndex+".cdx") MsgMeter( { | oMeter, oText, oDlg, lEnd | BuildIndex( oMeter, oText, oDlg, @lEnd,aCampo,cPati,aIndex ) }, "Criando o Indice : "+aIndex+".cdx" ) EndIf (aArq)->(DbUnlock()) Close (aArq) EndIf Next ElseiF Modo = 2 .Or. Modo = 3 For nContaI = 1 to Len(aInd) aIndex := aInd[nContaI][2] aCampo := aInd[nContaI][1] aArq := aDbfs[nConta][1] Use (cPath+aArq) Alias (aArq) EXCLUSIVE IF NetErr() Alert("Bancos de Dados Em Uso Por Outra Estação, Operação Abortada !", "Erro Em Rede") Return EndIF If (aArq)->(Flock()) Ferase(cPati+aIndex+".cdx") MeuMeter( { | oMeter, oText, oDlg, lEnd | BuildIndex( oMeter, oText, oDlg, @lEnd,aCampo,cPati,aIndex ) }, "Criando o Indice : "+aIndex+".cdx" ) EndIf (aArq)->(DbUnlock()) Close (aArq) Next EndIf Next Return id=code>id=code>clipper 5.3d, fw 2.4 / xharb 0.99.70 simplex, fwh 7.05, Pellesc , Work , MySql
  2. Bem, eu faço da Seguinte maneira: IF TemNet() //Mostrar Fundo como página EndIf //Função Adaptada Function TemNet(cAddress) Local aHosts, cName Default cAddress := "www.fivewin.com.br" InetInit() aHosts := InetGetHosts(cAddress) If aHosts == Nil .or. Len(aHosts)=0 InetCleanup() return .f. endif InetCleanup() Return(.t.) clipper 5.3d, fw 2.4 / xharb 0.99.70 simplex, fwh 7.05, Pellesc , Work , MySql
  3. Boa noite eu tenho sistemas em dos/clipper e fw e sempre trabalhei da seguinte forma: na inicialização de seu aplicativo, chame uma função de verificação de base de dados depois crie uma array de base como abaixo : aDbfs := {} AADD(aDbfs, {"nomesuabase", {{"nomcamp", "tip",tam,decm},; {"etc", "etc",etc,etc}},; "titulo p meter",; {{"camp ind1", "ind1"},; {"etc", "etc"}}}) etc = quantos forem necessários For nConta = 1 to Len(aDbfs) If !File(cPath+aDbfs[nConta][1]+".DBF") aEstru := aDbfs[nConta][2] DbCreate(cPath+aDbfs[nConta][1], aEstru) Close Databases EndIf aArq := aDbfs[nConta][1] aEstru := aDbfs[nConta][2] Use &(aArq) Alias &(aArq) EXCLUSIVE IF NetErr() MsgAlert("Estrura de Arquivo Precisa Ser Alterada! , Solicite presença do Administrador de Rede !") Return EndIF aVerif := DbStruct() aInd := aDbfs[nConta][4] Close DataBases IF Len(aVerif) <> Len(aEstru) cOldNome := aArq+".DBF" cOldNome2 := aArq+".FPT" // ou .dbt p/ ntx cNovoNome := "TEMP.DBF" cNovoNome2 := cPath+"TEMP.FPT" Frename(cOldNome, cNovoNome) If File(cOldNome2) Frename(cOldNome2, cNovoNome2) EndIf DbCreate(aDbfs[nConta][1], aEstru) Close Databases Use &(aArq) Alias &(aArq) New Do While .T. IF (aArq)->(Flock()) __dbApp(cNovoNome ,{ },,,,,.F.,"DBFCDX") (aArq)->(DbUnlock()) Exit Else Loop EndIF EndDo Close Databases FErase(cNovoNome) For nContaI = 1 To Len(aInd) aIndex := aInd[nContaI][2] aCampo := aInd[nContaI][1] Use (aArq) Alias (aArq) New If (aArq)->(Flock()) Ferase(aIndex+".cdx") MsgMeter( { | oMeter, oText, oDlg, lEnd | BuildIndex( oMeter, oText, oDlg, @lEnd,aCampo,aIndex ) }, "Criando o Indice : "+aIndex+".cdx" ) EndIf (aArq)->(DbUnlock()) Close (aArq) Next EndIf Next
×
×
  • Create New...