Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Farklı databeseler arası arası aktarım, MSSQL'den MYSQL veri transveri
#1
Merhaba,

Bir sorum olacaktı farklı databaseler arası bir aktarım yapmam lazım yalnız hata alıyorum, MSSQL'den MYSQL le, kullandığım kod ve sorgular aşağıdaki gibidir.

Hata kodu

exception class EDatabaseError with message 'Tur_Bilgi: Cannot modify a read-only dataset'. Process stopped. Use Step or Run


kullandığım sorgu
SELECT '' as kartfc,'' as akartno ,'' as kartid, 
--P.TCKIMLIK,
P.ADI, P.SOYADI, P.SICIL,
--'Aktif',
CASE --P.CIKTAR
WHEN P.CIKTAR <> '' THEN 'Pasif'
ELSE 'Aktif' END AS DURUM,

CASE P.FIRMA 
WHEN '1' THEN '4'
WHEN '2' THEN '5'
WHEN '3' THEN '6'
ELSE '' END AS FIRMA,


CASE P.GOREV 
WHEN '1' THEN '1'
WHEN '2' THEN '2'
WHEN '3' THEN '4'
WHEN '4' THEN '4'
WHEN '5' THEN '6'
WHEN '6' THEN '6'

ELSE '' END AS GOREV,
-- 'bolumid', 

CASE P.BOLDEPARTMAN 
WHEN '1' THEN '1'
WHEN '2' THEN '3'
WHEN '3' THEN '3'
WHEN '4' THEN '7'
WHEN '5' THEN '5'
WHEN '6' THEN '6'

ELSE '' END AS DEPARTMAN,

P.ISEGIRTAR, P.CIKTAR,
'maas' as ucrettipi,'' as resim, 'personel' as personelturu, 
'1' as fazlamesaialir,'0'as agialir ,'0' as parmaktanimlandi,'0' as sgk_issizliksigortakes,
'Normal' as sgk_grubu, '01' as sgk_belgeturu, '00000' as sgk_tabioldugukanun, 
'0' as sgk_ozurlulukderecesi,'1' as wckesintisiuygula,'1' as agicocukparasialsin,

CASE P.BIRAMIRI 
WHEN '1' THEN '1'
WHEN '2' THEN '7'
WHEN '3' THEN '5'
WHEN '4' THEN '7'
WHEN '5' THEN '3'
WHEN '6' THEN '2'
WHEN '7' THEN '4'
WHEN '8' THEN '7'
WHEN '9' THEN '10'
WHEN '10' THEN '9'
WHEN '11' THEN '7'
WHEN '12' THEN '6'
WHEN '13' THEN '10' 
WHEN '14' THEN '11' 
ELSE '' END AS MUDUR

FROM PERSONEL P
LEFT JOIN FIRMA F ON (F.ID=P.FIRMA)
LEFT JOIN GOREV G ON (G.ID=P.GOREV)
LEFT JOIN MUDUR M ON (M.ID=P.BIRAMIRI)
left join DEPARTMAN D ON (D.ID=P.BOLDEPARTMAN)
WHERE P.IL=1


kullandığım kod

procedure TForm1.BitBtn1Click(Sender: TObject);
begin

while not Per_Bilgi.Eof do
   begin

Tur_Bilgi.Append; ;//insert;// insert;
Tur_Bilgi.fieldbyname('kartfc').value := Per_Bilgi.fieldbyname('kartfc').value;
Tur_Bilgi.fieldbyname('kartno').value := Per_Bilgi.fieldbyname('akartno').value;
Tur_Bilgi.fieldbyname('kartid').value := Per_Bilgi.fieldbyname('kartid').value;
Tur_Bilgi.fieldbyname('ad').value := Per_Bilgi.fieldbyname('ADI').value;
Tur_Bilgi.fieldbyname('soyad').value := Per_Bilgi.fieldbyname('SOYADI').value;
Tur_Bilgi.fieldbyname('sicilno').value := Per_Bilgi.fieldbyname('SICIL').value;
Tur_Bilgi.fieldbyname('durum').value := Per_Bilgi.fieldbyname('DURUM').value;
Tur_Bilgi.fieldbyname('firmaid').value := Per_Bilgi.fieldbyname('FIRMA').value;
Tur_Bilgi.fieldbyname('grupid').value := Per_Bilgi.fieldbyname('GOREV').value;
Tur_Bilgi.fieldbyname('bolumid').value := Per_Bilgi.fieldbyname('DEPARTMAN').value;
Tur_Bilgi.fieldbyname('isegiristarihi').value := Per_Bilgi.fieldbyname('ISEGIRTAR').value;
Tur_Bilgi.fieldbyname('istencikistarihi').value := Per_Bilgi.fieldbyname('CIKTAR').value;
Tur_Bilgi.fieldbyname('ucrettipi').value := Per_Bilgi.fieldbyname('ucrettipi').value;
Tur_Bilgi.fieldbyname('resim').value := Per_Bilgi.fieldbyname('resim').value;
Tur_Bilgi.fieldbyname('personelturu').value := Per_Bilgi.fieldbyname('personelturu').value;
Tur_Bilgi.fieldbyname('fazlamesaialir').value := Per_Bilgi.fieldbyname('fazlamesaialir').value;
Tur_Bilgi.fieldbyname('agialir').value := Per_Bilgi.fieldbyname('agialir').value;
Tur_Bilgi.fieldbyname('parmaktanimlandi').value := Per_Bilgi.fieldbyname('parmaktanimlandi').value;
Tur_Bilgi.fieldbyname('sgk_issizliksigortakes').value := Per_Bilgi.fieldbyname('sgk_issizliksigortakes').value;
Tur_Bilgi.fieldbyname('sgk_grubu').value := Per_Bilgi.fieldbyname('sgk_grubu').value;
Tur_Bilgi.fieldbyname('sgk_belgeturu').value := Per_Bilgi.fieldbyname('sgk_belgeturu').value;
Tur_Bilgi.fieldbyname('sgk_tabioldugukanun').value := Per_Bilgi.fieldbyname('sgk_tabioldugukanun').value;
Tur_Bilgi.fieldbyname('sgk_ozurlulukderecesi').value := Per_Bilgi.fieldbyname('sgk_ozurlulukderecesi').value;
Tur_Bilgi.fieldbyname('wckesintisiuygula').value := Per_Bilgi.fieldbyname('wckesintisiuygula').value;
Tur_Bilgi.fieldbyname('agicocukparasialsin').value := Per_Bilgi.fieldbyname('agicocukparasialsin').value;
Tur_Bilgi.fieldbyname('bolumy').value := Per_Bilgi.fieldbyname('MUDUR').value;
Tur_Bilgi.ExecSQL;

Per_Bilgi.next;
end;
Per_Bilgi.First;
Cevapla
#2
Farklı tabloları JOIN yapınca ürün tablo ReadOnly oluyordur. Append ile değil de yine SQL ile ekleme silme yapın.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#3
Selamlar,

Birkaç tablonun kullanımıyla kompleks bir sorgu cümlesi oluşturursanız, sonuç olarak bazı alanlar ana tabloda olmayabilir. DB Engine bunu bilmediği için sorguyu LiveQuery=False olarak yaratır. Bu durumda kullanmak için TFDUpdateSql vardır. Burada değişen alanları DB'ye nasıl güncelleyeceğini veririz. Bunu kullanmanız gerekir. Ya da sorgunuz çok daha basit olmalı, tabloda bulunmayan alanlar olmamalı. Ado kullanıyorsanız onda UpdateSQL yok, ancak diğer tüm DB motorlarında mevcut sanırım.
Cevapla
#4
Merhaba,

Öncelikle görüşleriniz ve yardımınız için teşekkür ederim.
Konuyu yazdıktan sonra aklıma farklı bir çözüm geldi MSSQL tarafında geçici bir tablo oluşturup verileri oradan tek seferde almayı başardım.
Tekrardan çok teşekkür ederim.

Bu arada hatırlar mısınız bilmiyorum ama daha öncede bana çok yardımcı olmuştunuz mrmarman hocam ben hala Beyaztv'yim. Smile

iyi günler,
Cevapla
#5
@denizfatihi Hatırladım tabi. Yolunuz da bahtınız da açık olsun. TV sektörü kolay bir sektör değil, empati kurduğumdan her zaman yardımcı olmaya gayret ederim.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MySQL - Sql-mode only_full_group_by hatası. hi_selamlar 5 1.682 25-12-2022, Saat: 10:43
Son Yorum: hi_selamlar
  MySQL Bağlantı Sorunu - MEB akıllı tahta Frrst 6 1.386 10-11-2022, Saat: 23:16
Son Yorum: mcuyan
  Mysql Farklı bir autoinc mcuyan 11 1.919 09-11-2022, Saat: 23:05
Son Yorum: mcuyan
  Delphi 7 MySql DAC Nasıl Kurulur mahone 1 604 08-10-2022, Saat: 22:09
Son Yorum: mcuyan
  mysql trigger subquery returns more than 1 row hatası cvheneburi 5 1.998 28-08-2022, Saat: 01:04
Son Yorum: cvheneburi



Konuyu Okuyanlar: 1 Ziyaretçi