1

Konu: Grid de cell merge gibi birsey

Merhaba,

yine zihni sinir bir soru buldum. sorayim istedim smile

bizim kullanilardan biri SAP de calisirken bir modulu acip bazi kayitlari listeledi. Listelemesi ile benim soke olmam bir oldu. grid uzerindeki bazi hucreler birlesikti.

mesela ayni tarih degerine sahip olan hucreler birlesik giderleri cizgiler ile bolunmustu. bunu excelde yapmak 2 tik tik. isaretle ve hucreleri birlestir de olsun bitsin.

Acaba ayni degere sahip grid hucrelerinin birlestirilmis olarak gosterilmesi olayi Foxpro 9.0 da (yada herhangi bir versiyonda) mevcut mudur? mevcut ise nasil?

Klasik ama cok dogru - Bilgi Paylastikca Cogalir ve Degerlenir !

2

Re: Grid de cell merge gibi birsey

VFP5 ile bile mumkun ancak native grid ile degil, MS Hierarchical FlexGrid activex gridiyle. Bu kodu daha dun universalthread'e postaladim:

Visual Fox Pro
Local rs As adodb.recordset

Local cn As adodb.Connection
 
TEXT TO m.strShape TEXTMERGE NOSHOW PRETEXT 8
shape append
  new adChar(10) as Region,
  new adInteger as RegionID,
  ((shape append
  new adChar(20) as Series,
  new adInteger as RegionID )
  as ls relate regionID to RegionID)
ENDTEXT
 
#include adoconstants.h
cn = Createobject("adodb.connection")
rs = Createobject("adodb.recordset")
cn.ConnectionString = "Provider=MsDataShape;Data Provider=NONE"
cn.Open()
rs.Open(m.strShape,cn,adOpenStatic,adLockOptimistic)
 
For regions=1 To 3
    rs.AddNew
    rs.Fields("region").Value = "Region"+PADL(m.regions,2)
    rs.Fields("regionID").Value = m.regions
    For lseries = 1 To 5
        rs2 = rs.Fields("ls").Value
        rs2.AddNew
        rs2.Fields("Series").Value = "R"+PADL(m.regions,2)+":Line series"+PADL(m.lseries,2)
    Endfor
Endfor
 
ShowMe(rs)
 
Function ShowMe(toRecordSet)
Public oForm
oForm = Createobject('myForm', toRecordSet)
oForm.Show
Endfunc
 
Define Class myform As Form
    Height = 450
    Width = 750
    Name = "Form1"
 
    Add Object hflex As OleControl With ;
        Top = 10, Left = 10, Height = 430, Width = 730, Name = "Hflex", ;
        OleClass = 'MSHierarchicalFlexGridLib.MSHFlexGrid'
 
    Procedure Init
    Lparameters toRecordSet
    With This.hflex
        .Datasource = toRecordSet
        .AllowUserResizing = 3
        .Cols(0) = 2
        .Cols(1) = 1
        .ColWidth(0,0) = 16*15
        .ColWidth(0,1) = 100*15
 
           .Col = 2
           .ColSel = 2
        FOR ix = .FixedRows TO .Rows-1
            .Row = m.ix
            .RowSel = m.ix
            DO case
            CASE ix%5=0
            lnColor = RGB(255,255,0)
            CASE ix%4=0
            lnColor = RGB(0,255,255)
            CASE ix%3=0
            lnColor = RGB(192,192,0)
            CASE ix%2=0
            lnColor = RGB(0,192,192)
            OTHERWISE
            lnColor = RGB(192,192,192)
            ENDCASE
            .CellBackColor = m.lnColor
        ENDFOR 
    Endwith
    Endproc
Enddefine


Dikkat et burada ayni anda birden fazla teknigin kullanimi var. Ondan karisik gelebilir. Tablolarin varken daha kolay. Flexgrid icin burada hierarchy var, merge onun uzerinden. Hierarchy olmadigi zaman MergeCells diye bir property var onu kuruyorsun (ayni satirda, ayni kolonda, hepsinde ayni olan degerlerin merge edilmesi mumkun yani).
Native grid ile de mumkun aslinda. Bizim ana urunun test kullanimi dagitiliyor olsa seni sok edebilecek ve soylenmese grid oldugunu bile anlamayacagina bahse girebilecegim kontroller var:)

3

Re: Grid de cell merge gibi birsey

Native gridli bir ornekte görsek ne kadar güzel olurdu smile

bu arada MS Hierarchical FlexGrid activex gridiyle cari hesap kodlarini listeleyen + tıklayinca cari hesap hareketlerini listeleyen bir calismaya ihtiyacim var nasil yapabilirim ?

kısaca cari hesap kodlarina form loadinda mesela oluşturulmuş cari hesap hareketlerini join edip Flexgrid te göstermek istiyorum

http://www.soykansoft.com/images/twitter.jpghttp://www.soykansoft.com/images/wp.jpg

4

Re: Grid de cell merge gibi birsey

Burada aysbergin ancak ucu gosteriliyor. Tonlarca property, metodu var.
Native grid ornegi gormen icin Izmir'e gelmen gerekli o zaman:)

Visual Fox Pro
TESTDATALOC = _samples+"data\testdata.DBC"

 
oForm = createobject('myForm')
oForm.Show
Read events
 
Define CLASS myform AS form
  Top = 0
  Left = 0
  Height = 450
  Width = 750
  DoCreate = .T.
  Caption = "Form1"
  Name = "Form1"
 
  Add OBJECT command1 as commandbutton with ;
    Autosize = .t., ;
    Top = 0, ;
    Left = 0, ;
    Name = "Set1", ;
    Caption = 'Sample 1'
 
  Add OBJECT command2 as commandbutton with ;
    Autosize = .t., ;
    Top = 0, ;
    Left = 0, ;
    Name = "Set2", ;
    Caption = 'Sample 2'
 
  Add OBJECT command3 as commandbutton with ;
    Autosize = .t., ;
    Top = 0, ;
    Left = 0, ;
    Name = "Set3", ;
    Caption = 'Sample 3'
 
  Add OBJECT command4 as commandbutton with ;
    Autosize = .t., ;
    Top = 0, ;
    Left = 0, ;
    Name = "Set4", ;
    Caption = 'Sample 4'
 
  Add OBJECT hflex AS olecontrol WITH ;
    Top = 0, ;
    Left = 0, ;
    Height = 420, ;
    Width = 750, ;
    Name = "Hflex", ;
    OleClass = 'MSHierarchicalFlexGridLib.MSHFlexGrid'
 
  Procedure LoadSet
    Lparameters tnSet
    Local oRecordset,oConnection, strCn, strShp
 
    strCn =    [Provider=MSDataShape;Persist Security Info=False;]+;
      [Data Source=]+TESTDATALOC+[;Data Provider=VFPOLEDB]
 
    oRecordset = CreateObject("adodb.recordset")
    oConnection = CreateObject("adodb.connection")
 
    With oConnection
    .Provider = "MSDataShape"
    .ConnectionString = strCn
    .Open
  Endwith
 
  lcSel1 = [ select customer.cust_id, ]+;
    [   customer.Company,]+;
    [   orders.order_id,]+;
    [   orders.Order_date ]+;
    [ from customer ]+;
    [  inner join orders on customer.cust_id = orders.cust_id ]
 
  lcSel2 = [ select od.order_id, od.line_no, ]+;
    [   products.prod_name, ]+;
    [   products.no_in_unit as 'Packaging', ]+;
    [   od.unit_price, ]+;
    [   od.Quantity, ]+;
    [   od.unit_price * od.quantity as ExtendedPrice ]+;
    [ from orditems as od ]+;
    [  inner join products on od.product_id = products.product_id ]
 
  Do case
    Case tnSet = 1
      strShp = [SHAPE TABLE customer ]+;
        [  APPEND ( (SHAPE TABLE orders   ]+;
        [    APPEND (TABLE orditems RELATE order_id TO order_id)) ]+;
        [  RELATE cust_id TO cust_id ) ]
    Case tnSet = 2
 
      strShp = [SHAPE { select Company, cust_id from customer } ]+;
        [APPEND (( SHAPE { select distinct First_name, Last_name, a.emp_id + cust_id as "Emp_sel", cust_id  from employee a inner join orders b on a.emp_id = b.emp_id }  ]+;
        [APPEND (( SHAPE { select order_date, order_net, shipped_on, emp_id + cust_id as "Emp_sel",order_id from orders }  ]+;
        [APPEND ( { select order_id, line_no, prod_name from orditems inner join products on products.product_id = orditems.product_id } AS rsOrditems  ]+;
        [RELATE order_id TO order_id )) AS rsEmployee ]+;
        [RELATE emp_sel TO emp_sel )) AS rsOrders  ]+;
        [RELATE cust_id TO cust_id ) ]
    Case tnSet = 3
 
      strShp = [ SHAPE  {SELECT cust_id, company FROM customer} ]+;
        [APPEND ({SELECT cust_id, order_id, order_date, order_net ]+;
        [         FROM orders ]+;
        [         WHERE order_date < {1/1/1996} AND cust_id = ?} ]+;
        [         RELATE cust_id TO PARAMETER 0) AS rsOldOrders, ]+;
        [       ({SELECT cust_id, order_id, order_date, order_net ]+;
        [         FROM orders ]+;
        [         WHERE order_date >= {1/1/1996}} ]+;
        [         RELATE cust_id TO cust_id) AS rsRecentOrders ]
 
    Case tnSet = 4
      strShp = [  SHAPE ]+;
        [(SHAPE {]+lcSel1+[ } as rs1 ]+;
        [    APPEND  ({]+lcSel2+[ } AS rsDetails RELATE order_id TO order_id),  ]+;
        [ SUM(rsDetails.ExtendedPrice) AS OrderTotal, ANY(rsDetails.order_id)) AS rsOrders ]+;
        [COMPUTE  rsOrders, ]+;
        [SUM(rsOrders.OrderTotal) AS CustTotal, ]+;
        [ANY(rsOrders.Company) AS Cmpny    ]+;
        [   BY cust_id ]
 
  Endcase
  With oRecordset
    .ActiveConnection = oConnection
    .Source = strShp
    .Open
  Endwith
 
  With this.hflex
    .Datasource = oRecordset
    .Mergecells = 3
    .GridColorBand(1) = rgb(255,0,0)
    .GridColorBand(2) = rgb(0,0,255)
    .GridColorBand(3) = rgb(0,255,0)
    .ColWidth(0,0) = 300
    .CollapseAll
  Endwith
Endproc
 
  Procedure Init
    With this
      .Set2.Left = .Set1.Left + .Set1.Width + 5
      .Set3.Left = .Set2.Left + .Set2.Width + 5
      .Set4.Left = .Set3.Left + .Set3.Width + 5
      .hflex.Top = .Set1.Top + .Set1.Height + 5
      .hflex.Height = .Height - (.hflex.Top + 5)
      .hflex.Left = 5
      .hflex.Width = .Width - 10
      .LoadSet(1)
    Endwith
  Endproc
  Procedure QueryUnLoad
    Clear events
  Endproc
  Procedure Set1.Click
    Thisform.LoadSet(1)
 
  Endproc
  Procedure Set2.Click
    Thisform.LoadSet(2)
  Endproc
  Procedure Set3.Click
    Thisform.LoadSet(3)
  Endproc
  Procedure Set4.Click
    Thisform.LoadSet(4)
  Endproc
Enddefine

5

Re: Grid de cell merge gibi birsey

kodu copy paste ile prg içerinde kopyaladığınızda solda 1 den 160 şa kadar rakamla karşılaşınca hemen üzülmeyin.

Yapmanız gereken

1. Copy paste ile kodu önce txt dosyasına kopyalayın
2. Txt dosyasından tekrar copy paste ile excele B1 sutununa kopyalayın.
3. A sutununa 1,2, şeklinde her bir satır için sıra numarısını girin.
4. B sutununa göre sıralayıp üste gelen silinmesi gereken bölümü temizleyin.
5. Tekrar A sutununa göre sıralayın.
6. B Sutunundaki kod bölümünü copy paste ile prg ye yapıştırın.


İkinci method...

1. Kodu direkt olrak A1 e kopyalayın.
2. Üst menü > veri > metni sutunlara dönüştür özelliğini kullanarak soldaki sayıları kod bölümünde ayırın. Bu işlemi yaparken (134.) formatındaki sayılarında tamamının solda kaldığından emin olun.
6. B Sutunundaki kod bölümünü copy paste ile prg ye yapıştırın.

6

Re: Grid de cell merge gibi birsey

yaw tamam pes ben vazgectim smile sorduguma soracagima pisman oldum smile

Klasik ama cok dogru - Bilgi Paylastikca Cogalir ve Degerlenir !

7

Re: Grid de cell merge gibi birsey

Soykan yazdı:

kısaca cari hesap kodlarina form loadinda mesela oluşturulmuş cari hesap hareketlerini join edip Flexgrid te göstermek istiyorum


Bilmem seni doğru anlamışmıyım Soykan ama şuna bir bak istersen

Select 0
Use Data\Customer

Select 0
Use Data\Accounts
Set Order To AccCustID

Select Customer
Set Relation To Customer.CustomerID INTO Accounts
BROWSE NOWAIT

Select Account
BROWSE NOWAIT

Customer Browserinda ok tuşları ile vs kayıt değiştikçe daha doğrusu hangi kayıt üzerinde konumlanırsan diğer browser da sadece o kayıda ait hareketler görüntülenir ve performans inanılmazdır. İşte size fox ailesinin inanılmaz gücü. RDBMS bu kadar kolay mı olur demeyin. Bu kadar kolay bu kadar esnek ve GERÇEKTEN inanılmaz hızlı. Hiç bir ek kod hiç bir ek sorgu filtre vs vs yok.
Kodun kısalığına bakmayın. Denemenize değer. Bu browserlar yerine formda gridlere bağla olsun bitsin.
smile

Mesela
RecC("Customer") = 10 000
RecC("Accounts") = 1 000 000 iken ve aradığınız kayıt sayısı Accounts ta SIFIR sa bile sn bile beklemeden tepki alırsınız. Bunu bir de mesela set filter to ile karşılaştırmayı düşünmeyin bile derim.

8

Re: Grid de cell merge gibi birsey

altun yazdı:

kodu copy paste ile prg içerinde kopyaladığınızda solda 1 den 160 şa kadar rakamla karşılaşınca hemen üzülmeyin.

Yapmanız gereken

1. Copy paste ile kodu önce txt dosyasına kopyalayın
2. Txt dosyasından tekrar copy paste ile excele B1 sutununa kopyalayın.
3. A sutununa 1,2, şeklinde her bir satır için sıra numarısını girin.
4. B sutununa göre sıralayıp üste gelen silinmesi gereken bölümü temizleyin.
5. Tekrar A sutununa göre sıralayın.
6. B Sutunundaki kod bölümünü copy paste ile prg ye yapıştırın.


İkinci method...

1. Kodu direkt olrak A1 e kopyalayın.
2. Üst menü > veri > metni sutunlara dönüştür özelliğini kullanarak soldaki sayıları kod bölümünde ayırın. Bu işlemi yaparken (134.) formatındaki sayılarında tamamının solda kaldığından emin olun.
6. B Sutunundaki kod bölümünü copy paste ile prg ye yapıştırın.


Ne demek istedigini bir anlasam. Bu neyle ilgili Allah askina?

9

Re: Grid de cell merge gibi birsey

En azından ben yazdığım bütün programlarda gereken relation ları kurup tamamen şöyle bir T CETVEL gibi bir ekran tasarlıyorum. Üstte bir grid mesela müşteriler. Altta yanyana iki tane grid soldakinde O müşteriden alınan siparişler sağdaki gridde ise siparişlerin detayları.
En üst grid de hangi müşteride isen sol alttaki grid de o müşteriden gelen siparişlerin her biri bir satırda ve sol alttaki gridde hangi satırda konumlanırsan sağ alttaki grid de o siparişin detayları. Milyonlarca kayıt barındıran tablolarda bile response time sn ile ölçülmez. Salise ile ölçülür. Sonra da hangi tabloda iken güncelle dersen o güncellenir. Müşteri ise müşteri kartı sipariş ise sipariş. VS vs.

Ben bu yapıya da BenimNavigasyonMerkezim diyesim geliyor. Ama inaniyorum ki standart olmaya değer bir yapı. Benim açımdan standart açıkcası.

10 Son düzenleyen, cetinbasoz (06.12.2006 13:53:46)

Re: Grid de cell merge gibi birsey

river,
O eskiden beri foxun guclu browsesi ama bahsedilen biraz farkli gosterim. Ozgurun dedigini hierarchical data kullanmadan yapinca, sadece kolon basliklarini tutup istedigin pozisyona cekerek, datayi ona gore siralama imkani vs var. Mesela:

http://www.accutrack.org/images/appt_wiz2.jpg

Bu da native fox grid ile (burada 2 adet grid bar):

http://www.accutrack.org/images/daily_viewer.jpg

11

Re: Grid de cell merge gibi birsey

üstadım açıklaman için hakkaten çok teşekkür ederim. Zaten ben Soykan ın sorduğuna bu cevap olurmu acaba diyerek yazdım. Ondan da o nedenle alıntı yaptım. Ama eğer sana zahmet olmazsa özgürün dediği ve senin  son gönderdiğin ekranı pratik bir örnekle anlatabilirmisin. Çünkü senden gelen ekrana baktım şimdi görüntüler biraz küçük. Ama HAKKATEN anlamak ta istiyorum. Çünkü burnum bazı kokular aldı ama emin olamadım. Ne tür bir ihtiyacın çözümü olabilir pratik kullanımda onu anlamanın peindeyim açıkcası.

12

Re: Grid de cell merge gibi birsey

Son resim update olarak geldi sanırım. Native gird bar lı olanı. O biraz daha anlamamı sağladı. Ama hala gelecek bilgi varsa peşinen hem teşekkür hem de beklemece...

13

Re: Grid de cell merge gibi birsey

Bunu cok isterdim smile Zeki ve Tekin ile de tanışma şansım olurdu ... belli olmaz bir gun yolum düşer belki smile

lcselect1 ve tnset1 sanirim benim ihtiyacima uygun gibi
ben de degisiklik cari tablo crsDetail cursor olacak bu durumda tnset nasil olmali ?

http://www.soykansoft.com/images/twitter.jpghttp://www.soykansoft.com/images/wp.jpg

14

Re: Grid de cell merge gibi birsey

river yazdı:

Son resim update olarak geldi sanırım. Native gird bar lı olanı. O biraz daha anlamamı sağladı. Ama hala gelecek bilgi varsa peşinen hem teşekkür hem de beklemece...


River,
Buna bir bak. Bunda mesela product_name'i sola tasiyarak ona gore siralayabiliyorsun.

Visual Fox Pro
LOCAL oCon as AdoDb.Connection, oRS as ADODb.Recordset

oCon = CREATEOBJECT('AdoDb.Connection')
oCon.ConnectionString = ;
  "Provider=VFPOLEDB;Data Source="+_samples+'data\testdata.dbc'
oCon.Open()
 
TEXT to m.lcSQL NOSHOW PRETEXT 8
Select c.cust_id, c.company,
  o.order_id, o.order_date,
  e.First_Name-(' '+e.Last_Name) As Employee,
  oi.line_no, p.prod_name,
  oi.unit_price, oi.quantity
  FROM  testdata!customer c
  INNER Join testdata!orders o
  ON  c.cust_id = o.cust_id
  INNER Join testdata!Employee e
  ON  o.emp_id = e.emp_id
  INNER Join testdata!orditems oi
  ON  o.order_id = oi.order_id
  INNER Join testdata!products p
  ON  oi.product_id = p.product_id
  order By p.prod_name
ENDTEXT
 
oRS = oCon.Execute(m.lcSQL)
PUBLIC oForm
oForm = CREATEOBJECT('myForm',oRS)
oForm.Show()
 
 
DEFINE CLASS myForm as Form
  Height = 450
  Width = 750
  Add OBJECT hflex AS olecontrol WITH ;
    Height = 420, ;
    Width = 750, ;
    DragIcon = "c:\program files\microsoft visual foxpro 9\graphics\cursors\h_point.cur",;
    OleClass = 'MSHierarchicalFlexGridLib.MSHFlexGrid'
 
  PROCEDURE init(toRS)
    with This.HFlex
      .Datasource = toRS
      for ix = 1 to .Cols - 1
        .MergeCol(ix) = .t.
      endfor
      .MergeCells = 3
    endwith
    this.DoSort(This.HFlex)
  ENDPROC
 
  PROCEDURE doSort(toObject)
    with toObject
      .Col = 0
      .ColSel = .Cols - 1
      .Sort = 1 && Generic Ascending
    endwith
  ENDPROC
 
  PROCEDURE hFlex.MouseDown
    LPARAMETERS button, shift, x, y
    with this
      .Tag = ""
      If .MouseRow = 0
        .Tag = Str(.MouseCol)
        .Drag( 1 )
      endif
    endwith
  ENDPROC
 
  PROCEDURE HFlex.DragDrop
    LPARAMETERS oSource, nXCoord, nYCoord
    If !empty(this.Tag)
      with this
        .Redraw = .F.
        .ColPosition(Val(.Tag)) = .MouseCol
        thisform.DoSort(this)
        .Redraw = .t.
      endwith
    endif
  endproc
enddefine

15

Re: Grid de cell merge gibi birsey

soykanozcelik yazdı:

Bunu cok isterdim smile Zeki ve Tekin ile de tanışma şansım olurdu ... belli olmaz bir gun yolum düşer belki smile

lcselect1 ve tnset1 sanirim benim ihtiyacima uygun gibi
ben de degisiklik cari tablo crsDetail cursor olacak bu durumda tnset nasil olmali ?


Orada gordugun gibi, ama cursor kullanamazsin. Temp folder'a copy to ile yaz, connection'da da orayi isaret et. Initde datasource kurulduktan sonra oRS'in isi bitiyor. Kapatip temp dosyalarini silebilirsin. 
Ancak senin durumunda bence river yerden goge hakli. MSHflexgrid'e ihtiyacin yok. Normal fox gridlerinden kullan, relation kur.

16

Re: Grid de cell merge gibi birsey

Flexgrid estetik acidan daha iyi geldi bana bu tip bir rapor icin o yuzden uzerinde durdum.
Ama River in çözüm öneriside dikkkate değer

http://www.soykansoft.com/images/twitter.jpghttp://www.soykansoft.com/images/wp.jpg

17

Re: Grid de cell merge gibi birsey

walla arkadaşlar çetin beyin gönderdiği kodlari çalıştırdım. Birinci örnek müthiş bir uygulama. Benim çok hoşuma gitti. Tabi performans testlerinde ne çıkar henüz bilmiyorum, kodları da incelemedim. Sadece çalıştırdım. Ama zaten o testlere sokmadan önce yapmak gereken bir araba iş var. Önce kodları incelemekten başlayarak...

Çetin hoca ya katkılarından dolayı teşekkür ederim.
Sadece ikinci örnekte - bana gönderdiğiniz olan - prod_name kolonunun yerinin kayabilmesi dışında her hangi bir kullanım şıklığı yakalayamadım. Atladığım bir şey mi var. Amaç sadece değişik tablolardan bir dolu alanı belli ilişkiler çerçevesinde toparlayıp bir grid e oturtmak mı ?

Tekrar teşekkürler. Bunlar böyle paylaşıldığında kolayca 2-3 sayfa bilgi halini alıyor ama o bilgiyi ilk kez toparlamanın ne kadar zorlu bir süreç olduğunu bildiğimden çetin bey e teşekkürlerimi tekrar iletmek istiyorum.

18

Re: Grid de cell merge gibi birsey

cetinbasoz yazdı:

Ne demek istedigini bir anlasam. Bu neyle ilgili Allah askina?


Mesaj içindeki kod bölümü çalıştırmak için  VFP de ki program içine kopyalayınca her bir satırın solunda satır numarasını gösteren rakamlar çıkmıştı. Satır sayısı fazla olduğu için bunların pratik bir şekilde temizlenmesi gerekiyordu.  Ben de arkadaşlara yardımcı olur düşüncesiyle o garip mesajı yazdım.

Note : Bu arada mesajın altında altııntı yap tuşuna tıklanınca açılan pencereden kod kopyalandığı takdirde satır başlarındaki rakamlar çıkmıyor.

19

Re: Grid de cell merge gibi birsey

river yazdı:
Soykan yazdı:

kısaca cari hesap kodlarina form loadinda mesela oluşturulmuş cari hesap hareketlerini join edip Flexgrid te göstermek istiyorum


Bilmem seni doğru anlamışmıyım Soykan ama şuna bir bak istersen

Select 0
Use Data\Customer

Select 0
Use Data\Accounts
Set Order To AccCustID

Select Customer
Set Relation To Customer.CustomerID INTO Accounts
BROWSE NOWAIT

Select Account
BROWSE NOWAIT

Customer Browserinda ok tuşları ile vs kayıt değiştikçe daha doğrusu hangi kayıt üzerinde konumlanırsan diğer browser da sadece o kayıda ait hareketler görüntülenir ve performans inanılmazdır. İşte size fox ailesinin inanılmaz gücü. RDBMS bu kadar kolay mı olur demeyin. Bu kadar kolay bu kadar esnek ve GERÇEKTEN inanılmaz hızlı. Hiç bir ek kod hiç bir ek sorgu filtre vs vs yok.
Kodun kısalığına bakmayın. Denemenize değer. Bu browserlar yerine formda gridlere bağla olsun bitsin.
smile

Mesela
RecC("Customer") = 10 000
RecC("Accounts") = 1 000 000 iken ve aradığınız kayıt sayısı Accounts ta SIFIR sa bile sn bile beklemeden tepki alırsınız. Bunu bir de mesela set filter to ile karşılaştırmayı düşünmeyin bile derim.


Power of FoxPro smile  Relation ile gercekten oluyor bunlar biliyorum zaten SET RELATION helpine bakınca bu kod orneginin benzerleri var . Fikir için tesekkur bunuda ayri bir alternatif olarak dusunecegim...

http://www.soykansoft.com/images/twitter.jpghttp://www.soykansoft.com/images/wp.jpg

20

Re: Grid de cell merge gibi birsey

altun yazdı:
cetinbasoz yazdı:

Ne demek istedigini bir anlasam. Bu neyle ilgili Allah askina?


Mesaj içindeki kod bölümü çalıştırmak için  VFP de ki program içine kopyalayınca her bir satırın solunda satır numarasını gösteren rakamlar çıkmıştı. Satır sayısı fazla olduğu için bunların pratik bir şekilde temizlenmesi gerekiyordu.  Ben de arkadaşlara yardımcı olur düşüncesiyle o garip mesajı yazdım.

Note : Bu arada mesajın altında altııntı yap tuşuna tıklanınca açılan pencereden kod kopyalandığı takdirde satır başlarındaki rakamlar çıkmıyor.


evet bu noktaya da işaret ettiğin iyi oldu arkadaslara faydası olur Ali saol...

http://www.soykansoft.com/images/twitter.jpghttp://www.soykansoft.com/images/wp.jpg

21

Re: Grid de cell merge gibi birsey

river yazdı:

walla arkadaşlar çetin beyin gönderdiği kodlari çalıştırdım. Birinci örnek müthiş bir uygulama. Benim çok hoşuma gitti. Tabi performans testlerinde ne çıkar henüz bilmiyorum, kodları da incelemedim. Sadece çalıştırdım. Ama zaten o testlere sokmadan önce yapmak gereken bir araba iş var. Önce kodları incelemekten başlayarak...

Çetin hoca ya katkılarından dolayı teşekkür ederim.
Sadece ikinci örnekte - bana gönderdiğiniz olan - prod_name kolonunun yerinin kayabilmesi dışında her hangi bir kullanım şıklığı yakalayamadım. Atladığım bir şey mi var. Amaç sadece değişik tablolardan bir dolu alanı belli ilişkiler çerçevesinde toparlayıp bir grid e oturtmak mı ?

Tekrar teşekkürler. Bunlar böyle paylaşıldığında kolayca 2-3 sayfa bilgi halini alıyor ama o bilgiyi ilk kez toparlamanın ne kadar zorlu bir süreç olduğunu bildiğimden çetin bey e teşekkürlerimi tekrar iletmek istiyorum.


Performans testlerinin sonucunu ben sana soyleyeyim:)
1) Foxpro ile yarisamaz (ama yine de hizli)
2) Foxpronun aksine limitli sayidaki kayit icin (VFPde de limit var ama kiyaslanmaz). Field sayisi filan isin icinde, kabaca 4-5 bin satir kapasiteli diye dusunebilirsin. Limitin bir kismi VFP versiyonuna bagli (array propertyleri var).

Orada daha fazla birsey yok zaten, sadece sort degisikligi ve hucrelerin birlestirilmesini gostermek icin.

Kullanim alanlari ya pat diye aklina gelmiyor insanin ya da ornek hazirda yoksa yazmasi uzun oluyor.
Temel olarak sadece gorsel. Performansi gorsellige tercih eden akli basinda son kullanicilar icin sadece VFP tabanli olanlari kullanmakta fayda var:)

22

Re: Grid de cell merge gibi birsey

ayıp kaçmazsa bu 2. örneğe oha diyecem. vfp gridiyle nasıl oluyo bu ya? grid olduğunu anlayamadım gerçekten... soykan!.. hani alkışlayan adam, bak bütün forumlarda var burda yok... smile

cetinbasoz yazdı:

river,
Bu da native fox grid ile (burada 2 adet grid bar):

http://www.accutrack.org/images/daily_viewer.jpg

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

23

Re: Grid de cell merge gibi birsey

Evt bu konuya eğilicem smile
öncelikle oylamada 5 yıldız verdim smile

http://www.soykansoft.com/images/twitter.jpghttp://www.soykansoft.com/images/wp.jpg

24

Re: Grid de cell merge gibi birsey

simdi bu 5 yildiz bana mi cool

onemli degil arkadaslar ben mutlaka boyle acaip sorular bulur sorarim no problem smile

Klasik ama cok dogru - Bilgi Paylastikca Cogalir ve Degerlenir !

25

Re: Grid de cell merge gibi birsey

hem sorana hem cevaplayanlara olsun bilgimizi paylaştığımız için smile

http://www.soykansoft.com/images/twitter.jpghttp://www.soykansoft.com/images/wp.jpg