1

Konu: form kullanımı hakkında

Ekte bir LİSTE formu var.

Program çalışıyor.

"Sorgula" tuşuna basıldığında YAPILAN SEÇİM "LISTE7.DBF" dosyasına aktarılıyor.

Sorunum : Çok kullanıcılı sistemde başka bir kullanıcı aynı anda aynı programı kullanığında yaptığı seçim bir de LISTE7.DBF dosyasına aktarıldığından diğer kullanıcının listesini bozmaktadır.

Yapmak istediğim : Program aynı anda başka kullanıcı tarafından kullanılsa bile listelerin karışmaması (Başka bir dosyaya kayudetmesi.) Ama yaratılan bu dosyaları bu form ile kullanabilmem.

Form kullanmadığım eski programlarımda :

dadi=SYS(3)
dosya=dadi+".DBF"
COPY FILE Liste7.DBF TO &dosya

şeklinde random bir program adı yaratıp bunu kayıt olmayan boş doyayı bu programa kopyalıyordum.
Yani her yeni kullanıcı random adlı başka başka dosyalar kullanabiliyordu. Böylece listelerde karışıklık olmuyordu.

Bunu FORM kullnarak nasıl yapabilirim.

Teşekkürler.


-------------------------------------------
SET EXCLUSIVE ON
CLOSE ALL
SET TALK OFF
SET NOTIFY OFF
ON ERROR DO HATA

Public oForm
oForm = Createobject("doviz")
oForm.Show(1)

Define Class doviz As Form
  DataSession = 2
  Top    = 2
  Left   = 5
  Height = 645
  Width  = 1170
  Name   = "doviz"
  Caption = " Yapılan İş Sayısı "
   

  orecord = .Null.

  Add Object lblDolar As Label With ;
    left = 5, Top = 5, Caption = "M.Tem.Adı:", AutoSize=.T.

  Add Object txtAcente As myTextBox With ;
      Top = 2, ;
      left = 105, ;
      Width = 180, ;
      BackColor = 65535, ;
      Value     = SPACE(40), ;
      InputMask = "XXXXXXXXXXXXXXXXXXXX", ;
      Enabled = .f.

  ADD OBJECT acente1 AS combobox WITH ;
      Top = 2, ;
      left = 85, ;
      Width = 20, ;   
      BackColor = 65535, ;
      Value     = 0, ;
      rowsourcetype=2,;
      rowsource="Sattem.adi,no",;
      boundcolumn=2,;
      columncount=2,;
      columnwidths="250,60,0",;
      Enabled = .t.



   Add Object cmdsorgula as CommandButton With ;
        Top = 2, ;
        Left = 640, ;
        Height = 27, ;
        Width = 84, ;
        Caption = 'Sorgula', ;
        Enabled = .t.

     Add Object cmdexe as CommandButton With ;
        Top = 2, ;
        Left = 740, ;
        Height = 27, ;
        Width = 84, ;
        Caption = '.EXEL Oluştur', ;
        Enabled = .t.         

    Add Object cmdClose as CommandButton With ;
        Top = 32, ;
        Left = 640, ;
        Height = 27, ;
        Width = 84, ;
        Caption = 'Kapat'
             
*    Add Object cmdadi as CommandButton With ;
*        Top = 182, ;
*        Left = 340, ;
*        Height = 27, ;
*        Width = 84, ;
*        Caption = 'Adı-Sırala'

    Add Object grdListe as myGrid


    Procedure cmdsorgula.Click
        ppsorgula()
    EndProc

    Procedure cmdexe.Click
        ppexe()
    EndProc

    Procedure cmdClose.Click
*        CLOSE ALL   
        thisform.Release
    EndProc

  Procedure Load
    SET TALK OFF
    SET NOTIFY OFF
    SET DELE ON
    SET ESCAPE  OFF
    SET ECHO    OFF
    SET TALK    OFF
    SET DATE TO BRITI
    SET CENT ON
    set safe off

     SELE 1
     USE Siparis INDEX Siparis1,Siparis2

     SELE 2
     USE Liste7 INDEX Liste71
     DELE ALL

     SELE 42
     USE sattem    INDEX sattem2,sattem1

     SELE 45
     USE Musteri INDEX Musteri1,Musteri2

  Endproc

    PROCEDURE acente1.Init
        lcCustomerID = "CENTC"
        this.Value = m.lcCustomerID
    ENDPROC

   PROCEDURE acente1.InteractiveChange
            with this.parent
              .txtAcente.Value = Sattem.adi
            endwith
   ENDPROC


Enddefine


******************************************************************
Define Class myTextBox as TextBox
******************************************************************
    Enabled = .f.
    DisabledForeColor = Rgb(0,0,0)
    SelectOnEntry = .t.
EndDefine

******************************************************************
Define Class myoptiongroup as optiongroup
******************************************************************
    Enabled = .f.
    DisabledForeColor = Rgb(0,0,0)
    SelectOnEntry = .t.
EndDefine

******************************************************************
Procedure ppsorgula
******************************************************************
    With oForm

          IF VAL(.acente1.Value) = 0

             SELE 2
             DELE ALL
             SET ORDER TO 1 DESC

             SELE 45
             GO TOP

                  DO WHILE .NOT. EOF()
                     ymusno        = no
                     ymikro        = mikro
                     ymusadi    = adi
                     ysattemno    = sattemno
                     ysattemadi    = sattemadi
                    
                     SELE 1
                     COUNT TO yisadet FOR musno = ymusno

                     SELE 2
                     APPEND BLANK
                     REPLA musno        WITH ymusno
                     REPLA mikro        WITH ymikro
                     REPLA musadi        WITH ymusadi       
                     REPLA isadet        WITH yisadet            
                     REPLA sattemno        WITH ysattemno   
                     REPLA sattemadi    WITH ysattemadi

                       SELE 45
                     SKIP
                  ENDDO

          ENDIF

          IF VAL(.acente1.Value) <> 0

             SELE 2
             DELE ALL
             SET ORDER TO 1 DESC

             SELE 45
             GO TOP

                  DO WHILE .NOT. EOF()


                   IF SatTemNo = VAL(.acente1.Value)
                     ymusno        = no
                     ymikro        = mikro
                     ymusadi    = adi
                     ysattemno    = sattemno
                     ysattemadi    = sattemadi
                    
                     SELE 1
                     COUNT TO yisadet FOR musno = ymusno

                     SELE 2
                     APPEND BLANK
                     REPLA musno        WITH ymusno
                     REPLA mikro        WITH ymikro
                     REPLA musadi        WITH ymusadi       
                     REPLA isadet        WITH yisadet            
                     REPLA sattemno        WITH ysattemno   
                     REPLA sattemadi    WITH ysattemadi
                   ENDIF


                       SELE 45
                     SKIP
                  ENDDO

          ENDIF

         SELE 2
         GO TOP
            
         .grdListe.Refresh()
         .grdListe.SetFocus()

    EndWith
EndProc


******************************************************************
Procedure ppexe
******************************************************************
    With oForm

         EXPORT TO Sattem.xls TYPE XL5 FIELDS tarih,Saat,Barkod,Aciklama,Kullanici
         local lcSource,lcTarget
         lcSource = fullpath("Sattem.xls")
         lcTarget = forcepath(m.lcSource, fullpath('liste'))

         copy file (m.lcSource) to (m.lcTarget)

    EndWith
EndProc



******************************************************************
Define Class myGrid as Grid
******************************************************************
*    Top = 62
    Top = 110
    Left = 5
    Height = 520
    Width = 1158
    ColumnCount = 6
    DeleteMark = .F.
    RecordMark = .t.
    ReadOnly = .T.
    RecordSource = "Liste7"
    ScrollBars = 3
    GridLineColor = Rgb(192,192,192)
   
    Procedure Init
        With this
*       Scatter Name This.oRecord Memo

            .Column1.Header1.Caption = 'Müşteri No'
            .Column1.Width = 70       
            .Column1.InputMask = "999999"
            .Column1.ControlSource = "Liste7.MusNo"

            .Column2.Header1.Caption = 'Mikro Kodu'
            .Column2.Width = 70       
            .Column2.ControlSource = "Liste7.Mikro"

            .Column3.Header1.Caption = 'Müşteri Adı'
            .Column3.Width = 200       
            .Column3.ControlSource = "Liste7.MusAdi"

            .Column4.Header1.Caption = 'İş Adedi'
            .Column4.Width = 80       
            .Column4.InputMask = "999,999"
            .Column4.ControlSource = "Liste7.IsAdet"

            .Column5.Header1.Caption = 'Sat.Tem.No'
            .Column5.Width = 50       
            .Column5.ControlSource = "Liste7.SatTemNo"

            .Column6.Header1.Caption = 'Satış Temsilcisi Adi'
            .Column6.Width = 120       
            .Column6.ControlSource = "Liste7.SatTemAdi"

        EndWith
    this.SetAll('Enabled',.f.,'textbox')
    this.SetAll('DisabledForeColor',0,'textbox')

    EndProc
   
EndDefine
*
PROCEDURE HATA
? ERROR()
? MESSAGE()
WAIT
RETURN

2 Son düzenleyen, KONURALP (08.09.2012 14:13:06)

Re: form kullanımı hakkında

fikir 1.   liste.dbf yerine cursor aç bu daha pratik bir yontem

fikir 2.   liste.dbf i local'de yarat      ya da local den kullan.
herkes kendi local ini kullanırsa dert olmaz

fikir 3.  liste.dbf e bir alan daha ekle kulanıcıno gibi ona göre filitrele  yine bu işi yaparsın

3

Re: form kullanımı hakkında

Konuralp'in soyledigi gibi cursor kullan.

Onder,
Bu kod fox2x zamanindan kalma gibi sad Oyle select 2, select  45 filan kullanmasana aliaslarini kullan. Indexlerine bakinca da hala en eski foxbase tarzi indexleri kullaniyorsun sad Allah kolaylik versin.