veritabanindan aktarim

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
cuneyt22
Üye
Mesajlar: 213
Kayıt: 07 Şub 2004 03:32
İletişim:

veritabanindan aktarim

Mesaj gönderen cuneyt22 »

s.a arkadaslar veritabanindan veritabanina aktarma yapan bir program varmi.. onceden interbaseden yazdigim bir programin datasini oracle veritabanina atmak istiyorum.. table lar ayni sadece veritabani degisti ama 1-2 tabloda 1-2 alan eklendi yada cikarildi bunu yapan bir program varmi bildiginiz? hepinize iyi calismalar
Kullanıcı avatarı
muskut
Kıdemli Üye
Mesajlar: 1118
Kayıt: 22 Ara 2003 09:50
Konum: Sandalyemden
İletişim:

Mesaj gönderen muskut »

benim bildiğim bir program yok ama bunu delphi ile yazacağın birkaç kod ile halledersin. Bir veritabanından okuyacan diğerine yazacan.

vesselam.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

delphi nin altındaki datapump isimli programla tüm odbc li tabloları birbirine aktarırsın :ara datapump
.-.-.-.-.-.-.-. ^_^
alipolatolu
Üye
Mesajlar: 10
Kayıt: 25 Ağu 2004 01:49
Konum: Bursa
İletişim:

Mesaj gönderen alipolatolu »

Bu konuya benimde ihtiyaım oluyor arasıra. Bence de oturup kısa bir program yazmak daha iyi.
Kullanıcı avatarı
cuneyt22
Üye
Mesajlar: 213
Kayıt: 07 Şub 2004 03:32
İletişim:

Mesaj gönderen cuneyt22 »

aslinda kendim bu programi yazmaya karar verdim.. ancak interbase deki tablolari listeliyorum RDB$RELATIONS tablosu ile ancak Oracle daki tablolari listeleyemiyorum.. birde tablolardaki alanlari secerek kopyalamak istiyorum.. yardimci olursaniz sevinirim
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

birde ibpump ı dene
ben access-ib donusturmek icin kullanıyorum genelde ama
ib kaynaktan odbc hedefe (oracle) yazma yapabilir.
denemek lazım, ama mantık olarak datapump ile aynı...
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
cuneyt22
Üye
Mesajlar: 213
Kayıt: 07 Şub 2004 03:32
İletişim:

Mesaj gönderen cuneyt22 »

s.a

arkadaslar kendim bir program yazayim dedim aslinda yazdimda ..ben soyle yaptim alan alan tablodan diger tabloya atiyorum ancak hicbir hata vermemesine ragmen tabloya baktigimda bu degerle yazilmamis..

Table2.open;
Table2.Last;
table1.open;
table1.First;
while not Table1.Eof do
begin
Table2.insert;
Table2.FieldByName(ComboBox4.Items[ComboBox4.ItemIndex]).Value :=Table1.FieldByName(ComboBox3.Items[ComboBox3.ItemIndex]).Value;
Table2.Post;
Table2.Next;
table1.Next;
end;
table2.Refresh;

bu kodlarda bir hata vermiyor hatta aktariyormus gibi sql ifadesi mouse nin uzerinde kaliyor sonra islem bittiginde tabloya bakiyorum gelen bir sey yokkkk. bunun nedeni ne olabilir acaba
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

valla senin kodlarının üzerinde birkaç değişiklik yaptım.. Aslında seninkinde çalışmaması için bir neden yok gibi

Kod: Tümünü seç

Table2.open;
//Table2.Last; bu satıra gerek yok
table1.open;
table1.First;
while not Table1.Eof do
begin
     Table2.Append;  //Insert yerine append kullandım..
    // burada comboboxın değerini almak için bu kodlar daha mantıklı
    Table2.FieldByName(ComboBox4.text).ASString  
    :=Table1.FieldByName(ComboBox3.Text).AsString;
    Table2.Post;
    table1.Next;
end;
table2.Refresh; 
Bu arada field tiplerin string olmayabilir ancak aktarırken eğer displayformat veya editformat özelliklerine birşey yazmadıysan blob hariç tüm tipleri aktarır diye düşünüyorum. Eğer problem çıkarsada tipleri kontrol ettirip ona göre aktarabilirsin..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
tablonun pirmary key alanı varsa ona kayıt girmediğin için yapıyor olabilir.
kodlarla ilgili olarak
1.

Kod: Tümünü seç

table2.append
i kullanarak (insert yerine) tablonun sonuna kayıt ekliyebilirsin. yani last ve next kullanmana gerek yok.
2.

Kod: Tümünü seç

Table2.FieldByName(ComboBox4.Items[ComboBox4.ItemIndex]).Value 
yerine

Kod: Tümünü seç

Table2.FieldByName(ComboBox4.text).Value 
kullanabilirsin.
3. eğer field ların aynı ise

Kod: Tümünü seç

for i:=0 to table1.fields.count-1 do
  table2.fields[i].value:=table1.fields[i].value
tarzında bir aktarım yapabilirsin.
field isimleri aynı fakat sıraları farklı ise busefer

Kod: Tümünü seç

for i:=0 to table1.fields.count-1 do
  table2.fieldbyname(table1.fields[i].name).value:=table1.fieldbyname(table1.fields[i].name).value;
gibi bir döngü kurup tüm alnları aktarabilirsin.
***kodlarda yazım yanlışı olmuş olabilir.*******
4. Bu işlemi query ile yapmanı paramtere kullanmanı ,ibpmp u biraz incelemeni tavsiye ederim.
Kolay Gelsin
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
cuneyt22
Üye
Mesajlar: 213
Kayıt: 07 Şub 2004 03:32
İletişim:

Mesaj gönderen cuneyt22 »

arkadaslar zaten bu is icin query kullaniyorum query ile orn interbase deki tum tbalolarin isimlerini bir combobox icine atiyorum ardindan bu combobox dan secilen table nin alanlarini 2. bir combobox icine atiyorum ayni seklilde diger veritabani icinde ayni isi yapiyorum daha sonra aktar diyince yukardaki kod ile aktarmaya calisiyrum ancak hicbir sorun vermemesine rahmen tabloya islemiyor hatta tabloya yazmadan once bu verileri bir listboxa atiyorum goruyum diye oraya atiyor ancak tabloya yazmiyor...dediklerinizi yaptim ancak olmuyor...
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

commit ediyormusun? :?:
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
cuneyt22
Üye
Mesajlar: 213
Kayıt: 07 Şub 2004 03:32
İletişim:

Mesaj gönderen cuneyt22 »

sagol kardes allah razi olsun table2.CommitUpdates; etmeyi unutmusum simdi yapinca oldu unutmusum demek... :) sagolun varolun
Cevapla