Otomatik sorgu sağlayıcıları
Windows'ta XLSX çalışma kitabı cephesi üzerinden sürüm 2.384.99'dan itibaren kullanılabilir; otomatik sağlayıcı seçimi yalnızca açık bir sorgu yenilemesi sırasında gerçekleşir
Mevcut bir sorguyu yenileme
Workbook.QueryProviders.BaseDirectory := 'C:\Data';
Workbook.QueryProviders.MaxInputBytes := 64 * 1024 * 1024;
Workbook.QueryProviders.MaxResultCells := 2000000;
Workbook.QueryProviders.TimeoutSeconds := 30;
Status := Sheet.RefreshQueryTable('ImportedData', 1000000);
TXLSXWorkbook.QueryProviders: TXLSQueryProviderDispatcher, lxQueryProviders biriminden çalışma kitabının sahibi olduğu bir dağıtıcıyı açığa çıkarır; dağıtıcıyı serbest bırakmayın
TXLSXWorksheet.RefreshQueryTable(const AName: WideString; AMaxRows: Integer = 1000000; AOnProgress: TXLSQueryRefreshProgress = nil): Integer ve sıfır tabanlı AIndex alan aşırı yükleme, mevcut bir sorguyu seçer ve bu dağıtıcıyı kullanır
Açık bir TXLSQueryTableProvider kabul eden mevcut aşırı yüklemeler, eksik sağlayıcıyı reddetme davranışları dahil, o sağlayıcıyı doğrudan kullanmaya devam eder; otomatik dağıtıma geri düşmezler
Yenileme başarıda 1, iptalde 0, başarısızlıkta -1 döndürür; xlsOperationRefresh altında tanılama kodları 1401 ve 1400'dür; mevcut işlemsel sonuç uygulaması, şema doğrulaması, literal dizeler ve biçimlendirme davranışı yürürlükte kalır
Bu tanılamaların adları xlsDiagnosticQueryRefreshCancelled ve xlsDiagnosticQueryRefreshFailed'dir; çalışma kitabı yazma korumasının alınması durum dönüşümünden önce gerçekleşir, böylece donmuş salt okunur bir görünüm ya da başka bir yazma koruması reddi istisna fırlatır
Çalışma kitabı açma ve kaydetme asla bağlantı verisi çekmez, sorgu değerlendirmez ya da saklanan RefreshOnLoad üst verisine dokunmaz; sonucunu kaydetmeden önce gereken her sorguyu açıkça yenileyin
Desteklenen gömülü sağlayıcılar
xlckText; sıkı UTF-8, UTF-16LE, UTF-16BE, Windows-1252 ya da Latin-1 kod çözümüyle, yapılandırılmış başlangıç satırlarıyla ve altı tarih sırası ile atlanan alanlar dahil desteklenen alan türleriyle yerel ayrıştırılmış ya da sabit genişlikli metni okur; ayrıştırılmış girdi tırnaklı çok satırlı kayıtları da desteklerxlckAdo,xlckOleDbvexlckOdbc; salt okunur bağlantılar ve kayıt kümeleriyle kurulu Windows ADO ve veritabanı sürücülerini kullanır;CommandType = 2SQL metnini,CommandType = 3tablo komutunu seçerxlckWeb; pozitif indeksi ya da adıyla seçilmiş, boş olmayan dikdörtgen tek bir HTML tablosuna anonim HTTP ya da HTTPS GET için Windows WinHTTP kullanır; desteklenen yanıt karakter kümeleri UTF-8, UTF-16, Windows-1252 ve Latin-1'dir
BaseDirectory yalnızca göreli yerel metin yolları için temel sağlar; veritabanı bağlantı dizeleri ve Web URL'leri açık bağlantı üst verisi olarak kalır
Belirtilmemiş bir metin kodlaması, desteklenen bir bayt sırası işareti kodlamayı tanımlamadıkça yalnızca ASCII girdiyi kabul eder; ASCII dışı girdi, açık bir desteklenen kodlamayı ya da bayt sırası işaretini gerektirir
Ayrıştırılmış bir Text bağlantısı için TextPrompt = False, TextDelimited = True ve tam olarak bir ayırıcı atayın, ardışık ayırıcıları daraltmayın; yeni oluşturulan bağlantılar varsayılan olarak sorma ve sekme ayırıcısı kullanır, farklı bir ayırıcı seçerken TextTab'i temizleyin
Sabit genişlikli metin
TextPrompt = False ve TextDelimited = False atayın, sonra sıfırdan başlayarak kesin artan sıfır tabanlı Position sırasıyla TextFields ekleyin; her alan bir sonraki konumda ya da fiziksel kayıt sonlandırıcısında biter, xltiftSkip alanını sonuçtan hariç tutar
Konumlar girdi baytlarını değil çözülen UTF-16 kod birimlerini sayar; bir vekil çifti bölen bir sınır reddedilir; CRLF, LF ve CR kayıtları ayırıcı ve niteleyici ayarlarından bağımsız sonlandırır
Alan dolgusu, açıkça türlendirilmiş metin dahil, doğrulanmış yerel sabit genişlikli içe aktarma davranışıyla eşleşen biçimde dönüştürmeden önce kırpılır; alan içindeki tırnak, sekme ve ayırıcı karakterler literal girdi olarak kalır; kısa kayıtlar bildirilen şemayı değiştirmeden boş sondaki alanları sağlar
TextFields yokken her kayıt tek bir genel alandır; TextFirstRow ilk şema kaydını seçer, Query.Headers o kaydın değerlerini atlar ve açık boş kayıtlar satır olarak kalır
Mevcut satır, girdi baytı, sonuç hücresi ve 32767 kod birimli alan sınırları uygulanır; geçersiz üst veri, dönüşüm başarısızlıkları ya da aşırı girdi, işlemsel çalışma sayfası güncellemesinden önce hazırlanmış veriyi temizler; iptal önceki sonuç hücrelerini korur
Connection.TextPrompt := False;
Connection.TextDelimited := False;
Connection.TextFields.Add(xltiftGeneral, 0);
Connection.TextFields.Add(xltiftText, 8);
Status := Sheet.RefreshQueryTable('Imported');
Bir Web bağlantısı için WebHtmlTables = True ve WebHtmlFormat = 'none' atayın; desteklenen istekler gömülü kimlik bilgilerini, parçaları, kimlik doğrulamayı ve yönlendirmeleri reddeder
Gömülü sağlayıcılar kendi bağlantı türlerindeki desteklenmeyen üst veriyi reddeder; veritabanı yenilemesi OLAP ya da sunucu komutlarını, bağlantı dosyası dolaylamasını, saklanan parolaları ve kimlik bilgisi sorularını reddeder; Text yenilemesi dosya sorularını reddeder; Web yenilemesi anonim tablo üst verisi ister
Türlü veritabanı parametreleri
SQL metin komutları, Connection.Parameters sırasına göre bir ADO Command üzerinden bağlanan konumsal ? işaretlerini destekler; parametre değerleri asla SQL metninin yerine geçmez, adlar konumsal sırayı değiştirmeden bağlamaları etiketler
Ön denetim; tek tırnaklı dizeler, çift tırnaklı ya da ters tırnaklı tanımlayıcılar, köşeli parantezli tanımlayıcılar, satır yorumları ve iç içe blok yorumlarının dışındaki işaretleri sayar, ikilenmiş tırnak ya da köşeli parantez kaçışları dahildir; eşleşmeyen tırnak ya da yorumlar ve işaret sayısı uyuşmazlıkları bağlantı açılmadan reddedilir
ParameterType = 'value' ile xlcpvInteger, xlcpvDouble, xlcpvBoolean ya da xlcpvString olmak üzere açık bir ValueKind ve karşılık gelen değer özelliğini kullanın; sıfır, False ve boş dizeler değerdir ve xlcpvNone yürütme sırasında bir değer çıkarsamaz
Connection.CommandType := 2;
Connection.CommandText := 'SELECT Amount FROM Sales WHERE Amount > ?';
with Connection.Parameters.Add do
begin
Name := 'MinimumAmount';
ParameterType := 'value';
ValueKind := xlcpvInteger;
IntegerValue := 0;
SqlType := 4;
end;
Status := Sheet.RefreshQueryTable('SalesQuery');
Inputs!$A$1 ya da 'Sales Input'!B2 gibi tam nitelemeli bir yerel çalışma sayfası başvurusu için ParameterType = 'cell', ValueKind = xlcpvCell ve CellReference kullanın; tırnaklı sayfa adları ikilenmiş apostrof kullanır; aralıklar, dış çalışma kitapları, adlar ve nitelemesiz hücre başvuruları reddedilir
Çalışma sayfası yenilemesi; yeniden hesaplama ya da paketlenmiş hücre somutlaştırması olmadan saklanan skaler değerlerin ve kullanılabilir formül önbelleklerinin anlık görüntüsünü alır; eksik formül önbellekleri ve hata hücreleri reddedilir; eksik ya da boş bir hücre yalnızca açık bir desteklenen SQL türüyle SQL null sağlar
Hücre anlık görüntüsü Variant türünü korur; işaretli Int64, Currency, türlü tarih ve null girdilerin kalıcı 32 bitlik tamsayı ya da Double literal alanlarına indirilmesine izin vermez; doğrudan saklanan tarih, null ve Int64 literalleri yerel parametre üst veri modelinin dışındadır, bu değerler için türlü hücre bağlamalarını kullanın
SqlType, ADO türlerine açıkça eşlenen ODBC SQL tür kodlarını kullanır; bir ADO DataTypeEnum değeri değildir
| SQL tür kodları | Kabul edilen değerler ve bağlama sözleşmesi |
|---|---|
0 | Açık literal türünden ya da özgün hücre Variant'ından çıkarılır: tamsayı, işaretli Int64, Single, Double, Currency, Boolean, tarih ya da Unicode dize; null açık bir SQL türü ister |
4, 5, -5 | INTEGER, SMALLINT ve BIGINT; tam sayısal değerlerle ve işaretli hedef aralık doğrulamasıyla |
7, 8, 6 | REAL, DOUBLE ve FLOAT; yalnızca sayısal girdiler, kayıpsız tamsayıdan kayan noktaya dönüşüm ve REAL için tam Single dönüşümüyle |
-7 | BIT, sayısal ya da dize zorlaması olmadan Boolean değerleri kabul eder |
-8, -9, -10 | Unicode CHAR, VARCHAR ve LONGVARCHAR; boş dizeler dahil UTF-16 dizelerini korur |
1, 12, -1 | Unicode olmayan CHAR, VARCHAR ve LONGVARCHAR yalnızca ASCII dizeleri kabul eder; diğer karakterler için bir Unicode tür kullanın |
91, 92, 93 veya eski 9, 10, 11 | DATE, TIME ve TIMESTAMP, metin ayrıştırmadan ya da bir Excel çağı tahmin etmeden türlü tarih Variant'larını kabul eder; DATE bir zaman bileşenini reddeder, TIME sıfır (dahil) ile bir (hariç) arasından bir değer ister |
Desteklenen açık türler SQL null'u da kabul eder; diziler, başvuru Variant'ları, hatalar, sonlu olmayan sayılar, desteklenmeyen SQL türleri ve tamsayı hassasiyeti kaybedecek dönüşümler reddedilir; NUMERIC ya da DECIMAL, bu bağlama API'sinin sağlamadığı hassasiyet ve ölçek üst verisi ister
ADO türlü değeri ve bildirilen boyutu alır; boş metin için en az bir kod birimi ayrılır; yerel sürücüler SQL lehçesinden, desteklenen parametre türlerinden ve sonuç dönüşümlerinden sorumlu kalır; böylece kurulu bir sağlayıcı geçerli bir bağlamayı yine reddedebilir ya da daha dar sayısal ya da tarih yeteneklerine sahip olabilir
Jet ve ACE; doğrulanmış DATE, TIME ve TIMESTAMP değerleri için türlü OLE DATE bağlamalarını kullanır; böylece tarih ve saat, yerel ayara bağlı zaman damgası metni yansımalarından bağımsız kalır; DATE ve TIME doğrulama kuralları yine uygulanır ve null yansıtma yetenekleri sağlayıcıya özgü kalır
Parametreler bir SQL metin komutu ister ve getirme başına 1024, ad başına 255 kod birimi ve metin değeri başına 32767 kod birimiyle sınırlıdır; komut metni, parametre atıfları, adlar ve yükler de girdi baytı bütçesini harcar
Sorular ve bilinmeyen parametre uzantı öznitelikleri reddedilir; RefreshOnChange saklanan üst veri olarak kalır ve arka plan yenilemesi tetiklemez; açma ya da kaydetme hücreleri çözümlemez ya da komut yürütmez
Doğrudan Fetch literalleri destekler; FetchWithCellResolver(Connection, Query, MaxRows, out Data, var Abort, AResolver), hücre değerleri için Boolean sonucu bir saklanan değerin kullanılabilir olup olmadığını belirten TXLSQueryParameterCellResolver geri çağırısını kabul eder
Geri çağırı çağrıya özgüdür ve saklanmaz; otomatik çalışma sayfası yenilemesi kendi yerel çözümleyicisini sağlar; kayıtlı özel sağlayıcılar yine önceliklidir ve parametre semantiğinin sahibidir
Web yenilemesi; kapsayan hücreleri, iç içe seçili tabloları ya da betikle üretilen içeriği olmayan düz text/html tablolarını destekler; desteklenmeyen düzenler ve varlıklar kısmi veri üretmek yerine reddedilir
Özel sağlayıcı kaydetme
Workbook.QueryProviders.RegisterProvider(xlckWeb, CustomProvider);
try
Status := Sheet.RefreshQueryTable('RemoteData');
finally
Workbook.QueryProviders.RegisterProvider(xlckWeb, nil);
end;
TXLSQueryProviderDispatcher.Create, doğrudan kullanım için bağımsız sahipli bir dağıtıcı kurar; çalışma kitabı kendi örneğini oluşturur ve sahiplenir
RegisterProvider(AKind: TXLSConnectionKind; AProvider: TXLSQueryTableProvider), bildirilen bir bağlantı türü için ödünç bir işleyici kurar ve nil kaydı kaldırır; işleyici kayıttan uzun yaşamalıdır
Kayıtlı bir işleyici gömülü sağlayıcıya göre önceliklidir ve uygulamaya özgü kimlik doğrulamayı ya da bağlantı türlerini destekleyebilir; kayıt değişiklikleri, yapılandırma değişiklikleri ve özyinelemeli dağıtım getirme sırasında reddedilir; geçersiz enum değerleri dizi erişiminden önce reddedilir
Fetch(Connection, Query, MaxRows, out Data, var Abort), çalışma sayfası yenilemesi sırasında koparılmış üst veri alır ve dikdörtgen bir TXLSQueryResultData döndürür; iptal ya da istisnalar yayılmadan önce hazırlanmış sonuçları temizler
Kaynak sınırları
MaxInputBytes varsayılanı 67108864 bayttır ve metin ya da Web girdisini ve desteklenen veritabanı sonuç yüklerini sınırlar; MaxResultCells varsayılanı 2000000 hücresidir ve dikdörtgen sonucu sınırlar
TimeoutSeconds varsayılanı 30'dur ve desteklenen yerel veritabanı ya da HTTP aşamalarını yapılandırır; tüm işlem ya da özel bir sağlayıcı için garantili bir son tarih değildir
Üç ayarın ve MaxRows'un pozitif olması ve zaman aşımının yerel bir milisaniye tamsayısına sığması gerekir; dağıtıcı fazla satır, sütun ya da hücreyi kırpma yapmadan reddeder; bayt ve girdi sınırları gömülü sağlayıcılar tarafından uygulanır ve özel getirmeler için kayıtlı işleyicinin sorumluluğunda kalır
Çalışma sayfası yenilemesi tüm sonuç değerlerini doğrular ve iptal ya da uygulama hatalarından sonra hücreleri ile sorgu ya da tablo üst verisini geri yükler; özel sağlayıcılar kendi dış işlem sınırlarına uymaktan sorumlu kalır
Yerel XLSX sonuç bağlamaları
Tablo destekli veritabanı sorguları; tablo-sorgu tablosu ilişkisini, tutarlı alan kimliklerini, sütun kimliklerini ve gizli bir yerel hedef adını kullanır; bağımsız desteklenen Text ve Web hedefleri sonuç aralıklarını korur
TXLSXTable.ColumnUniqueNames[Index]: WideString, sıfır tabanlı yerel sütun kimliklerini açığa çıkarır ve bunları ColumnQueryTableFieldIds ile birlikte atama, kopyalama ve yeniden açma boyunca korur
Doğrudan bir dış tablo olarak bağlanan eski bir Text bağlantısı desteklenen bir yerel dışa aktarma biçimi değildir ve kaydetme, çıktıdan önce onu reddeder; açıkça yenilenen metin değerleri sıradan bir tabloyu doldurabilir ya da kurulu bir ADO/ODBC metin sürücüsü tablo destekli yerel bir veritabanı sorgusu sağlayabilir
İlgisiz ya da desteklenmeyen alınmış ilişkiler ve uzantı XML'i korunmaya devam eder; bu özellik opak dış grafikleri desteklenen yenilenebilir sorgulara dönüştürmez
Hedef doğrulaması, ilerleme geri çağrıları ve çevresindeki üst veri modeli için bağlantı ve işlemsel sorgu API'leri sayfasına bakın