- Kaynak veritabanı, kullanıcı tarafından kullanılan eski bir Access veritabanı. Bende mevcut değil. Verilerin gizliliği gerekçesiyle inceleme şansım olamıyor.
- ADO ile yeni bir Access veritabanına aktarım yapılacak. Text tipinde olan alanlardan birisi hesaplamada kullanılmak üzere yeni veritabanında Numeric olarak tanımlandı ve buna aktarılacak.
- Aktarma işlemi için basit bir SQL INSERT INTO satırım var...
Kod: Tümünü seç
With TAdoQuery.Create(Nil) do
begin
ConnectionString := Format(sBaglantiString, [YeniDosyaAdi]);
SQL.Clear;
SQL.Add('INSERT INTO Tablo1 ( Alan1_String ,Alan2_Numeric ) ');
SQL.Add('SELECT Eski1_String ,''0''+Trim(Eski2_String) ');
SQL.Add('FROM EskiTablo IN ' + QuotedStr(EskiDosyaAdi) );
ExecSQL;
Free;
end;
- Aslında Numeric bir alana String bir alandan aktarma yapılabiliyor. Mevcut string değer rakamsal ifade içeriyorsa onlar numeric alana otomatik dönüşüyorlardı.
- Yukardaki örnekte TRIM ettiğimde boşluklar atılıyor, Null kalmasın diye başına '0' da ekleyip öyle gönderiyorum sorun yok ama string ifadelerle karşılaştığında "Ölçüt ifadesi veri türü uyuşmazlığı" hatasını alıyorum.
- Bunu aşmak için nasıl bir sorgu kullanabilirim içinden çıkamadım.
- Delphi fonksiyonlarından VAL() fonksiyonu gibi hata olsa da hatalı sonucu 0'a çeken bir fonksiyon SQL için de var mıdır ?
- Sıralı aktarma yapmak da oldukça uzun zaman alacağından tercih etmiyorum.