1

Konu: text dosyasından dbf'e veri aktarımı

Her satırı 342 karakterden olusan abc.txt dosyası var.

Her satırdaki ilk 180 karakteri dbf tablomun ilk kolonuna,
sonraki 162 karakteri ikinci kolona aktarmam gerekiyor.

Sanırım fread() ile yapılabilir ancak pek hakim degilim..

2

Re: text dosyasından dbf'e veri aktarımı

Erdal,
"Her satirdaki"  "ilk 180" "sonraki 160" dersen bu sabit kolon formati, diger adiyla sistem data formati (SDF).

Visual Fox Pro
create cursor xx (f1 c(180), f2 c(162))

append from 'dosya.txt' type SDF

3

Re: text dosyasından dbf'e veri aktarımı

SDF tipi append icin illa boslukla ayrılmıs kolon formatı gerektigini zannediyordum..Cok Sagol Cetin Abi..

4

Re: text dosyasından dbf'e veri aktarımı

peki bu karakterler hep sabit uzunluktamı bnde değişken olan uzunlukta ama txt dosya içerisinde gerekli uzunluğa tamamlanmış durumda bunları atmaya çalışıyorumda yardımcı olursanız.

5

Re: text dosyasından dbf'e veri aktarımı

Moderom; örnek bir data verirsen ve ne istediğini bir excel formatında gösterebilirsen ( mesela rapidshare de bir link ) bir çok değişik fikir ve kod örneği alabilirsin

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

6

Re: text dosyasından dbf'e veri aktarımı

http://www.fox4um.com/post/12425/#p12425 yapmak istediğim şey bu aslında ama komple dosyalarımı atmayı deneyeyim. bir amatör işi anlıyacağınız

7

Re: text dosyasından dbf'e veri aktarımı

acaba bu komutta ne gibi bir hata var

Visual Fox Pro
set default to d:\

Dosyaadi=getfile('*','Dosya Adi:','Dosya Al',0,"Dosya Seçimi")
buay=allt(this.parent.parent.combo1.value) *burada takılıyor
with thisform
do case
case buay=1.......

8

Re: text dosyasından dbf'e veri aktarımı

Takiliyor derken? Bir tek durumda value numeric olabilir ona mi takildin acaba. Kodun alt kisminda supheli:

case buay=1

var. Sanki buay'in numerik olmasini beklermis gibi bir kod olmus. Yukarida ise alltrim() kullaniliyor (her nedense).
Ilk satirdaki 'set default' ise bunun bana asla exe yapilmayacak bir projenin kodu oldugunu dusunduruyor.

9

Re: text dosyasından dbf'e veri aktarımı

cetin abi nasıl yapmalıyım

Visual Fox Pro
buay=int(this.parent.parent.combo1.value)


bu şekilde yapsam olmazmı?

10 Son düzenleyen, cetinbasoz (04.01.2011 20:38:03)

Re: text dosyasından dbf'e veri aktarımı

Olabilir, bu is biraz, 'aklimdan bir sayi tuttum bil bakalim' gibi oluyor:) Senin data tiplerini ben bilemem. Hata mesajlarindan filan hic bahsetmiyorsun.

Alltrim(...)'de hata verdigine gore buyuk olasikla hata zaten onun Int olmasi nedeniyledir. Int( 1  ) gereksiz de olsa hata vermez.

11

Re: text dosyasından dbf'e veri aktarımı

bu şekilde yaptığımda birde bana şu uyarı geldi
unknow member combo1
sonra parent in birini sildim bu seferde
function  argument value type or count is invalid

12

Re: text dosyasından dbf'e veri aktarımı

şöyle birşey denedim olmadı

Visual Fox Pro
buay=thisform.container2.combo1.displayvalue

if buay=""
    messagebox("ay seçmedin")
else
    do case
        case buay =1
            ....................
 
        case buay =2
            ....................
 
        case buay =3
            ....................
    endcase
endif

sürekli ay seçmediniz diye mesaj geliyor seçim yaptığım halde

13

Re: text dosyasından dbf'e veri aktarımı

Selamlar.
Bir dizin içinde formatları aynı olan, farklı isimlerde birçok -txt- dosya var.
txt dosya isimleri sabit olsa mesele değil. Ancak adları değişken olan bu
text dosyaların tümünü DBF'ye nasıl aktarabiliriz.

14 Son düzenleyen, konuka (26.02.2011 00:29:48)

Re: text dosyasından dbf'e veri aktarımı

kontrolsuz direk doğaçlama - aşağıdaki gibi olmalı

Visual Fox Pro
LOCAL ARRAY larTxtDosyalar(1,5), larDBFe(1)

SET DIRE TO c:\txtdosyalardizini
ADIR(larTxtDosyalar,"txt") && belki ADIR(larTxtDosyalar,"c:\txtdosyalardizini\txt") çalışır
FOR m.xtxt=1 TO ALEN(larTxtDosyalar,1)
  IF! larTxtDosyalar[m.xtxt,5] = "D"  && başka özellik de olabilir helpe bak
    ALINES(larDBFe,FILETOSTR("c:\txtdosyalardizini\"+larTxtDosyalar[m.xtxt,1] ))
    FOR m.xSatirlar= 1 TO ALEN(larDBFe,1)
      INSERT INTO dbfDosya (numerikalan, karakteralan, sonalan) ;
      VALUES ( VAL(LEFT(larDBFe[m.xSatirlar],10)), ;
              SUBSTR(larDBFe[m.xSatirlar],11,5), ;
              RIGHT(larDBFe[m.xSatirlar],10)  )
    ENDF
  ENDIF
ENDF
VFP9 SP2

15

Re: text dosyasından dbf'e veri aktarımı

Ben böyle yapıyorum

! dir /B C:\DEFTER\*.txt > DIR.TXT

Bir cursor oluşturup, (Örn. liste)
Sele liste
Appen from DIR  SDF (deli)
go top
Do while !eof()
dosyaadi=liste. (fieldname)

sele (tektleri aktaracağım dbf)
appe from &dosyaadi sdf
sele dir
skip
enddo

Çok daha basit gibi. Benim aradığım bunun akademik olanı :-)

16

Re: text dosyasından dbf'e veri aktarımı

Visual Fox Pro
Local Array laDosyalar[1]

Local ix, lcDizin
lcDizin = "c:\TextDosyalarDizini"
 
Select myTable
For ix=1 To Adir(laDosyalar, Addbs(m.lcDizin)+'*.txt')
  Append From (Addbs(m.lcDizin)+laDosyalar[m.ix,1]) Type Sdf
Endfor

17

Re: text dosyasından dbf'e veri aktarımı

Evet işte bu !
Çetin bey teşekkürler.