döngüyü slq koduna çevirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

döngüyü slq koduna çevirme

Mesaj gönderen huseyinert »

s.a arkadaşlar
bir fdb dosyasında diğer fdb dosyasına veri aktaracağım şuanda yapıyorum fakat döngüyle olduğu için çok kayıtta hata veriyor sql ile yapmak istiyorum şuanda yaptığım kod aşağıda;

Kod: Tümünü seç

Try
ProgressBar1.Max:=data.doktorkayit.RecordCount;
     ProgressBar1.Min:=0;


data.doktorkayit.First;
While not data.doktorkayit.Eof Do Begin



ProgressBar1.Position:=data.doktorkayit.RecordCount-data.doktorkayit.RecNo;

 data.doktor_kayit_ak.Close;
 data.doktor_kayit_ak.UnPrepare;
 data.doktor_kayit_ak.SQL.Clear;
 data.doktor_kayit_ak.SQL.Add('INSERT INTO DOKTORKAYIT (ADISOYADI,BOLUM,UNIVERSITE,DIPLOMANO,CEPTEL,EVTEL,ADRES,ISBASTARIH,DOGTAR,DOGUMYERI,RESIM,FIXUCRETI)');
 data.doktor_kayit_ak.SQL.Add('VALUES(:A01,:A02,:A03,:A04,:A05,:A06,:A07,:A08,:A09,:A10,:A11,:A12)');
 data.doktor_kayit_ak.Params[0].asstring:=data.doktorkayit.fieldbyname('ADISOYADI').asstring;
 data.doktor_kayit_ak.Params[1].asstring:=data.doktorkayit.fieldbyname('BOLUM').asstring;
 data.doktor_kayit_ak.Params[2].asstring:=data.doktorkayit.fieldbyname('UNIVERSITE').asstring;
 data.doktor_kayit_ak.Params[3].ASFLOAT:=data.doktorkayit.fieldbyname('DIPLOMANO').ASFLOAT;
 data.doktor_kayit_ak.Params[4].asstring:=data.doktorkayit.fieldbyname('CEPTEL').asstring;
 data.doktor_kayit_ak.Params[5].asstring:=data.doktorkayit.fieldbyname('EVTEL').asstring;
 data.doktor_kayit_ak.Params[6].asstring:=data.doktorkayit.fieldbyname('ADRES').asstring;
 data.doktor_kayit_ak.Params[7].AsDateTime:=data.doktorkayit.fieldbyname('ISBASTARIH').AsDateTime;
 data.doktor_kayit_ak.Params[8].AsDateTime:=data.doktorkayit.fieldbyname('DOGTAR').AsDateTime;
 data.doktor_kayit_ak.Params[9].asstring:=data.doktorkayit.fieldbyname('DOGUMYERI').asstring;
 data.doktor_kayit_ak.Params[10].VALUE:=data.doktorkayit.fieldbyname('RESIM').VALUE;
 data.doktor_kayit_ak.Params[11].AsFloat:=data.doktorkayit.fieldbyname('FIXUCRETI').AsFloat;


 data.doktor_kayit_ak.Prepare;
 data.doktor_kayit_ak.ExecSQL;
 data.doktorkayit.Next;
end;



Except
	On Exception Do Raise;
end;

SHOWMESSAGE('Transfer İşlemini Başarıyla Tamamladınız.');
        ProgressBar1.Position:=0;
şekilnde bunu sql koduna çevirmem gerekiyor yardımlarınızı bekliyorum arkadaşlar...
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Forumda pekçok kez konuşuldu. Ararsanız çeşitli yöntemler bulabilirsiniz.

Benim aklıma ilk gelen ibExpert verileri insert cümlelerine dönüştürebiliyor. Tam menülerini hatırlamıyorum. FDB dosyasından export edip, diğerinde çalıştırın.

Kolay gelsin.
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

mustafa hocam nasıl aratacağımı bilmiyorum sql yazsam bir sürü şey çıkar tam karşılamaz burdan yardımcı olsanız daha iyi olur, devamlı arama yapın diyoruz ama ozaman foruma soru sormanın anlamı ne olacak aradığmız şey birebirr tam olarak bulabilseydim bu yola baş vurmayacaktım ...
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

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

Mesaj gönderen mussimsek »

huseyinert yazdı:mustafa hocam nasıl aratacağımı bilmiyorum sql yazsam bir sürü şey çıkar tam karşılamaz burdan yardımcı olsanız daha iyi olur, devamlı arama yapın diyoruz ama ozaman foruma soru sormanın anlamı ne olacak aradığmız şey birebirr tam olarak bulabilseydim bu yola baş vurmayacaktım ...
Hocam aklına gelen herşeyi deneyeceksin, özellikle anahtar kelimeleri. Ben bazen birşeyi bulmak için 10-15 kelime ile aratıyorum. Bir süre sonra zaten olayı çözüyorsunuz ve ilk aramalarda çözüme ulaşmaya başlıyorsunuz. Örnek olarak ben olsam şöyle aratırdım :

- firebird veri aktarımı
- firebird export
- firebird diğer
...

Kolay gelsin.
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

mustafa hocam arattım ama bulamadım siz link verebilirsmisiniz?
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba Hocam,
Ibexpert kullanıyorsanız. içinde veri olan table ı çift tıklayıp açtıktan sonra,
Sol üst köşedeki table seçeneğini seçiyorsunuz. Ordan Export Data Into script seçeneğini seçiyorsunuz.
Gelen menüden almak istediğiniz alanları check li bırakıyorsunuz.
Export into : kısmını Clipboard bırakıyorsunuz
Export as :kısmını Insert statements bırakıyorsunuz.
sonra export butonuna basıyorsunuz.

Bundan sonra diğer vtdeki table ınıza gideceksiniz. Sonra Tools menüsünden Script Executive seçeneğini seçeceksiniz.
Script kısmına Shift+Insert tuşları ile clipboardakini yapıştıracaksınız. Daha sonra f9 tuşuna basıp scripti çalıştırıyorsunuz.
Bu aşamadan sonra bilgilerin gelmesi lazım.
Yanlız autoinc alanları almamanız lazım. yoksa problem çıkabilir. İşinizi tam görmüyorsa biraz daha ayarlarla oynayarak istediğinizi alırsınız.

Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

openx hocam ben program içinden bunu yapmak istiyorum, yukarda verdiğim kod çalışıyor ama döngüden dolayı fazla kayıtta hata veriyor kasılıyor, bunu değiştimem lazım bu yıl sonunda yeni döneme devir işleminde kullanılacak...
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba hocam,
Mustafa hocam yazdığım yöntemi söylemişti. Siz de aksini söylemeyince ben o şekil zannettim.

Kod: Tümünü seç

insert into kurum2 select kurum.* from kurum
gibi bir yapı işinizi görmez mi acaba?

Yanlız önce 2.tabloyu oluşturmanız lazım. Varsa zaten sorun yok.

Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

ofenx hocam şöyle olacak iki tane fdb dosyamız ve ikininde ayrı database nesnesi ve iki tane transaction olacak ve ikinin ayrı dataset leri olacak bu durumda yazdığnız kod nasıl o olacak, yani table lar arasında değil veri tabanı dosyları arasında dosya transfferi olacak ve hatta detail tablelar da da aktar yapmam gerekiyor... kodu nasıl olmalı daha açıklayıcı yazabilirmisiniz...

tşk. ederim
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
shadowmann
Üye
Mesajlar: 508
Kayıt: 30 Oca 2004 10:49

Mesaj gönderen shadowmann »

viewtopic.php?p=82864&highlight=#82864

Ben burdaki kodu iki databasedeki tabloları birbirine transfer için kullanıyorum. Pratik bir çözüm. Belki işinize yarar.
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

hocam verdiğiniz linki inceledim, orda tam olarak benim söylediğim işi yapan bir kod yok...

yukarda detaylı açıkladım ve verdiğim kod var bu kod çalışıyor ama fazla kayıtta sorun çıkartıyor, sql ile olması gerekiyor diye düşünüyorum...
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba hocam,
dünden beri internet bağlantımda sorunum vardı. Size bahsettiğim şeyi denemeye fırsatım olmadı ama helpte tam sizin işinizi karşılayacak bir şey buldum. Bi deneyin belki size uyar.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);

var
  Filename : String;
  RawOutput : TIBOutputRawFile;
  RawInput : TIBInputRawFile;
begin
  IBSQL1.Sql.Text := 'Select LR ,KURUM_KODU,KURUM_ADI FROM KURUM';
  IBSQL2.Sql.Text := 'Insert into KURUM (LR ,KURUM_KODU,KURUM_ADI) values (:LRNO, :KURKOD,:KURADI)';
  Filename := 'DataFile.RAW';
  RawOutput:= TIBOutputRawFile.Create;
  try
    RawOutput.FileName := FileName;
    IBSQL1.BatchOutput(RawOutput);
  finally
    RawOutput.Free;
  end;

  RawInput := TIBInputRawFile.Create;
  try
    RawInput.FileName := FileName;
    IBSQL2.BatchInput(RawInput);
  finally
    RawInput.Free;
  end;
  IBSQL2.Transaction.CommitRetaining;
    SHOWMESSAGE('İŞLEM BİTTİ. ');
end;

İki tane ibsql bileşeni kullanıyorsunuz. Her birini ibdatabaselerinize bağlıyorsunuz. İlk ibdatabase içinde veri olandır. ikinci boş olandır.

bağlantıyı ona göre yapın. Yanlız burada sanırım autoinc alanları girmemeniz lazım. Bir deneyin.

Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

ofenx hocam çok tşk. ederim verdiğiniz kod işimi görüyor gibi. Allah Razı olsun
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

s.a arkadaşlar
ofenx hocanın verdiği kod çalışıyor fakat şöyle bir sorun var, master tablolarda sorun yok aktarabiliyorum, detail tablolarda aktarırken yeni veritabanına giden master tablodaki kayıtların kno(otomatik sayı alanı)değeri değiştiği için, detail tabloda foreing key alanım DNO ya farklı kno numarası giitiği için ilişki bozuluyor, eski veritabanındaki tablolardan yeni veritabanına aktarma yaparken böyle bir sorun oluyor, ofenx hoca ibsql kullanmış ama biz query kullandık çünkü generator ve trigger kullanmak gerekiyor, burda master tablonun kno sunu detail tablonun dno na yeni değerini nasıl atabiliriz...

iyi çalışmalar...
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Cevapla