Jump to content
Fivewin Brasil

Aumentar o tamanho de um campo em uma tabela


Arthur Silvestre

Recommended Posts

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

euchapeu.png

FiveWin 9.04

xHarbour

PellesC

Bcc.

Editado por - ico on 19/10/2012 15:07:12

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

Link to comment
Share on other sites

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

euchapeu.png

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

AJbJ

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

euchapeu.png

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

AJbJ


id=quote>id=quote>

FWH.11.12 + xHarbour12.1 + Pelles C IDE

E-mail:ArthurSilvestreSnt@hotmail.com

Link to comment
Share on other sites

Bom dia

desculpe ai.. esqueci uma parte icon_smile_big.gif


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

euchapeu.png

Editado por - ico on 24/10/2012 11:29:14

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...