Arthur Silvestre Posted October 19, 2012 Report Share Posted October 19, 2012 Pessoal, estou tentando adicionar apenas 1 caractere mas não estou conseguindo, como faço ? Esse é o antigo: REPARQ("CBO_FUN","C",5,0) Quero que fique assim: REPARQ("CBO_FUN","C",6,0) So que não funciona, mesmo apagando os cdx continua 5 campos, poderia deletar o dbf existente e apartir dai criar um novo, mas para quem tem 3 registro nao tem problema fazer isso, mas imagina registrar novamente 1000 funcionarios. Alguem me socorre? FWH.11.12 + xHarbour12.1 + Pelles C IDE E-mail:ArthurSilvestreSnt@hotmail.com Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted October 19, 2012 Author Report Share Posted October 19, 2012 Pessoal, estou tentando adicionar apenas 1 caractere mas não estou conseguindo, como faço ? Esse é o antigo: REPARQ("CBO_FUN","C",5,0) Quero que fique assim: REPARQ("CBO_FUN","C",6,0) So que não funciona, mesmo apagando os cdx continua 5 campos, poderia deletar o dbf existente e apartir dai criar um novo, mas para quem tem 3 registro nao tem problema fazer isso, mas imagina registrar novamente 1000 funcionarios. Alguem me socorre? FWH.11.12 + xHarbour12.1 + Pelles C IDE E-mail:ArthurSilvestreSnt@hotmail.com Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted October 19, 2012 Report Share Posted October 19, 2012 Boa Tarde.. Renomeia o arquivo antigo, crie outro igual com as alterações e dá um append do renomeado Select nnnnnid=red> xVerStru := DBSTRUCT() If .Not. xStru("NIRF",xVerStru) MsgiNFO("A tebela nnnnn Será Alterada","..::Tabelas - NIRF") fRename("&oxCampo\nnnnn.dbfid=red>", "&oxCampo\FAZ.DBFid=blue>" ) Faestru:={} Aadd(Faestru, {"NIRF", "C", 014,000 }) DbCreate("\pasta\empresas\∝\&wano\nnnnn.DBFid=red>", faestru) Use nnnnnid=red> exclusive Append from \pasta\empresas\∝\&wano\Fazid=blue> ENDIF id=code>id=code>PS: o &eoxCampo que usei é meu Path Abraços.. Luiz Arruda Corumbá-MS ico.corumba@gmail.com | http://www.facebook.com/profile.php?id=100000933378029 FiveWin 9.04 xHarbour PellesC Bcc. Editado por - ico on 19/10/2012 15:07:12 Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted October 19, 2012 Report Share Posted October 19, 2012 Colega com a ajuda do Marcelo Ferro(MARCA) e de um colega da cidade de LEME que me fugiu o nome agora, consegui fazer a rotina abaixo, aonde ao entrar no sistema verifca qq alteração no DBF... function checa_dbf() vStru := {} AADD(vStru,{"CODIGO", "C", 6, 0}) AADD(vStru,{"NOME" , "C", 20, 0}) AADD(vStru,{"SENHA" , "C", 5, 0}) AADD(vStru,{"NIVEL" , "C", 1, 0}) cDbf="GERENTE.DBF" if .not. File("GERENTE.DBF") aguarde1("Arquivo "+cDbf+CRLF+"não localizado") oDlgg:end() aguarde1("Criando arquivo "+cDbf) DbCreate( "GERENTE.DBF", vStru ) oDlgg:end() else DbCreate( "DBFTEMP.DBF", vStru ) usi("DBFTEMP",,.t.) usi("GERENTE",,.t.) if !lEqualArray(dbftemp->(dbstruct()),gerente->(dbstruct())) alerta1("Erro de estrutura no "+cDbf,"o sistema ira atualizar a","estrutura automatico") aguarde1("Atualizando estrutura no arquivo"+CRLF+cDbf) alteradbf("DBFTEMP","GERENTE") oDlgg:end() else close dbftemp close gerente endif endif return .t. id=code>id=code> function alteradbf(var1,var2) local cArqAntigo := var2 local cArqNovo := var1 close &(cArqAntigo) DBSELECTAREA(cArqNovo) APPEND FROM &(cArqAntigo) usi(var2,,.t.) close &(cArqNovo) close &(cArqAntigo) Erase(cPath+cArqAntigo+".dbf") d=cPath+var1+".dbf" e=cPath+var2+".dbf" RENAME (d) to (e) return id=code>id=code> function lEqualArray(aArray1,aArray2) local lEqual:=.t., nElem, nCol, x, z if !len(aArray1)==len(aArray2) return .f. endif if !nArrayDim(aArray1)==nArrayDim(aArray2) return .f. endif nElem = len(aArray1) nCol = nArrayDim(aArray1) for x=1 to nElem if nCol=1 if !valtype(aArray1[x])==valtype(aArray2[x]) lEqual=.f. exit endif if !aArray1[x]==aArray2[x] lEqual=.f. exit endif else for z=1 to nCol if !valtype(aArray1[x,z])==valtype(aArray2[x,z]) lEqual=.f. exit endif if !aArray1[x,z]==aArray2[x,z] lEqual=.f. exit endif next if !lEqual exit endif endif next return lEqual id=code>id=code> function nArrayDim(aTabela) local nDimensoes:=0 if valtype(aTabela[1])="A" nDimensoes = len(aTabela[1]) else nDimensoes = 1 endif return nDimensoes id=code>id=code>Abraços Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 9.12,XHARBOUR 1.2,ADS 9.0 FWH1104,XHARBOUR 1.2 Rev.6406, MYSQL c\ SQLLIB FREE Quote Link to comment Share on other sites More sharing options...
Erciley Junior Posted October 19, 2012 Report Share Posted October 19, 2012 Colega de Leme só pode ser o Yury, vulgo Boss, ou o vulgo Luisão, o menino grande ^^ 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...
Luiz Fernando Posted October 19, 2012 Report Share Posted October 19, 2012 citação:Colega de Leme só pode ser o Yury, vulgo Boss, ou o vulgo Luisão, o menino grande ^^ 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 id=quote>id=quote>opa, Yury este mesmo rsrsrs Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 9.12,XHARBOUR 1.2,ADS 9.0 FWH1104,XHARBOUR 1.2 Rev.6406, MYSQL c\ SQLLIB FREE Quote Link to comment Share on other sites More sharing options...
emotta Posted October 19, 2012 Report Share Posted October 19, 2012 Tb acho isso... Só que acho mais seguro criar o arquivo desejado com um nome temporario e transferir os dados do original. Deps de acabar renomeie o original e o novo arquivo coloque com o nome oficial... Dessa forma se acontecer de travar no meio ou por algum motivo abortar o processo pela metade o arquivo original, sem o tamanho alterado, fica preservado e os registros também... citação:Boa Tarde.. Renomeia o arquivo antigo, crie outro igual com as alterações e dá um append do renomeado Select nnnnnid=red> xVerStru := DBSTRUCT() If .Not. xStru("NIRF",xVerStru) MsgiNFO("A tebela nnnnn Será Alterada","..::Tabelas - NIRF") fRename("&oxCampo\nnnnn.dbfid=red>", "&oxCampo\FAZ.DBFid=blue>" ) Faestru:={} Aadd(Faestru, {"NIRF", "C", 014,000 }) DbCreate("\pasta\empresas\∝\&wano\nnnnn.DBFid=red>", faestru) Use nnnnnid=red> exclusive Append from \pasta\empresas\∝\&wano\Fazid=blue> ENDIF id=code>id=code>PS: o &eoxCampo que usei é meu Path Abraços.. Luiz Arruda Corumbá-MS ico.corumba@gmail.com | http://www.facebook.com/profile.php?id=100000933378029 FiveWin 9.04 xHarbour PellesC Bcc. Editado por - ico on 19/10/2012 15:07:12 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...
Geraldo_Andrade Posted October 21, 2012 Report Share Posted October 21, 2012 Arthur, bom dia Criei uma rotina para poder resolver este problema que tive: FUNCTION RESIZER(LUGAR,ARQUI,kVAR,TIP,TAMANHO,DEC) IF !TEMPONTO(ARQUI) ARQUI += ".DBF" ENDIF OLD := ALIAS() FILT := DBFILTER() Private aFild[fCount()] aFields(aFild) Private bNom[fCount()] Private bTip[fCount()] Private bTam[fCount()] Private bDec[fCount()] aFields(bNom,bTip,bTam,bDec) nANTES := fCount() FOR OR = 1 to fCount() IF ALUP(bNom[OR]) == ALUP(kVAR) .AND. bTam[OR] == TAMANHO .AND. bDec[OR] == DEC RETURN(.T.) ENDIF Next DELETE FILE("TEMP.DBF") My := {} FOR OR = 1 to fCount() IF ALUP(bNom[OR]) <> ALUP(kVAR) AADD(MY,{bNom[OR],bTip[OR],bTam[OR],bDec[OR]}) ELSE AADD(MY,{bNom[OR],bTip[OR],TAMANHO,DEC}) ENDIF Next SYSREFRESH() fcharea("temp") DBCREATE("TEMP",MY) USE TEMP NEW IF nANTES > fCount() DBCLOSEAREA() PARE("ERRO NA CORREÇÃO DO TAMANHO "+KVAR,LUGAR+"\"+ARQUI) SELECT(OLD) Quit ENDIF FCHAREA(OLD) DBCREATE(ALUP(REDE)+"\"+OLD,MY) SELECT("TEMP") NVPRO := LUGAR + "\" + ARQUI NVALI := REDE + "\" + OLD APPEND FROM &NVPRO SYSREFRESH() COPY STRU TO &NVPRO COPY STRU TO &NVALI DBCLOSEAREA() FCHAREA("TEMP") USAR(LUGAR,ARQUI,OLD) rLOCK() APPEND FROM "TEMP" IF !EMPTY(FILT) SET FILTER TO &FILT GO BOTTOM GO TOP ENDIF SL(ARQUI+kVAR+SZ(TAMANHO,3),.T.,REDE+"\W2.INI") RETURN(.f.) *********** Espero que ajude Geraldo Andrade geraldo_andrade@hotmail.com Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted October 22, 2012 Author Report Share Posted October 22, 2012 Mano, como eu faço isso ? qual comando uso ? pode ser pelo dos ou por onde eu faço pra transferir os dados de uma para outra? citação:Tb acho isso... Só que acho mais seguro criar o arquivo desejado com um nome temporario e transferir os dados do original. Deps de acabar renomeie o original e o novo arquivo coloque com o nome oficial... Dessa forma se acontecer de travar no meio ou por algum motivo abortar o processo pela metade o arquivo original, sem o tamanho alterado, fica preservado e os registros também... citação:Boa Tarde.. Renomeia o arquivo antigo, crie outro igual com as alterações e dá um append do renomeado Select nnnnnid=red> xVerStru := DBSTRUCT() If .Not. xStru("NIRF",xVerStru) MsgiNFO("A tebela nnnnn Será Alterada","..::Tabelas - NIRF") fRename("&oxCampo\nnnnn.dbfid=red>", "&oxCampo\FAZ.DBFid=blue>" ) Faestru:={} Aadd(Faestru, {"NIRF", "C", 014,000 }) DbCreate("\pasta\empresas\∝\&wano\nnnnn.DBFid=red>", faestru) Use nnnnnid=red> exclusive Append from \pasta\empresas\∝\&wano\Fazid=blue> ENDIF id=code>id=code>PS: o &eoxCampo que usei é meu Path Abraços.. Luiz Arruda Corumbá-MS ico.corumba@gmail.com | http://www.facebook.com/profile.php?id=100000933378029 FiveWin 9.04 xHarbour PellesC Bcc. Editado por - ico on 19/10/2012 15:07:12 id=quote>id=quote>Eduardo Motta emotta@gmail.com.br FWH 9.09 (original) - xHARBOUR 1.2.1 (comercial e original) - SQLRDD id=quote>id=quote>FWH.11.12 + xHarbour12.1 + Pelles C IDE E-mail:ArthurSilvestreSnt@hotmail.com Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted October 24, 2012 Report Share Posted October 24, 2012 Bom dia desculpe ai.. esqueci uma parte FUNCTION xSTRU(PPCAMPO,aESTRUCT) FOR S = 1 TO LEN(aESTRUCT) IF aESTRUCT[s,1] == PPCAMPO RETURN(.T.) ENDIF NEXT RETURN(.F.) id=code>id=code>Isto aqui vai renomear o nnnnn.dbf para FAZ.DBF com os dados existente dentroid=red> id=code>id=code>a Transferencia para a nova nnnnnn.dbf vai ser pelo append From como mostrado acima.. Abraços.. Luiz Arruda Corumbá-MS ico.corumba@gmail.com | http://www.facebook.com/profile.php?id=100000933378029 Editado por - ico on 24/10/2012 11:29:14 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.