marcio1361303176 Posted October 20, 2005 Report Share Posted October 20, 2005 Amigos, eu executava estes comandos abaixo, pra mudar a estrutura do DBF, em clipper-DOS Porem em five ele não executa Teria como alguem me ajudar *--------*--------*------------------------------------ SET DELETE OFF CLOSE ALL CREATE CARTA_CO.NEW FROM D_ESTRU USE CARTA_CO.NEW APPEND FROM CARTA_CO.DBF USE RENAME CARTA_CO.DBF TO CARTA_CO.OLD RENAME CARTA_CO.NEW TO CARTA_CO.DBF CLOSE DATABASE Desde já Agradeço a Todos masterservicevrb@gmail.co Fivewin 2.3 + clipper 5.2e + SIXNSX Quote Link to comment Share on other sites More sharing options...
marcio1361303176 Posted October 20, 2005 Author Report Share Posted October 20, 2005 Amigos, eu executava estes comandos abaixo, pra mudar a estrutura do DBF, em clipper-DOS Porem em five ele não executa Teria como alguem me ajudar *--------*--------*------------------------------------ SET DELETE OFF CLOSE ALL CREATE CARTA_CO.NEW FROM D_ESTRU USE CARTA_CO.NEW APPEND FROM CARTA_CO.DBF USE RENAME CARTA_CO.DBF TO CARTA_CO.OLD RENAME CARTA_CO.NEW TO CARTA_CO.DBF CLOSE DATABASE Desde já Agradeço a Todos masterservicevrb@gmail.co Fivewin 2.3 + clipper 5.2e + SIXNSX Quote Link to comment Share on other sites More sharing options...
marcio1361303176 Posted October 20, 2005 Author Report Share Posted October 20, 2005 Amigos, eu executava estes comandos abaixo, pra mudar a estrutura do DBF, em clipper-DOS Porem em five ele não executa Teria como alguem me ajudar *--------*--------*------------------------------------ SET DELETE OFF CLOSE ALL CREATE CARTA_CO.NEW FROM D_ESTRU USE CARTA_CO.NEW APPEND FROM CARTA_CO.DBF USE RENAME CARTA_CO.DBF TO CARTA_CO.OLD RENAME CARTA_CO.NEW TO CARTA_CO.DBF CLOSE DATABASE Desde já Agradeço a Todos masterservicevrb@gmail.co Fivewin 2.3 + clipper 5.2e + SIXNSX Quote Link to comment Share on other sites More sharing options...
pauloaraujo Posted October 20, 2005 Report Share Posted October 20, 2005 Marcio, Que erro está dando?? Eu uso muito semelhante a isso (tirando o CREATE) e funciona. Paulo/CONTATO SISTEMAS Clipper53b / FW26 / Blinker70 Ajudar é um prazer, agradecer é uma obrigação PRESTIGIEM O III ENCONTRO DE USUÃRIOS DE FIVEWIN - 2005 Inscreva-se: http://www.installsis.com.br/encontro Quote Link to comment Share on other sites More sharing options...
marcio1361303176 Posted October 21, 2005 Author Report Share Posted October 21, 2005 Caro amigo, obrigado por Responder Somente estes comandos Funcionan SET DELETE OFF CLOSE ALL CREATE CARTA_CO.NEW FROM D_ESTRU USE CARTA_CO.NEW o resto, não Agora gostaria de informar que meus dados fica na pasta DADOS O CAMINHO COMPLETO SERIA C:\MESTOQ\DADOS O EXECUTAVEL FICA EM C:\MESTOQ E OS DBF+NSX EM \DADOS DESDE Jà AGRADEÇO A TODOS masterservicevrb@gmail.co Fivewin 2.3 + clipper 5.2e + SIXNSX Quote Link to comment Share on other sites More sharing options...
personal Posted October 21, 2005 Report Share Posted October 21, 2005 Não sei se vai ajudar, mas quando preciso alterar a estrutura de um arquivo, faço assim. Use ArqQuivo.dbf wCampo:=FieldName(n) // onde n e quantidade de campos com a nova estrutura. If (Empty(wCampo)) vArq:="C:\diretorio\arquivo.xxx" Use Copy File ARQQUIVO To &vArq Crio a nova estrutura. Abro o arquivo com a nova estrutura. Dou um append com os dados da estrutura velha. Se for o caso, gero as informações para os novos campos. Deleto os indices EndIf Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted October 21, 2005 Report Share Posted October 21, 2005 Desculpe.. mais para que o usuario mudaria a estrutura de um arquivo ??? já pensou um curioso alterando tudo em um programa já funcionando redondinho ??? Mais Se for para alterar antes do programa ficar pronto use o FOX ou o DBU do clipper. Abraços LUIZ ARRUDA - Corumba-MS FW 2.4 - CLP 5.3 - WS ico67@ibest.com.br Não Percam - 3º ENCONTRO DE FIVEWINERS - NOVEMBRO DE 2005 Quote Link to comment Share on other sites More sharing options...
aferra Posted October 21, 2005 Report Share Posted October 21, 2005 SET DELETE OFF CLOSE ALL CREATE \DADOS\CARTA_CO.NEW FROM D_ESTRU USE \DADOS\CARTA_CO.NEW APPEND FROM \DADOS\CARTA_CO.DBF CLOSE ALL RENAME \DADOS\CARTA_CO.DBF TO \DADOS\CARTA_CO.OLD RENAME \DADOS\CARTA_CO.NEW TO \DADOS\CARTA_CO.DBF CLOSE ALL Fazendo uns testes aqui no programa, funcionou blz, acho que teria que ser desta forma, indicando o caminho e o destino, fazendo direto do diretorio tb funcionou, espero ter ajudado ABraços Alessandro Quote Link to comment Share on other sites More sharing options...
personal Posted October 21, 2005 Report Share Posted October 21, 2005 Meu carissimo LUIZ ARRUDA, pense bem, leia com atenção. Não é para o usuário alterar a estrutura. Se isto fosse, para que programar. Isto serve para quando voce ter que alterar a estrutura de um arquivo de um sistema já em uso, ou seja implantado, rodando. Se for para alterar estrutura de um sistema ainda não implantado, o FOX ou DBU, torna-se mais obsoleto ainda, já que seria somente alterar onde cria-se os arquivos e indices. Quote Link to comment Share on other sites More sharing options...
tiaoFW Posted October 21, 2005 Report Share Posted October 21, 2005 Bom dia! Seria interessante voce postar a mensagem de erro, assim ficaria mais facil identificar o probleama! Abraços Tião FW 2.5/CLIPPER 5.3b, BLINKER 7 Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted October 21, 2005 Report Share Posted October 21, 2005 Sergio desculpe, eu pensei que li "ALTERAR A ESTRUTURA do DBF" e nao o local onde sao criados os arquivos e indices. Foi + - o que eu disse, porque altera-los via codigos, se temos ferramentas bem mais facil de fazer isso. Abraços LUIZ ARRUDA - Corumba-MS FW 2.4 - CLP 5.3 - WS ico67@ibest.com.br Não Percam - 3º ENCONTRO DE FIVEWINERS - NOVEMBRO DE 2005 Quote Link to comment Share on other sites More sharing options...
pauloaraujo Posted October 21, 2005 Report Share Posted October 21, 2005 Marcio, Acredito que não esteja renomeando devido já existir o arquivo de destino. ERASE CARTA_CO.OLD && <<<<<---- acrescentar essa linha RENAME CARTA_CO.DBF TO CARTA_CO.OLD RENAME CARTA_CO.NEW TO CARTA_CO.DBF É uma das possibilidades. Se não der certo, retorne. Um abraço Paulo/CONTATO SISTEMAS Clipper53b / FW26 / Blinker70 Ajudar é um prazer, agradecer é uma obrigação PRESTIGIEM O III ENCONTRO DE USUÃRIOS DE FIVEWIN - 2005 Inscreva-se: http://www.installsis.com.br/encontro Quote Link to comment Share on other sites More sharing options...
elitenet Posted October 21, 2005 Report Share Posted October 21, 2005 Abaixo vai uma rotina de atualizacao automatica de estrutura de arquivos. Function Atu_stru Local nomeold := "TESTE.DBF" Local nomenew := "_ESTE.DBF" Local memoold := "TESTE.FPT" Local memonew := "_ESTE.FPT" Local nomeind := "TESTE.CDX" Local campos, campo, nomecampo, tipocampo, pos // A matriz aOriginal contem a estrutura do .DBF utilizado // no sistema CursorWait() Close DataBases FileDelete( nomeind ) If ! File( nomenew ) If RenameFile( nomeold, nomenew ) == 0 RenameFile( memoold, memonew ) DbCreate( nomeold, M->adbf ) Else **Colocar mensagem MsgInfo( "Não consegui renomear!" ) CursorArrow() Quit EndIf dbUseArea( .T., "DBFCDX", nomeold, "TESTE1", .F. ) dbUseArea( .T., "DBFCDX", nomenew, "TESTE2", .F. ) dbGoTop() While ! Eof() dbSelectArea( "TESTE1" ) dbAppend() For Campo := 1 To fCount() nomecampo := FieldName( campo ) pos := aScan( aOriginal, { |matriz| matriz[1] == nomecampo } ) If pos # 0 Tipocampo := FieldType( campo ) If M->aOriginal[pos][2] == tipocampo TESTE1->( FieldPut( campo, &cAlias2->&nomecampo ) ) Else If tipocampo == "C" .And. M->aOriginal[pos][2] == "N" TESTE1->( FieldPut( campo, Str( &cAlias2->&nomecampo ) ) ) ElseIf tipocampo == "N" .And. M->aOriginal[pos][2] == "C" TESTE1->( FieldPut( campo, Val( &cAlias2->&nomecampo ) ) ) EndIf EndIf EndIf SysRefresh() Next dbSelectArea( "TESTE2" ) dbSkip() End Close DataBases FErase( nomenew ) FErase( memonew ) Else MsgInfo( "Achei o arquivo _" ) ** Colocar mensagem CursorArrow() Quit EndIf CursorArrow() Return(Nil) Marcelo Gomes elitenet@terra.com.br FW 2.3C/CLIPPER 5.2E/BLINKER 7.0 Quote Link to comment Share on other sites More sharing options...
elitenet Posted October 21, 2005 Report Share Posted October 21, 2005 Desculpe na funcao acima tem uns errinhos que vi so depois de postar, acertei nesta aqui. Function Atu_stru Local nomeold := "TESTE.DBF" Local nomenew := "_ESTE.DBF" Local memoold := "TESTE.FPT" Local memonew := "_ESTE.FPT" Local nomeind := "TESTE.CDX" Local campos, campo, nomecampo, tipocampo, pos // A matriz aOriginal e M->adbf contem a estrutura do .DBF utilizado no sistema CursorWait() Close DataBases FileDelete( nomeind ) If ! File( nomenew ) If RenameFile( nomeold, nomenew ) == 0 RenameFile( memoold, memonew ) DbCreate( nomeold, M->adbf ) Else **Colocar mensagem MsgInfo( "Não consegui renomear!" ) CursorArrow() Quit EndIf dbUseArea( .T., "DBFCDX", nomeold, "TESTE1", .F. ) dbUseArea( .T., "DBFCDX", nomenew, "TESTE2", .F. ) dbGoTop() While ! Eof() dbSelectArea( "TESTE1" ) dbAppend() For Campo := 1 To fCount() nomecampo := FieldName( campo ) pos := aScan( aOriginal, { |matriz| matriz[1] == nomecampo } ) If pos # 0 Tipocampo := FieldType( campo ) If M->aOriginal[pos][2] == tipocampo TESTE1->( FieldPut( campo, TESTE2->&nomecampo ) ) Else If tipocampo == "C" .And. M->aOriginal[pos][2] == "N" TESTE1->( FieldPut( campo, Str( TESTE2->&nomecampo ) ) ) ElseIf tipocampo == "N" .And. M->aOriginal[pos][2] == "C" TESTE1->( FieldPut( campo, Val( TESTE2->&nomecampo ) ) ) EndIf EndIf EndIf SysRefresh() Next dbSelectArea( "TESTE2" ) dbSkip() End Close DataBases FErase( nomenew ) FErase( memonew ) Else MsgInfo( "Achei o arquivo _" ) ** Colocar mensagem CursorArrow() Quit EndIf CursorArrow() Return(Nil) Observacao: Esta rotina permite voce incluir novos campos no arquivo, retirar campos do arquivo, mudar o formato de campos do arquivo. Marcelo Gomes elitenet@terra.com.br FW 2.3C/CLIPPER 5.2E/BLINKER 7.0 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.