Excelden Tabloya veri Ekleme yardım..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen xozcanx »

Merhaba,,

Resim
Excelden tabloya veri aktarmayı yapabiliyorum fakar şöyle bir sıkıntı var
Resimdeki gibi alanlar mevcut ve ben bunları veritabanına çekerken A2 satırının kaydını aktardıktan sonra A3 ve A4 ün D3,D4 ve E3,E4 stunlarındaki bilgileri A2 de bulunan vergi kimlik numarası olan alana kaydetsin .Kodlarla yardımcı olabilirseniz memnun olurum şimdiden ilgi gösteren herkese teşekkürler,

Not: VergiNo,Vergi Dairesi ve ünvanı Table1. Alan1 ve Alan2 ise Table2'ye kayıt edilecektir.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen xozcanx »

Yukarıdaki işlemi Accesste Veritabanı kullanarak yapıyorum. Bu konuda kodla olmasa da fikir verebilecek yok mudur acaba, kendim farklı yöntemler deniyorum ama kayıtları 2 farklı tabloya çekerek oradan filtreleme yaptırmak ama buda sıkıntı oluyor vergi numarası var ise "ALAN1" ve "ALAN2" nin değerlerini vergi noya bağlamak istiyorum hertürlü fikir ve görüşe açığım..
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen esistem »

Selam;
Excel den veri çekmeyi bildiğinizi varsayıyorum.
Verileri satır satır okurken değişkenlere atın, mesela vergino,vergidairesi,unvan,alan1,alan2 dedik, ilk satırı okuduktan sonra gidip ilk tablonuzda bu vergi numarası varmı yokmu ona bakın, eğer yoksa ekleyin ve aynı zamanda 2. tabloyada 1. tablodaki vergino alanını referans vererek ünvanı,alan1 ve alan2 yi ekleyin,
2. satırı okuduğunuzda gidip 1. tabloda aynı vergi no varmı yokmu ona bakın, varsa 2. tabloya yukarıdaki şekilde diğer bilgileri ekleyin, yoksa yine yukarıdaki gibi sıfırdan oluşturup eklemeye devam edin.
Kısaca mantık bu olmalı, buna göre kodlayabilirsiniz.
akrep_57
Üye
Mesajlar: 12
Kayıt: 01 Tem 2007 11:46
Konum: İstanbul

Re: Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen akrep_57 »

Teşekkürler şuan dışarıdayım Eve gittiğimde deneyeceğim umarım becerebilirim :(
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen Lord_Ares »

sanırım biraz karmaşık anlatmışsın yada ben tam anlayamadım. Biraz daha açıklayıcı yazarsan yardımcı olmaya çalışırım.
Amacınız kayıt filitrelemek mi , yoksa kayıt girişi yaparken excelden aldığınız bilgiyi birleştirmek ve yeni bir kayıt oluşturmakmı.
En son Lord_Ares tarafından 01 Tem 2013 07:21 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
akrep_57
Üye
Mesajlar: 12
Kayıt: 01 Tem 2007 11:46
Konum: İstanbul

Re: Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen akrep_57 »

,
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen xozcanx »

Lord_Ares yazdı:sanırım biraz karmaşık anlatmışsın yada ben tam anlayamadım. Biraz daha açıklayıcı yazarsan yardımcı olmaya çalışırım.
Amacınız kayıt filitrelemek mi , yoksa kayıt girişi yaparken excelden aldığınız bilgiyi birleştirmek ve yeni bir kayıt oluşturmakmı.
Yapılacak işlem şu Excel deki veriler tabloya aktarılırken ilk satırı aldıktan sonra 2 satırda aynı vergi numarası var ise 2. satırdan sadece alan1 ve alan2 deki bilgileri alıp ilk aldığı kayda eklemesini istiyorum.
yani vergi numarasını arama yaptırdığında DBGrid1 de sadece 1 tane vergino unvan ve vergi dairesi bilgilerni göstersin DBGrid2 de ise alan1 ve alan2 de bulunan bilgilerini göstersin umarım anlatmışımdır..

Excelden aktarma yaparken VergiNo Ünvan ve Vergi Dairesi Bu bilgileri "MusteriKart" tablosuna aktarsak, "MusteriBilgi" tablosuna ise VergiNo,alan1 ve alan2 yi aktarsak 2. satıra geçtiğinde VergiNo yu "MusteriKart" tablosunda varmı yokmu kontrol etse yok ise ilk işlemi var ise sadece VergiNo,alan1 ve alan2 deki bilgileri "MusteriBilgi" tablosuna kaydetsek nasıl olur,
En son xozcanx tarafından 01 Tem 2013 07:35 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen xozcanx »

Lord_Ares yazdı:sanırım biraz karmaşık anlatmışsın yada ben tam anlayamadım. Biraz daha açıklayıcı yazarsan yardımcı olmaya çalışırım.
Amacınız kayıt filitrelemek mi , yoksa kayıt girişi yaparken excelden aldığınız bilgiyi birleştirmek ve yeni bir kayıt oluşturmakmı.

Excelden tablo ya cekerken kontrol etmek istiyorum
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen xozcanx »

esistem yazdı:Selam;
Excel den veri çekmeyi bildiğinizi varsayıyorum.
Verileri satır satır okurken değişkenlere atın, mesela vergino,vergidairesi,unvan,alan1,alan2 dedik, ilk satırı okuduktan sonra gidip ilk tablonuzda bu vergi numarası varmı yokmu ona bakın, eğer yoksa ekleyin ve aynı zamanda 2. tabloyada 1. tablodaki vergino alanını referans vererek ünvanı,alan1 ve alan2 yi ekleyin,
2. satırı okuduğunuzda gidip 1. tabloda aynı vergi no varmı yokmu ona bakın, varsa 2. tabloya yukarıdaki şekilde diğer bilgileri ekleyin, yoksa yine yukarıdaki gibi sıfırdan oluşturup eklemeye devam edin.
Kısaca mantık bu olmalı, buna göre kodlayabilirsiniz.
Verdiginiz bilgiler için çok teşekkür ederim sonunda istediğim gibi oldu yarın paylaşımda bulunurum.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen xozcanx »

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComObj, ExtCtrls, DB, DBTables, Grids,
  DBGrids, ADODB;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Edit1: TEdit;
    BitBtn1: TBitBtn;
    OpenDialog1: TOpenDialog;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    BitBtn2: TBitBtn;
    Edit6: TEdit;
    Panel6: TPanel;
    Label1: TLabel;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    GroupBox1: TGroupBox;
    Edit7: TEdit;
    Edit8: TEdit;
    Panel8: TPanel;
    Panel7: TPanel;
    GroupBox2: TGroupBox;
    DBGrid1: TDBGrid;
    GroupBox3: TGroupBox;
    DBGrid2: TDBGrid;
    MusteriKart: TADOTable;
    MusteriBilgi: TADOTable;
    DataSource2: TDataSource;
    ADOTable1VergiNo: TWideStringField;
    ADOTable1Unvan: TWideStringField;
    ADOTable1KVade: TBCDField;
    ADOTable1OVade: TBCDField;
    ADOTable1UVade: TBCDField;
    ADOTable1Donem: TDateTimeField;
    ADOTable1VergiDairesi: TWideStringField;
    MusteriKartVergiNo: TWideStringField;
    MusteriKartUnvan: TWideStringField;
    MusteriKartVergiDairesi: TWideStringField;
    MusteriBilgiVergiNo: TWideStringField;
    MusteriBilgiKVade: TBCDField;
    MusteriBilgiOVade: TBCDField;
    MusteriBilgiUVade: TBCDField;
    MusteriBilgiDonem: TDateTimeField;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Edit8KeyPress(Sender: TObject; var Key: Char);
    procedure FormActivate(Sender: TObject);
    procedure Edit7KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  book:variant;
  Excelfile,excel,sheet:variant;
  satir, sutun:integer;
  str:string;
  mesaj:integer;
implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
    Edit6.Font.Color:=ClBlack;
    Edit6.Color:=clWindow;
    Edit6.Text:='';
    excel := createOleObject('Excel.application');
    OpenDialog1.Filter := 'Excel Dosyaları (*.xls)|*.xls';
    if OpenDialog1.Execute then
    Edit1.Text:=OpenDialog1.FileName;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
    if (Edit2.Text='') or (Edit3.Text='') or (Edit4.Text='') or (Edit5.Text='')then
    mesaj:=Application.MessageBox('Lütfen Önce Satır ve Sütun Numaralarını girin...','UYARI')
    else
    begin
        book:= Excel.WorkBooks.Open(Edit1.Text);
        sheet := book.worksheets[1];
        for satir:=StrToInt(Edit2.Text) to StrToInt(Edit3.Text)+1 do
            begin
                str := sheet.cells[satir, 2];
                Edit6.Text := str;
                Update;
                ADOTable1.Append;
                for sutun:=StrToInt(Edit4.Text) to StrToInt(Edit5.Text) do
                ADOTable1.Fields[sutun-1].AsString :=sheet.cells[satir, sutun];
                if ADOTable1VergiNo.Text = MusteriKartVergiNo.Text Then
                   Begin
                        MusteriBilgi.Insert;
                        MusteriBilgiVergiNo.Text     :=ADOTable1VergiNo.Text;
                        MusteriBilgiKVade.Text       :=ADOTable1KVade.Text;
                        MusteriBilgiOVade.Text       :=ADOTable1OVade.Text;
                        MusteriBilgiUVade.Text       :=ADOTable1UVade.Text;
                        MusteriBilgiDonem.Text       :=ADOTable1Donem.Text;
                   end
                   else
                       Begin
                            MusteriKart.Insert;
                            MusteriKartVergiNo.Text       :=ADOTable1VergiNo.Text;
                            MusteriKartUnvan.Text         :=ADOTable1Unvan.Text;
                            MusteriKartVergiDairesi.Text  :=ADOTable1VergiDairesi.Text;
                            MusteriBilgi.Insert;
                            MusteriBilgiVergiNo.Text     :=ADOTable1VergiNo.Text;
                            MusteriBilgiKVade.Text       :=ADOTable1KVade.Text;
                            MusteriBilgiOVade.Text       :=ADOTable1OVade.Text;
                            MusteriBilgiUVade.Text       :=ADOTable1UVade.Text;
                            MusteriBilgiDonem.Text       :=ADOTable1Donem.Text;
                         End;
                ADOTable1.post;
                ADOTable1.Delete;
            end;
        Edit6.Color:=clMenuHighlight;
        Edit6.Font.Color:=ClWhite;
        Edit6.Text:='YÜKLEME TAMAMLANDI';
        Edit1.Text:='';
        Edit2.Text:='';
        Edit3.Text:='';
        Edit4.Text:='';
        Edit5.Text:='';
        Excel.quit;
        Excel:=Unassigned;
    end;

end;

procedure TForm1.Edit8KeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #13) then
    begin
        if edit8.Text='' then
          Begin
              ShowMessage('Lütfen En Az Bir Rakam Giriniz!');
          End
        else
          begin
              MusteriKart.Filter:='VergiNo like '+'%'+Edit8.Text+'%';
              MusteriKart.Filtered:=True;
              if MusteriKart.Fields.Fields[1].Value= null then
              showmessage('Adadığınız Vergi No Kayıtlarda Yok');
          end;
    end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
     Edit8.SetFocus;
end;

procedure TForm1.Edit7KeyPress(Sender: TObject; var Key: Char);
begin
      if (Key = #13) then
        begin
          if edit7.Text='' then
            ShowMessage('Lütfen En Az Bir Harf Giriniz!')
          else
            begin
                MusteriKart.Filter:='Unvan like '+'%'+Edit7.Text+'%';
                MusteriKart.Filtered:=True;
                if MusteriKart.Fields.Fields[1].Value= null then
                showmessage('Adadığınız Firma Kayıtlarda Yok');
            end;
        end;
end;

end.

Merhaba Son Küçük Bir Nokta kaldı Sanırım, ilk Excel Dosyasındna Aktarımı yaptığımda Tam istediğim gibi Aktarımı yapıyor yalnız 2. defa diğer excel dosyasından verileri çekerken VergiNo,Unvan bilgilerinide çekiyor programda vergi no arattığımda 2 kayıt gösteriyor Ekteki dosyada Programın Bir örneği var.

http://s3.dosya.tc/server7/xSXFhE/EXEL.rar.html
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen xozcanx »

Tekrardan Merhaba, Sorunu Hala Halledemedim, Çözüm önerisi olan :N( :N( :N(
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen esistem »

Selam;
programı inceledim, excel den veriyi okuduktan sonra adotable1. e append yapıyorsunuz fakat ona gerek yok, nasıl ki aşağıda arama bölümünde edit7 ve edit8 e girilen bilgileri filter ile çekiyorsanız, excelden satırı okuduktan sonra vergi no alanını gerçek tablonuzda filtreleyip sonucun null veya dolu olup olmadığını kontrol edin, eğer null ise bu vergi no yok demektir eğer null değil ise vergi no vardır demektir sizde ona göre işlem yaparsınız.
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Excelden Tabloya veri Ekleme yardım..

Mesaj gönderen xozcanx »

esistem yazdı:Selam;
programı inceledim, excel den veriyi okuduktan sonra adotable1. e append yapıyorsunuz fakat ona gerek yok, nasıl ki aşağıda arama bölümünde edit7 ve edit8 e girilen bilgileri filter ile çekiyorsanız, excelden satırı okuduktan sonra vergi no alanını gerçek tablonuzda filtreleyip sonucun null veya dolu olup olmadığını kontrol edin, eğer null ise bu vergi no yok demektir eğer null değil ise vergi no vardır demektir sizde ona göre işlem yaparsınız.
Vermiş olduğunuz cevap için teşekkürler sorunumu hallettim eklenecek olan vergi numarasını ilk önce bir değere atadım ve onu kayıtlar da aratıyorum, bu şekilde çözdüm sorunumu çalışan halini tekrar paylaşırım.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Cevapla