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
excel'den access'e aktarırken karakter hatası
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 18
- Kayıt: 17 Eki 2006 11:24
- Konum: İzmir
excel'den access'e aktarırken karakter hatası
Herşeye Rağmen....
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.
- 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.
-
- Üye
- Mesajlar: 18
- Kayıt: 17 Eki 2006 11:24
- Konum: İzmir
Aktarım kodu
//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
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....