Veri aktarma

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

Veri aktarma

Mesaj gönderen selman »

Selam
şimdi arkadaşlar benim yapmak istediğim iki ad tablomuz 1.tablodan 2.tabloya veri transferi yapmak.fakat tablolar manuel olarak seçiliyo.şöyle bir şey
mesela combobox bileşeninden 3 ad.var 1.databasename seçiyo 2.comboboxdan tablename seçiyo.ve 3.comboboxdan ise true veya false yapıyo 3.comboboxu ture yaptığı zaman zaten tablo create edilmiş oluyo. ve ben create edilen.tabloyuda dbgridde gösteriyorum.bu kaynak bölümü
aynı şekilde birde hedef bölümü var ve ordada aynı bileşenler mevcut.ben kaynak bölümündeki dataları hedefbölümündeki dbgride atıyorum .Şimdi birde bu verileri aktarabileceğim birde Aktar butonum var
ve Aktar butonuna ise şu kodları yazdım
var
i:integer;
begin
form1.TKaynak.First;
while not form1.TKaynak.Eof do
begin
form1.THedef.Append;
if form1.THedef.FieldCount>form1.TKaynak.FieldCount then begin

for i:=0 to Pred (form1.TKaynak.FieldCount) do
form1.THedef.Fields.Value := tkaynak.fieldbyname(tkaynak.Fields.fieldname).value;
form1.THedef.Post;
form1.TKaynak.Next;
form1.SpeedButton1.Click;
end
else
if (form1.THedef.FieldCount<form1.TKaynak.FieldCount) or (form1.THedef.FieldCount=form1.TKaynak.FieldCount) then begin
for i:=0 to Pred (form1.THedef.FieldCount) do
form1.THedef.Fields.Value := tkaynak.fieldbyname(tHedef.Fields.fieldname).value;
form1.THedef.Post;
form1.TKaynak.Next;
form1.SpeedButton1.Click;
end;
end;


bu yazılan kod sizce mahsurlumu birde 2.filed 2.field takamul ettiğinde field adları farklı ise hata veriyo ben aslında 2.fieldde ne varsa dbgridin hedefteki 2.fielde aktarsın bu koodd ani field olsa bile eğer fieldadları farklı ise hata veriyo bulunamadı ne yapmalıyım veya ne öneririsiniz.
şimdiden tşk.ederim.İyi çalışmalar
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

O zaman FieldByName kullanma, doğrudan Fields[0], Fields[1] gibi kullan.

Kolay Gelsin

Not : dikkat etmen gereken tek şey, Field tiplerinin aynı olması gerektiğidir.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

form1.THedef.Fields[i].Value := tkaynak.fieldbyname(tkaynak.Fields[i].fieldname).value; 

hocam burda ikisindede alan adlarını kullansan nasıl olurdu.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
Adnan abi sizin söylediğiniz gibi yaptım fakat proğram fieldler eşit istiyo eşit olmadığı zaman proğram kırlıyor.vedat hocam zaten alanları eşleştririrken Ad ise Ada aktarcak .yani Ad ı yine Adsoyada atmak istediğinde hata verecektir.kolay gelsin
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Benim anlamadigim nokta su, iki tabloya bakacak program, Kaynak Tablodaki Field'lari tutacak gidip, hangisinin hangisine denk geldigini kendi ayirip o HEDEF tabloya atacak. Nasil olacak bu ? Bu insan degil ki ayrimini yapsin, atiyorum KAYNAK tablosunda 4 tane field olsun, bunlar ADI, SOYADI, SINIF, NO olsun, HEDEF Tablosunda ise SUBE, NUMARA, ISIM, SOYISIM, olsun. Bunları program oturup kendi basina ADI alanını tutacak ISIM alanına atacak, NO Alanını tutup NUMARA alanına atacak diyorsun. Ama bunu yani eşleştirmesini kim yapacak? Program otomatik yapamaz !...

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Bunu selman'a bi türlü anlatamadım işte :D
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam hayır Adnan abi, Ve Faruk bey :lol: Olay şu aslında
bende iki ad.checkbox var.1.checkbox:field adına göre
2.checkbox:=field sırasına göre
şimdi adam geldi
field adına göre işaretledi Tm mı
daha ssonra
field adları field sıraları
tablo 1:KOD,AD,ADRES 1/ 2 / 3
tablo2: KOD,AD 1/2 demi
şimdi böyle tablolalarda tm yani KOD:=KOD a gidiyo AD:=AD a gidiyo
buraya kadar tm abi Şimdi ben birde
tablo 2 deki AD değilde ADSOYAD olduğunu farzedelim bu seferde adam
feild sıralamasına göre aktarma yapıcak
Yani KOD:=KOD,AD:=ADSOYAD a gelecek ben 1.durumu yapabiliyorum fakat 2.olayı yapamadım anlatmak istediğim
2.de yaptım da fakat fieldler eşit olursa tablolarda hata vermiyo aktarıyo fakat farklı olunca hata veriyo budur anlatmak istediğim. üstadlarım hepinize selamlar. Kolay gelsin
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Öncelikle yazdığın yazılara biraz dikkat et, konuşur gibi yazarsan biz, seni duyduğumuz gibi okuyamadığımız için zorluk çekeriz. Yazını okurken zorlandım açıkçası, ama anlatmak istediğini anladım sanırım.

Ancak yapmak istediğin şey sorunlu ve doğru olmayan bir şey. Zira AD Hanesi 20 Karakter olsun, ADSOYAD hanesi 30 Karakter olsun. Şimdi sen elindeki 20 Hanelik veri alanına tutup 30 haneli veri bindirmek istiyorsun. Yada daha değişik bir örnek vereyim. Kaynak tabloda NUMERIC(18,2) olan bir alanı Hedef tabloda NUMERIC(10,2) olan bir alana atmaya kalktığında ne olacak? Bu tür veri uyuşmazlıkları ki, burada sadece Boy uyuşmazlığı var. Ne yapacaksın? Bunları kontrol edeceksin. Nasıl yapacaksın? Tablo1.Field1.FieldType ve FieldSize ve Precision gibi property'lerle halledeceksin. Anladın mı? Field'ın type'ına bakacaksın, boyuna bakacaksın, Noktadan sonrasına bakacaksın. Tarihse, SmallDateTime'mı DateTime mı yoksa sadece Date'mi bunlara bakacaksın. Ayrıca Dephi'deki FieldType'a bakmış olmak sana yetmeyecek, dönüp DB'dende gerçekliğini araştıracaksın. Yani, MS-SQL'deki Date alanı, TimeStamp ve DateTime, SmallDateTime alanları Delphi tarafında sadece DateTime olarak görülebilir ve sen Tarih+Saat olan bir değeri atmaya kalktığın anda Date alanda hata ile karşılaşabilirsin. Bunlar başına gelebilir (ki geliyordur da)

Yapmak istediğin şey geniş kapsamlı bir iş bence yapmak istediğin olayı bir daha gözden geçir ve DataPump gibi bu iş konusunda uzmanlaşmış araçlar kullanmaya çalış.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

Adnan abi tşk ederim.Bende aslında datapump tarzı bir şey olmuş olucak gibi ama Selman Datapump Abi neyse çok tşkederim.Bilginiz ışığında beni
aydınlattığınız için Çok tşkederim.
Cevapla