Página 1 de 1

DBF Confusa! help

Enviado: 26 Ago 2009 08:45
por kristo
Bom dia caros amigos, espero que todos estejam em paz.
Amigos estou com um problema meio sinistro aqui, tenho um banco de dados com uma coluna somente, a coluna se chama NOME e nela contém o nome da pessoa, so que segunda linha contém o endereço da pessoa, ou seja é uma linha nome e aproxima linha endereço, eu gostaria se fosse possível de acrescentar mais uma coluna nesse banco de dados com o nome de endereço e transferir a linha que consta o endereço para essa nova coluna chamada endereço.
EX.
Nome
José Carlos do Nascimento
Rua pedreiras, 62
Antonio José
Rua Mascote, 98

Gostaria que ficasse assim:
Nome | Endereço
José Carlos do Nascimento | Rua pedreiras, 62
Antonio José | Rua Mascote, 98

Será que é possível uma PRG para essa função?
Se alguém puder monta-la para mim, vai me ajudar muito.
Desculpe o abuso, mais por gentileza me ajudem.

Kristo

Ps. o nome da DBF é "DADOSPF"

Re: DBF Confusa! help

Enviado: 26 Ago 2009 09:55
por alaminojunior
kristo escreveu:tenho um banco de dados com uma coluna somente, a coluna se chama NOME e nela contém o nome da pessoa, so que segunda linha contém o endereço da pessoa, ou seja é uma linha nome e aproxima linha endereço,
Assumindo que esta ordem não falha, pode-se incluir o campo endereço no dbf e em seguida:

Código: Selecionar todos

Function main
public ender
use nomes
do while !eof()
    repl endereco with pega_end(recno()+1)
    skip+2
enddo
pack
return

function pega_end(arg)
local estava:= recno()
dbgoto(arg)
ender = nome
delete
dbgoto(estava)
return ender
Codifiquei aqui mesmo, sem testar.

Não me lembro agora o número da conta, mas depois mando o boleto. :))

Re: DBF Confusa! help

Enviado: 26 Ago 2009 10:54
por gvc
Eu acho melhor criar ou DBF, só por segurança.

Código: Selecionar todos

function main

local a1

use dadospf alias hum
a1 := dbstruct()

aadd(a1, {'endereco', 'C', 50, 0})

dbcreate('novo', a1)

use novo alias doiz new 

hum->(dbgotop())
while !hum->(eof())
   doiz->(dbappend())
   doiz->nome := hum->nome
   hum->(dbskip())
   doiz->endereco := hum->nome
   hum->(dbskip())
end

dbcloseall()

return(Nil)
Boa sorte. Espero ter ajudado.

Re: DBF Confusa! help

Enviado: 26 Ago 2009 12:16
por kristo
Amigos, desculpe minha ignorância, mais é somente pegar essa função e compilar?
Pois eu estou compilando e não está acontecendo nada ao executar.
Eu não sei montar uma prg inteira com todas as funções, caminhos.
Se não for pedir muito, alguém poderia fazer isso.

Kristo.

Re: DBF Confusa! help

Enviado: 26 Ago 2009 12:25
por alaminojunior
Se for usar o meu exemplo:

Abra o dadospf.dbf com o dbu e inclua o novo campo "endereco"
em seguida rode o programinha. Depois de compilar e linkar, é claro.

Para compilar: clipper main
e depois linke: rtlink fi main

Código: Selecionar todos

Function main
public ender
use dadospf
do while !eof()
    repl endereco with pega_end(recno()+1)
    skip+2
enddo
pack
return

function pega_end(arg)
local estava:= recno()
dbgoto(arg)
ender = nome
delete
dbgoto(estava)
return ender
Mas faça uma cópia do dbf antes, pois como eu disse, não testei.

Re: DBF Confusa! help

Enviado: 26 Ago 2009 14:45
por kristo
Amigo, fiz tudo como você explicou, compilei, linkei, acrecentei o novo campo "endereco", rodei o executável e nada aconteceu.

Obrigado pela ajuda e paciência.

Kristo

Re: DBF Confusa! help

Enviado: 26 Ago 2009 14:49
por alaminojunior
Que coisa.
Se quiser mandar o arquivo para eu tentar, estou a disposição.
edson.alamino@itelefonica.com.br

Re: DBF Confusa! help

Enviado: 26 Ago 2009 19:18
por gvc
[kristo]
Qual dos exemplos não funcionou???

Re: DBF Confusa! help

Enviado: 27 Ago 2009 08:58
por kristo
alaminojunior

Meu amigo muito abrigado, realmente funcionou perfeitamente, eu não sei o que eu estava fazendo de errado, obrigado em dispor o seu tempo comigo, um forte abraço.

Paz a todos

Re: DBF Confusa! help

Enviado: 27 Ago 2009 09:01
por kristo
GVC

Eu testei apenas o exemplo do alaminojunior, pois eu estava com dificuldade de fazer rodar a PRG dele, então ficamos batalhando o que estava acontecendo, e como sempre, era EU o ERRO, mais um dia eu aprendo.

Abrigado a todos pela ajuda.

Kristo