Delphiye SqlLite ile veri aktarımî
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Delphiye SqlLite ile veri aktarımî
Merhaba, öncelikle dephide çok yeni olduğumu belirtmek isterim. FDCOnnection ile sqllite'tan csv dosyasini seçiyorum test ediyorum bağlantını başarılı olduğuni söylüyor sonrasında button'a kod yazıyorum ama hiç veri alamıyorum stringGrid'de. Aldıģim csv doysyasinda tablo var tabloda başlıklar bunu koda nasıl dökeceğimide bilmiyorum yani tablodaki verileri almak için başlıkları ayrı ayrı yazmam mı gerekiyor yoksa direk dosyayı çağırsam veri gelir mi? Bununla ilgili benzer kodları atan olursa örnek olması açısından çok iyi olur
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Delphiye SqlLite ile veri aktarımî
csv dosyası dediğimiz aslında alanlar belli bir karakterle ayıran metin dosyadan ibarettir. Bu yüzden hangi ayraç kullanılmış, yapısı ne bilmeden cevap verebilmek pek mümkün değil. O yüzden csv den örnek ilk 3 satır veya fazlasını görebilirsek belki dataset ile açacak bir yöntemi bulunur. Yalnız en kötü ihtimal satır satır bilgileri ayıklamak da başka bir yöntem olabilir. Aşağıda iki farklı yöntemle bilgelere hücre hücre erişme imkanı sağlanmaktadır.Fakat başta da belirttiğim gibi. Dosya yapınızın önizlemesine bakmadan direkt tablo olarak açma imkanı sunmak biraz zor.
Kod: Tümünü seç
var
slTemp, slSatir: TStringList;
i, j: Integer;
asSatir: TArray<string>;
sHucre, sAlan: string;
begin
slTemp := TStringList.Create;
slSatir := TStringList.Create;
try
slTemp.LoadFromFile('c:\yol\dosyaadi.csv');
slSatir.QuoteChar := '"'; //alanlar " karakteri içinde değil ise #0 verilmeli
slSatir.Delimiter := ';'; //alanlar birbirinde ; ile ayrılmışlarsa
for i := 0 to slTemp.Count - 1 do
begin
//1. yöntem string split yöntemi
asSatir := slTemp[i].Split([';']);
for sHucre in asSatir do
begin
//sHucre değeri alanlara tek tek erişmeyi sağlar
sAlan := sHucre;
//eğer " karakterleri arasındaysa bu kodla ayıklama yapılabilir
sAlan := sHucre.Substring(1, sHucre.Length - 2).Replace('""', '"');
end;
//2. yöntem TStrings DelimitedText özelliği
slSatir.DelimitedText := slTemp[i];
for j := 0 to slSatir.Count - 1 do
begin
//her slSatir[j] değerleri satırdaki alanlara tek tek erişmeyi sağlar
end;
end;
finally
slTemp.Free;
slSatir.Free;
end;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Delphiye SqlLite ile veri aktarımî
csv dosyası virgül kullanılarak ayrılmış.Tabloda şu şekilde 3 sütündan oluşuyor: tarih, açıklama ve tutar .alt kısımlarda bilgiler yazıyor yaklaşık 100 satır. Datasetle daha kolay yapılma yolu varsa anlatabilirseniz çok iyi olur ya da attığınız kod ile yapsam mı daha kolay olur?sabanakman yazdı: ↑04 Eyl 2020 12:05 csv dosyası dediğimiz aslında alanlar belli bir karakterle ayıran metin dosyadan ibarettir. Bu yüzden hangi ayraç kullanılmış, yapısı ne bilmeden cevap verebilmek pek mümkün değil. O yüzden csv den örnek ilk 3 satır veya fazlasını görebilirsek belki dataset ile açacak bir yöntemi bulunur. Yalnız en kötü ihtimal satır satır bilgileri ayıklamak da başka bir yöntem olabilir. Aşağıda iki farklı yöntemle bilgelere hücre hücre erişme imkanı sağlanmaktadır.Fakat başta da belirttiğim gibi. Dosya yapınızın önizlemesine bakmadan direkt tablo olarak açma imkanı sunmak biraz zor.Kod: Tümünü seç
var slTemp, slSatir: TStringList; i, j: Integer; asSatir: TArray<string>; sHucre, sAlan: string; begin slTemp := TStringList.Create; slSatir := TStringList.Create; try slTemp.LoadFromFile('c:\yol\dosyaadi.csv'); slSatir.QuoteChar := '"'; //alanlar " karakteri içinde değil ise #0 verilmeli slSatir.Delimiter := ';'; //alanlar birbirinde ; ile ayrılmışlarsa for i := 0 to slTemp.Count - 1 do begin //1. yöntem string split yöntemi asSatir := slTemp[i].Split([';']); for sHucre in asSatir do begin //sHucre değeri alanlara tek tek erişmeyi sağlar sAlan := sHucre; //eğer " karakterleri arasındaysa bu kodla ayıklama yapılabilir sAlan := sHucre.Substring(1, sHucre.Length - 2).Replace('""', '"'); end; //2. yöntem TStrings DelimitedText özelliği slSatir.DelimitedText := slTemp[i]; for j := 0 to slSatir.Count - 1 do begin //her slSatir[j] değerleri satırdaki alanlara tek tek erişmeyi sağlar end; end; finally slTemp.Free; slSatir.Free; end; end;
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Delphiye SqlLite ile veri aktarımî
Mesela ADOConnection bileşeninin ConnectionString özelliğine (örneğindeki gibi) verilirse o klasördeki csv dosyalarını ADOQuery ile aşağıdaki gibi SQL özelliğine yazılacak sorguyla almak mümkündür.
Kod: Tümünü seç
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\KlasorAdi;Extended Properties="text;HDR=Yes;FMT=Delimited";Persist Security Info=False
Kod: Tümünü seç
select * from deneme#csv
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Delphiye SqlLite ile veri aktarımî
Teşekkür ederim bilgiler içinsabanakman yazdı: ↑04 Eyl 2020 04:36 Mesela ADOConnection bileşeninin ConnectionString özelliğine (örneğindeki gibi)verilirse o klasördeki csv dosyalarını ADOQuery ile aşağıdaki gibi SQL özelliğine yazılacak sorguyla almak mümkündür.Kod: Tümünü seç
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\KlasorAdi;Extended Properties="text;HDR=Yes;FMT=Delimited";Persist Security Info=False
Kod: Tümünü seç
select * from deneme#csv