excel'den access'e aktarırken karakter hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
gul_tanriover
Üye
Mesajlar: 18
Kayıt: 17 Eki 2006 11:24
Konum: İzmir

excel'den access'e aktarırken karakter hatası

Mesaj gönderen gul_tanriover »

Arkadaşlar merhaba,

Excel'de oluşturduğum tabloyu access db'e aktarırken uzun olan şirket isimlerinin sadece 20 karakterini aktarıyor.Access de metin olarak tanımlı alan 50 karaktere izin veriyor.Ama excelden aktaramıyorum.

Bunu nasıl önleyebilirim?

Şimdiden teşekkürler
Herşeye Rağmen....
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Sorunun anladığım şekli şöyle o zaman...

- 50 karakter genişlikte tanımlanmış, Access veritabanındaki "Şirket Adı" alanına, Excel'deki tablodan aktarma yapıldığında 50 yerine 20 karakterlik kısmı aktarılıyor fakat yer müsait olmasına rağmen sonrası kırpılıyor. Öyle mi ?

- Bu durumda Access veritabanı aktardığın alan büyüklüğünü tekrar kontrol etmeni, yanlış bir alana aktarıp aktarmadığının teyidi, aktarma işlemi yapmak için kullandığın enstrumanı 20 ile sınırlı olmadığının teyidi vb. gerekli.

- Aktarma işleminden bir örnek yazarsan çözüm için faydası olurdu, bu durum normal şartlarda mantıksız.
En son mrmarman tarafından 27 Eki 2006 01:04 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Resim
Resim ....Resim
gul_tanriover
Üye
Mesajlar: 18
Kayıt: 17 Eki 2006 11:24
Konum: İzmir

Aktarım kodu

Mesaj gönderen gul_tanriover »

//dosya açma bölümü

procedure TForm1.SpeedButton2Click(Sender: TObject);
var a,y,yx: integer;
begin
with data do begin
OpenDialog1.Filter := 'Excel Dosyaları (*.xls)|*.xls';
if OpenDialog1.Execute then
begin
listbox1.Items.Clear;
exc :=CreateOleObject('EXCEL.APPLICATION');
exc.Workbooks.Open(OpenDialog1.FileName);
for y := 1 to 5 do
begin
try
say[y]:=exc.workbooks[1].worksheets[y].name; //sayfa isimleri
except
break;
end;
end;
for yx:= 1 to y-1 do
begin
listbox1.Items.Add(say[yx]);
end;
end;
if not VarIsEmpty(exc) then
begin
exc.DisplayAlerts := False;
exc.Quit;
exc:=unassigned;
end;end;end;


//sayfa seçme bölümü

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
with data do begin
excel.Active:=falsE;
excel.ConnectionString:='provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + opendialog1.filename + ';Mode=Read;Extended Properties=excel 8.0;Persist Security Info=False';
excel.CommandText:=listbox1.Items.Strings[listbox1.ItemIndex] + '$';
excel.Active:=true;
end;
end;

//Aktarma Bölümü

procedure TForm1.SpeedButton6Click(Sender: TObject);
var say,satir:integer;
begin
say:=0;
with data do begin
excel.Active;
excel.First;
while not excel.Eof do
begin
try
table.Insert;
tableyetkili.AsString := excelyetkili.AsString;
tablealan.AsString:= excelalan.AsString;
tablefirma.AsString := excelfirma.AsString;
tablesektor.AsString:=excelsektor.AsString;
tabletel.AsString:=exceltel.AsVariant;
tabletel2.AsString:=exceltel2.AsVariant;
tableadres.AsString:=exceladres.AsString;
tablefax.AsString:=excelfax.AsVariant;
tableemail.AsString:=excelemail.AsString;
tableweb.AsString:=excelweb.AsString;
tableil.AsString:=excelil.AsString;
tableilce.AsString:=excelilce.AsString;
tableulke.AsString:=excelulke.AsString;
table.Refresh;
excel.Next;
say:=say+1;
label19.Caption:=inttostr(say);
table.UpdateRecord;
except
end;end;end;end;

Teşekkürler
Herşeye Rağmen....
Kullanıcı avatarı
SeRoKi
Üye
Mesajlar: 72
Kayıt: 09 Kas 2005 02:59
Konum: İstanbul

Mesaj gönderen SeRoKi »

Table nesnenizdeki alanların uzunluklarından olabilir.
FieldEditor dan kontrol edebilirmisiniz.
Birde aklıma exceldeki hücre genişlikleri geldi, Hücreler max. genişliktemi acaba ?
Cevapla