fiş veya belgelerde işlem numarasını otomatik verme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

fiş veya belgelerde işlem numarasını otomatik verme

Mesaj gönderen selman »

hazırladığım formlarda fiş numaralarını otomatik olarak girmesini yani daha önece verdiği numaraya (mesela001) kayıt yaptıktan sonara bir sonraki numarayı otomatik alsın istiyorum (Yani 002 olması)
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

programının vt kısmını oluştururken fisno field ını Autoicrement olarak tanımlarsan ve minumum değerini 00001 olarak verirsen projende kaydettiğin her yeni fiş i 00001, 00002 ,00003 .... olarak otomatik olarak numaralandırır. Tabiki bu kullandıgın veri tabanına göre degişiklik gösterir. Ben database desktop da ( *.db ) nasıl yapıldıgını anlattım sadece. kolay gelsin...
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

Mesaj gönderen safak »

Başka bir hatırlatma yapmak istiyorum:

Fiş Kayıt onayı verildikten, ve iç tutarlılık kontrolleri olumlu sonuçlandıktan sonra, veritabanına kayıt başlarken FişMumarasını almak iyi bir yöntemdir. Aksi taktirde onaylanmayan fişlerden dolayı, alınan numaralar boşa gider.

Kolay Gelsin,
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

ben ayrı bir tabloda integer bir değer olarak tutup, gerekince artırıyordum.

Autoinc alanlara müdahele edemiyorsunuz ve 00001 gibi bir değer veremiyorsunuz. Ben 1 değerini alıp, bir fonkisyon ile başına 0000 ekliyordum.

Kolay gelsin.
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

pardon mustafa hocam yalnış bilgilendirdim ark ı ...
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Selam Bende Mustafa Hocamın dediği gibi numaralandırma sistemi kullanıyorum. Formumda kullandığım kodu komple veriyorum yalnız biraz ayıtlama yapman gerekecek.

Kod: Tümünü seç

procedure TCariHesapIslemEkle.FormShow(Sender: TObject);
VAR DataKontrol: OleVariant;
    EditCek:Integer;
    EditYolla:String;
begin

    Edit1.SetFocus;
    AdvEdit1.Text := '';
    DateTimePicker1.Date := Date;
    DateTimePicker1.Format := 'dd/MM/yyyy';
    DateTimePicker2.Time := Time;

    CariHesapIslemleriFrm.AdoDataSet1.Append;

    DataKontrol := Null;

    if CHiFormBul = 0 Then
    Begin //Nakit Tahsilat
        NumaraAdo.Open;
        if NumaraAdo.FieldByName('TahsilatNo').Value = DataKontrol Then
        Begin
            NumaraAdo.Edit;
            NumaraAdoTahsilatNo.Value := 0;
            NumaraAdo.Post;
            CariHesapIslemleriFrm.ADODataSet1.FieldByName('IslemNo').Value := NumaraAdoTahsilatNo.Value + 1;
            EditCek := CariHesapIslemleriFrm.ADODataSet1.FieldByName('IslemNo').Value;
            FmtStr(EditYolla,'%.8d', [EditCek]);
            Edit1.Text := EditYolla;
            Edit1.SelectAll;
        End
        Else
        Begin
            CariHesapIslemleriFrm.ADODataSet1.FieldByName('IslemNo').Value := NumaraAdoTahsilatNo.Value + 1;
            EditCek := CariHesapIslemleriFrm.ADODataSet1.FieldByName('IslemNo').Value;
            FmtStr(EditYolla,'%.8d', [EditCek]);
            Edit1.Text := EditYolla;
            Edit1.SelectAll;
        End;
     End //Nakit Tahsilat
    Else
    if CHiFormBul = 1 Then
    Begin //Nakit Ödeme
        NumaraAdo.Open;
        if NumaraAdo.FieldByName('OdemeNo').Value = DataKontrol Then
        Begin
            NumaraAdo.Edit;
            NumaraAdoOdemeNo.Value := 0;
            NumaraAdo.Post;
            CariHesapIslemleriFrm.ADODataSet1.FieldByName('IslemNo').Value := NumaraAdoOdemeNo.Value + 1;
            EditCek := CariHesapIslemleriFrm.ADODataSet1.FieldByName('IslemNo').Value;
            FmtStr(EditYolla,'%.8d', [EditCek]);
            Edit1.Text := EditYolla;
            Edit1.SelectAll;            
        End
        Else
        Begin
            CariHesapIslemleriFrm.ADODataSet1.FieldByName('IslemNo').Value := NumaraAdoOdemeNo.Value + 1;
            EditCek := CariHesapIslemleriFrm.ADODataSet1.FieldByName('IslemNo').Value;
            FmtStr(EditYolla,'%.8d', [EditCek]);
            Edit1.Text := EditYolla;
            Edit1.SelectAll;
        End;
    End; //Nakit Ödeme


    if  CHiFormBul = 0 Then
        Label1.Caption := 'Nakit Tahsilat'
    Else
        Label1.Caption := 'Nakit Ödeme';
end;

procedure TCariHesapIslemEkle.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
{    CariHesapIslemleriFrm.ADODataSet1.Close;
    CariHesapIslemleriFrm.ADODataSet1.open;
    CariHesapIslemleriFrm.ADODataSet1.Locate('IslemNo', StrToInt(Edit1.Text), [loCaseInsensitive]); }
    AdoQuery1.Close;
    NumaraAdo.Close;
end;

procedure TCariHesapIslemEkle.DBEdit2KeyPress(Sender: TObject;
  var Key: Char);
begin
    if key = #13 Then
        DateTimePicker1.SetFocus;
end;

procedure TCariHesapIslemEkle.DateTimePicker1KeyPress(Sender: TObject;
  var Key: Char);
begin
    if key = #13 Then
        DateTimePicker2.SetFocus;
end;

procedure TCariHesapIslemEkle.DateTimePicker2KeyPress(Sender: TObject;
  var Key: Char);
begin
    if key = #13 Then
        DBEdit4.SetFocus;
end;



procedure TCariHesapIslemEkle.DBEdit4KeyPress(Sender: TObject;
  var Key: Char);
begin
    if key = #13 Then
        DBEdit6.SetFocus;
end;

procedure TCariHesapIslemEkle.DBEdit6KeyPress(Sender: TObject;
  var Key: Char);
begin
    if key = #13 Then
        DBEdit7.SetFocus;
end;

procedure TCariHesapIslemEkle.DBEdit7KeyPress(Sender: TObject;
  var Key: Char);
begin
    if key = #13 Then
        DBEdit8.SetFocus;
end;

procedure TCariHesapIslemEkle.DBEdit8KeyPress(Sender: TObject;
  var Key: Char);
begin
    if key = #13 Then
        AdvEdit1.SetFocus;
end;

procedure TCariHesapIslemEkle.AdvEdit1KeyPress(Sender: TObject;
  var Key: Char);
begin
    if key = #13 Then
        Edit1.SetFocus;
end;

procedure TCariHesapIslemEkle.SpeedButton1Click(Sender: TObject);
VAR IslemNo:Integer;
begin
    if CHiFormBul = 0 Then
    Begin // Nakit Tahsilat
        IslemNo := StrToInt(Edit1.Text);
    //        IslemNo := CariHesapIslemleriFrm.ADODataSet1islemNo.Value;
        With AdoQuery1 Do
        Begin
            Close;
            SQL.Clear;
            SQL.Add('Select * FROM NakitIslemLer');
            SQL.Add('Where IslemNo = :IslemNo AND islemTuru = "Tahsilat" ');
            Parameters[0].Value := IslemNo;
            Open;
        End;
        if AdoQuery1.RecordCount > 0 Then
            ShowMessage ('Bu İşlem no lu kayıt daha önce girilmiş')
        Else
        if Edit1.Text = '' Then
            ShowMessage('İşlem Numarası Girmeden' + #13 + 'Kayıt Yapamazsınız.')
        Else
        if Edit1.Text = '' Then
            ShowMessage('Makbuz Numarası Girmeden' + #13 + 'Kayıt Yapamazsınız.')
        Else
        if DBEdit6.Text = '' Then
            ShowMessage('Cari Hesap Kodu Girmeden' + #13 + 'Kayıt Yapamazsınız.')
        Else
        Begin
            CariHesapIslemleriFrm.ADODataSet1IslemNo.Value := StrToInt(Edit1.Text);
            CariHesapIslemleriFrm.ADODataSet1Tarih.Value := DateTimePicker1.Date;
            CariHesapIslemleriFrm.ADODataSet1Saat.Value := DateTimePicker2.Time;
            CariHesapIslemleriFrm.ADODataSet1islemTuru.Value := 'Tahsilat';
            CariHesapIslemleriFrm.ADODataSet1Borc.Value := AdvEdit1.FloatValue;
            //Cari Kartlarda Bakiye Ekle
            With AdoQuery1 Do
            Begin
               Close;
               SQL.Clear;
               SQL.Add('Select * FROM Carikart Where CariKod = "'+ CariHesapIslemleriFrm.ADODataSet1CariKod.AsString + '"');
               Open;
            End;
            if AdoQuery1.RecordCount > 0 Then
            Begin
                AdoQuery1.Edit;
                AdoQuery1.FieldByName('BORC').Value := AdoQuery1.FieldByName('BORC').Value + CariHesapIslemleriFrm.ADODataSet1Borc.Value;
                AdoQuery1.Post;
            End;

            //------------------------------
            //NUMARA KONTROLÜ YAP
            if NumaraAdoTahsilatNo.Value < CariHesapIslemleriFrm.ADODataSet1IslemNo.Value Then
            Begin
                NumaraAdo.Edit;
                NumaraAdoTahsilatNo.Value := CariHesapIslemleriFrm.ADODataSet1IslemNo.Value;
                NumaraAdo.Post;
            End;
            With AdoQuery1 Do
            Begin
               Close;
               SQL.Clear;
               SQL.Add('Select * FROM Hareketler');
               Open;
            End;
            AdoQuery1.Append;
            AdoQuery1.FieldByName('IslemNo').AsString := Edit1.Text;
            AdoQuery1.FieldByName('Tarih').AsDateTime := DateTimePicKer1.Date;
            AdoQuery1.FieldByName('IslemTuru').AsString := 'Tahsilat';
            AdoQuery1.FieldByName('BorcTutari').AsFloat := AdvEdit1.FloatValue;
            AdoQuery1.FieldByName('CariKod').AsString := DBEdit6.Text;
            AdoQuery1.Post;
            CariHesapIslemleriFrm.AdoDataSet1.Post;
            Close;
        End;
    End //Nakit Tahsilat
    Else//------------------
    if CHiFormBul = 1 Then
    Begin // Nakit Ödeme
        IslemNo := StrToInt(Edit1.Text);
        //IslemNo := CariHesapIslemleriFrm.ADODataSet1islemNo.Value;
        With AdoQuery1 Do
        Begin
            Close;
            SQL.Clear;
            SQL.Add('Select * FROM NakitIslemLer');
            SQL.Add('Where IslemNo = :IslemNo AND islemTuru = "Ödeme" ');
            Parameters[0].Value := IslemNo;
            Open;
        End;
        if AdoQuery1.RecordCount > 0 Then
            ShowMessage ('Bu İşlem no lu kayıt daha önce girilmiş')
        Else
        if Edit1.Text = '' Then
            ShowMessage('İşlem Numarası Girmeden' + #13 + 'Kayıt Yapamazsınız.')
        Else
        if DBEdit6.Text = '' Then
            ShowMessage('Cari Hesap Kodu Girmeden' + #13 + 'Kayıt Yapamazsınız.')
        Else
        Begin
            CariHesapIslemleriFrm.ADODataSet1IslemNo.Value := StrToInt(Edit1.Text);
            CariHesapIslemleriFrm.ADODataSet1Tarih.Value := DateTimePicker1.Date;
            CariHesapIslemleriFrm.ADODataSet1Saat.Value := DateTimePicker2.Time;
            CariHesapIslemleriFrm.ADODataSet1islemTuru.Value := 'Ödeme';
            CariHesapIslemleriFrm.ADODataSet1Alacak.Value := AdvEdit1.FloatValue;
            //Cari Kartlarda Bakiye Ekle
            With AdoQuery1 Do
            Begin
               Close;
               SQL.Clear;
               SQL.Add('Select * FROM Carikart Where CariKod = "'+ CariHesapIslemleriFrm.ADODataSet1CariKod.AsString + '"');
               Open;
            End;
            if AdoQuery1.RecordCount > 0 Then
            Begin
                AdoQuery1.Edit;
                AdoQuery1.FieldByName('ALACAK').Value := AdoQuery1.FieldByName('ALACAK').Value + CariHesapIslemleriFrm.ADODataSet1ALACAK.Value;
                AdoQuery1.Post;
            End;

            //------------------------------
            //NUMARA KONTROLÜ YAP
            if NumaraAdoOdemeNo.Value < CariHesapIslemleriFrm.ADODataSet1IslemNo.Value Then
            Begin
                NumaraAdo.Edit;
                NumaraAdoOdemeNo.Value := CariHesapIslemleriFrm.ADODataSet1IslemNo.Value;
                NumaraAdo.Post;
            End;
            With AdoQuery1 Do
            Begin
               Close;
               SQL.Clear;
               SQL.Add('Select * FROM Hareketler');
               Open;
            End;
            AdoQuery1.Append;
            AdoQuery1.FieldByName('IslemNo').AsString := Edit1.Text;
            AdoQuery1.FieldByName('Tarih').AsDateTime := DateTimePicKer1.Date;
            AdoQuery1.FieldByName('IslemTuru').AsString := 'Ödeme';
            AdoQuery1.FieldByName('AlacakTutari').AsFloat := AdvEdit1.FloatValue;
            AdoQuery1.FieldByName('CariKod').AsString := DBEdit6.Text;
            AdoQuery1.Post;
            CariHesapIslemleriFrm.AdoDataSet1.Post;
            Close;
        End;
      End; //Nakit ÖDEME
end;

procedure TCariHesapIslemEkle.Edit1KeyPress(Sender: TObject;
  var Key: Char);
begin
    if key = #13 Then
        DBEdit2.SetFocus;
    EditKontrol(CariHesapIslemEkle.Edit1, Key);
end;

procedure TCariHesapIslemEkle.DBEdit6Exit(Sender: TObject);
begin
    if DBEdit6.Text <> '' Then
    Begin
        With AdoQuery1 Do
        Begin
            Close;
            SQL.Clear;
            SQL.Add('Select * From CariKart');
            Open;
        End;
        if Not AdoQuery1.Locate('CariKod', DBEdit6.Text, [loCaseInsensitive]) Then
        Begin
            ShowMessage('Cari Hesap Kodu Bulunamadı');
            CariHesapIslemleriFrm.ADODataSet1CariKod.AsString := '';
            CariHesapIslemleriFrm.ADODataSet1CariUnvan.AsString := '';
            DBEdit6.SetFocus;
        End
        Else
        IF CariHesapIslemleriFrm.AdoDataSet1.State = dsInsert then
            CariHesapIslemleriFrm.ADODataSet1CariUnvan.AsString := AdoQuery1.fieldByName('CariUnvan').AsString;

    End;

end;

procedure TCariHesapIslemEkle.DBEdit7Exit(Sender: TObject);
begin
    if DBEdit6.Text = '' Then
    if DBEdit7.Text <> '' Then
    Begin
        With AdoQuery1 Do
        Begin
            Close;
            SQL.Clear;
            SQL.Add('Select * From CariKart');
            Open;
        End;
        if Not AdoQuery1.Locate('CariUnvan', DBEdit7.Text, [loCaseInsenSitive]) Then
        Begin
            ShowMessage('Cari Hesap Kodu Bulunamadı');
            CariHesapIslemleriFrm.ADODataSet1CariKod.AsString := '';
            CariHesapIslemleriFrm.ADODataSet1CariUnvan.AsString := '';
            DBEdit7.SetFocus;
        End
        Else
        IF  CariHesapIslemleriFrm.AdoDataSet1.State = dsInsert then
            CariHesapIslemleriFrm.ADODataSet1CariKod.AsString := AdoQuery1.fieldByName('CariKod').AsString;

    End;

end;

procedure TCariHesapIslemEkle.DBEdit6KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
    if key = VK_F10 Then
    Begin
        CHiCariAraFBul:= 1;
        CHiCariAra:= DBEdit6.Text;
        CariHesapAraKodFrm.ShowModal;
    End;

end;

procedure TCariHesapIslemEkle.DBEdit7KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
        if key = VK_F10 Then
    Begin
        CHiCariAraFBul:= 2;
        CHiCariAra:= DBEdit7.Text;
        CariHesapAraKodFrm.ShowModal;
    End;
end;

procedure TCariHesapIslemEkle.Edit1Exit(Sender: TObject);
var
    EditCek:Integer;
    EditYolla:String;
begin
    EditCek := StrToInt(Edit1.Text);
    FmtStr(EditYolla,'%.8d', [EditCek]);
    Edit1.Text := EditYolla;

end;

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

gönderdiğiniz bilgiler için teşekkür ederim..
ayrıca hüsonat hocamın gönderdiği bilgiler için teşekkürler..
Bu kodlamaları bir deneyeceğim. İnşallah sorunu hallederim
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

husonet bu ne :lol: ben olsam şahsen bu kodu ayıklayacağıma yeniden kod yazarım :? :wink:
Cevapla