1

Konu: table field sınırı

arkadaşlar table field sınırı yetmiyor nası bir çözüm üretebiliriz bilmiyorum aynı table içinde 320 fielda ihtiyacım var

Bilgi Paylaşıldıkça Artar...!

2

Re: table field sınırı

VFP tablolariyla, tek tablo seklinde bir cozumu yok. SQL server tablosu kullanirsan yapabilirsin. VFP tablolariyla, 2 adet tabloyu 1'e 1 baglayarak yapabilirsin:

tablo1: primaryKey, f1,f2,f3...f160
tablo2: primaryKey, f161,f162,f163...f320

gibi.

Bu 320 alana gerecekten ihtiyacin var mi onu da gozden gecir. Belki de soyle bir cozum de olabilir:

rowNo, fieldNo, Deger

Mesela uygulama parametreleri tablosu. 320 parametre var ise (ki yarin mutlaka 321 ve fazlasi olur) 320 alanli tablo yerine yukaridaki gibi 3 alanli tablo yeterli.

3

Re: table field sınırı

Antepli;

Çetin Hocanın dediği gibi 320 fielda gerçekten ihtiyacın var mı?

Bence bu tip bir data yapısına geçmeden önce bir kez daha düşün. Hatta bir çok kez düşün. İnternet üzerinde database normalizasyonu olarak konuyu araştır. Fırsat bulursam sana detaylı olarak açıklama yapmaya çalışıcam.

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ü

4

Re: table field sınırı

cetinbasoz yazdı:

SQL server tablosu kullanirsan yapabilirsin.
.....


SQL tablosu 255den fazla ise VFP sorgulamasında text (memofield) olarak dönüyor.

VFP9 SP2

5

Re: table field sınırı

Aşağıdaki linklerde temel olarak normalizasyon kuralları var :

http://www.verivizyon.com/kitapoku.asp?catid=48

http://www.kodaman.org/yazi/relational- … ani-yapisi

http://www.frmtr.com/database-programla … llari.html

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: table field sınırı

konuka yazdı:
cetinbasoz yazdı:

SQL server tablosu kullanirsan yapabilirsin.
.....


SQL tablosu 255den fazla ise VFP sorgulamasında text (memofield) olarak dönüyor.

255 tek bir alanin içeriğinin boyutu. Alan saysı 1-2 bile olsa o kısıtlama var.

7

Re: table field sınırı

tabiki tablolara bölerek yapabilirim ama raporlarda sıkıntı oluyor bir kişiye ait 1 raporun içerisinde 320 farklı bilgivar işlemleri yaparken zaten bölünmüş konumda 4 tabloda raporda birleştiremedim o bilgileri tek bir raporda göstermemlazım konuyu birazdaha açıklamış olayım

Bilgi Paylaşıldıkça Artar...!

8

Re: table field sınırı

antepli yazdı:

tabiki tablolara bölerek yapabilirim ama raporlarda sıkıntı oluyor bir kişiye ait 1 raporun içerisinde 320 farklı bilgivar işlemleri yaparken zaten bölünmüş konumda 4 tabloda raporda birleştiremedim o bilgileri tek bir raporda göstermemlazım konuyu birazdaha açıklamış olayım

raporlarda DataEnvironment Kullaniyorsan oyle yapma Select SQL ile joinlerle raporu nu cursor olarak olustur oyle kullan ayrica rapor uzerinde 1 den fazla cursor un alanlarini da gostermen mumkun

9

Re: table field sınırı

galiba sevgili anteplinin ihtiyacı
raporda "data grouping" - "Çıktıda bir satıra sığmayan alanlar altalta konması" gibi ayarlamalar !

VFP9 SP2

10

Re: table field sınırı

soykanozcelik yazdı:
antepli yazdı:

tabiki tablolara bölerek yapabilirim ama raporlarda sıkıntı oluyor bir kişiye ait 1 raporun içerisinde 320 farklı bilgivar işlemleri yaparken zaten bölünmüş konumda 4 tabloda raporda birleştiremedim o bilgileri tek bir raporda göstermemlazım konuyu birazdaha açıklamış olayım

raporlarda DataEnvironment Kullaniyorsan oyle yapma Select SQL ile joinlerle raporu nu cursor olarak olustur oyle kullan ayrica rapor uzerinde 1 den fazla cursor un alanlarini da gostermen mumkun


soykan bende 4 tablo var fieldlar tablo1  kodu , a1, a2, a3.... a253  tablo2 kodu, a255, a256, a300.... tablo3 kodu, a455, a456, a500....  gibi devam edip gidiyor

raporda tek satırda dediğin şekliyle nasıl birleştirecem   bir örnek verebilirmisin kardeş

Bilgi Paylaşıldıkça Artar...!

11

Re: table field sınırı

4 tablonun da 1 e 1 fieldlarinin eslenerek tek satirda olmasini mi istiyorsun ?

tablo1.f1 = tablo2.f256
tablo3.f513 = tablo4.f768
vs gibi mi

onu anlatabilirsen ona gore bir SQL yazabilelim , ayarica bu 4 tablonun birbiri ile iliskisi hangi alanla saglaniyor ?

12

Re: table field sınırı

soykanozcelik yazdı:

4 tablonun da 1 e 1 fieldlarinin eslenerek tek satirda olmasini mi istiyorsun ?

tablo1.f1 = tablo2.f256
tablo3.f513 = tablo4.f768
vs gibi mi

onu anlatabilirsen ona gore bir SQL yazabilelim , ayarica bu 4 tablonun birbiri ile iliskisi hangi alanla saglaniyor ?

hayır kardeş
önce hepsinde ki ortak alan kodu

tablo1 içindeki alanlar
kodu , a1, a2, a3.... a253

tablo2 içindeki alanlar
kodu, a255, a256, a300....

tablo3 içindeki alanlar
kodu, a455, a456, a500

tablo4 içindeki alanlar
kodu, a600, a601, a700

şimdi tablo1 de a1 den a253 e kadar alanı  tablo2 den a255, a256, a300 alnı  tablo3 a455, a456, a500 alanı ve tablo4 a600, a601, a700 e kadar alanı kodu örnegin 1 olanları almak istiyorum buda toplamda 320 tane alan ediyor kodu dahil 320 alandaki bilgiyi bir satırda göstermem lazım

Bilgi Paylaşıldıkça Artar...!

13

Re: table field sınırı

ornek data gorebilsek daha iyi olacak

asagidaki SampleDataAsText.prg kodu nu VFP altina SampleDataAsText.prg olarak kaydet

modi comm la bos bir .prg dosyasi ac

Visual Fox Pro
do home()+"SampleDataAsText" with "tablo1,0"


paste ile .prg dosyasi icine yapistir

Visual Fox Pro
do home()+"SampleDataAsText" with "tablo2,0"


paste ile .prg dosyasi icine yapistir

Visual Fox Pro
do home()+"SampleDataAsText" with "tablo3,0"


paste ile .prg dosyasi icine yapistir

Visual Fox Pro
do home()+"SampleDataAsText" with "tablo4,0"


paste ile .prg dosyasi icine yapistir

sonra bu .prg icindeki kodlari buraya foruma koy ornek datana gore sana gereken en uygun cozumu uretebilelim

Visual Fox Pro
* SampleDataAsText.prg

*- Author Cetin BASOZ
Lparameters tcInfo
LOCAL loCloseTemp, ix
loCloseTemp = CREATEOBJECT('CloseTemp')
 
LOCAL ARRAY laInfo[1]
Create Cursor crsSampler (procedureName m, procedureCode m)
For ix = 1 To ALINES(laInfo,m.tcInfo,1+4,',',CHR(13),CHR(10)) STEP 2
  GetProcedureCode(laInfo[m.ix],VAL(laInfo[m.ix+1]))
Endfor
DataCreationCodeToClip()
MESSAGEBOX('Data creation is copied to clipboard',0,'Sample Data',3000)
 
Procedure DataCreationCodeToClip
  Local Array aProcCode[1]
  Local lcTemp1,lcTemp2
  lcTemp1 = Sys(2015)+'.tmp'
  lcTemp2 = Sys(2015)+'.tmp'
  Select crsSampler
  Scan
    Strtofile(procedureName,m.lcTemp1,.T.)
    Strtofile(procedureCode,m.lcTemp2,.T.)
  Endscan
  _Cliptext = Filetostr(m.lcTemp1) + Filetostr(m.lcTemp2)
  Erase (m.lcTemp1)
  Erase (m.lcTemp2)
Endproc
 
Procedure GetProcedureCode(tcAlias,tnRecords)
  Local lcTemp, ix, lcData, lcRetVal
  lcTemp = Sys(2015)+'.tmp'
  If !Used(m.tcAlias)
    Select * From (m.tcAlias) Into Cursor crsSampling nofilter
    lcCursorName = Juststem(m.tcAlias)
  Else
    Select (m.tcAlias)
    lcCursorName = Alias()
  Endif
  Locate
  If Empty(m.tnRecords)
    Copy To (m.lcTemp) Type Delimited
  Else
    Copy To (m.lcTemp) Type Delimited Next m.tnRecords
  Endif
  lcData = Filetostr(m.lcTemp)
  Erase (m.lcTemp)
 
  Set Textmerge Delimiters To '%%','%%'
  Set Textmerge To (m.lcTemp) Noshow
  Set Textmerge On
\
\ Procedure CreateCursor_%%m.lcCursorName%%
\ LOCAL lcData, lcTemp
\ lcTemp = SYS(2015)+'.tmp'
\ TEXT TO m.lcData noshow
\ %%m.lcData%%
\ ENDTEXT
\
\ STRTOFILE(m.lcData,m.lcTemp)
\
\ create CURSOR %%m.lcCursorName%% ;
\ ( ;
  For ix=1 To Afields(aStruc)
%%IIF(m.ix > 1,',','')%%
\\%%aStruc[m.ix,1]%% %%aStruc[m.ix,2]%%(%%aStruc[m.ix,3]%%,%%aStruc[m.ix,4]%%)
\\ %%IIF(aStruc[m.ix,5],'',' NOT ')%% NULL
\\ %%IIF(aStruc[m.ix,6],'NOCPTRANS','')%% ;
  Endfor
)
\
\ APPEND FROM (m.lcTemp) TYPE delimited
\ ERASE (m.lcTemp)
\ endproc
  Set Textmerge To
  Set Textmerge Off
  Insert Into crsSampler Values (    Textmerge('CreateCursor_%%m.lcCursorName%%()%%CHR(13)+CHR(10)%%'), Filetostr(m.lcTemp) )
  Set Textmerge Delimiters
  Erase (m.lcTemp)
ENDPROC
 
** Class to close any cursors created after it was instantiated
** Author: Dragan Nedeljkovich
Define Class CloseTemp As Custom
  Dimension a1[1]
  nFiles=0
  Procedure Init
    This.nFiles=Aused(atemp)
    If This.nFiles > 0
      Acopy(atemp, This.a1)
    Else
      This.a1=""
    Endif
  endproc
 
  Procedure Destroy
    For i=1 To Aused(aNow)
      If Ascan(This.a1, aNow[i,1],-1,-1,1,2+4)=0
        Use In aNow[i,1]
      Endif
    Endfor
  endproc
Enddefine

14

Re: table field sınırı

soykanozcelik yazdı:
antepli yazdı:

tabiki tablolara bölerek yapabilirim ama raporlarda sıkıntı oluyor bir kişiye ait 1 raporun içerisinde 320 farklı bilgivar işlemleri yaparken zaten bölünmüş konumda 4 tabloda raporda birleştiremedim o bilgileri tek bir raporda göstermemlazım konuyu birazdaha açıklamış olayım

raporlarda DataEnvironment Kullaniyorsan oyle yapma Select SQL ile joinlerle raporu nu cursor olarak olustur oyle kullan ayrica rapor uzerinde 1 den fazla cursor un alanlarini da gostermen mumkun


soykan Select SQL oluşturulan cursor  de field sınırı varmı ?

Bilgi Paylaşıldıkça Artar...!

15

Re: table field sınırı

evet var sana raporda 255 ten fazla sutun lazimsa html  rapor dusunebilirsin boylece sutun sorunun kalmaz

16

Re: table field sınırı

1) Tablolar arasinda relation kullan. O zaman tek cursorde olamalari gerekmez
2) Raporda array kullan. Tek satirin degerlerini arraye koy, raporda da array goster. Cursorda ise sadece kodu alanini tutsan yeter. Bir function yazarsin satir basina arraye degerleri alir.

17 Son düzenleyen, antepli (13.12.2010 20:52:08)

Re: table field sınırı

Çetin bey ;

"Bir function yazarsin satir basina arraye degerleri alir."

fpw26 da dediginizi eskiden beri uyguluyorum ama vfp reportunda nasıl uygularım bilmiyorum fpw26 da rapora bir değişken koyup içine   =islem() yazıp islem prg yi çalıştırıyor ve arraya bilgi aldırıp raporda gösteriyordum vfp da beceremedim

Bilgi Paylaşıldıkça Artar...!

18

Re: table field sınırı

Vazgectim array lafindan:) Relation kur, o daha kolay.