Bu makalede, sorgu ve güncelleştirme bilgileri, bir Active Server Pages (ASP) sayfasından ActiveX Data Objects (ADO) kullanarak bir Excel elektronik tablosu gösterilmiştir. Bu makalede ayrıca bu tür bir uygulama ile ilişkili sınırlamaları anlatılmaktadır.
ÖNEMLI: ASP/ADO uygulamalar, çok kullanıcılı erişim desteği olmasa da, bir Excel elektronik tablosu yok. Bu nedenle, çok kullanıcılı eşzamanlı erişim sorgulamak ve bu bilgileri güncelleştirmek için bu yöntemi desteklemiyor.
Bu örnek için bir Excel Elektronik tablonuzda veriye erişmek için <a0></a0>, Excel için Microsoft ODBC sürücüsü'ni kullanın. Excel Elektronik tablonuzu bir adlandırılmış aralık oluşturarak, veriye erişmek için bir tablo oluşturun.
Örnek uygulama oluşturmak için gereken adımları
- ADOtest.xls Excel dosyasının Sayfa1'de aşağıdaki verileri oluşturun:
Bu tabloyu kapaBu tabloyu aç
| column1 | column2 | column3 |
|---|
| RR | Bu | 15 |
| bb | Sınama | 20 |
| EE | Works | 25 |
Not Excel Elektronik tablonuzda bir sütun hem metin hem de sayılar içeriyorsa, Excel ODBC sürücüsü veri türü sütun olmalıdır doğru olarak yorumlayamaz. Bir sütunun tüm hücreleri aynı veri türü olduğundan emin olun. Her bir sütun hücresine aynı tür veya karma arasında "metin" ve "Genel" sahip değilse, aşağıdaki üç hataları oluşabilir: - Microsoft OLE DB Provider for ODBC sürücüleri hata '80040e21'
Istek özellikleri bu ODBC sürücüsü tarafından desteklenebilir değil.
- ODBC Sürücüler için Microsoft OLE DB Sağlayıcısı hatası '80004005'
Zevklidir anahtar olarak kullanmak için aranabilir hiçbir sütun içerdiğinden sorgu güncelleştirilemez.
- ODBC Sürücüler için Microsoft OLE DB Sağlayıcısı hatası '80004005'
Sorgu tabanlı güncelleştirme başarısız oldu. Güncelleştirilecek satır bulunamadı.
- Bir adlandırılmış aralık myRange1, Elektronik tablonuzda oluşturun:
- Verilerinizin bulunduğu alan satırları ve sütunları seçin.
- Ekle menüsünden Ad'ın üzerine gelin ve Tanımla'yı tıklatın.
- Ad aralığının adı myRange1 girin adı.
- Tamam'ı tıklatın.
Adlandırılmış aralık myRange1 aşağıdaki verileri içerir:
Bu tabloyu kapaBu tabloyu aç
| column1 | column2 | column3 |
|---|
| RR | Bu | 15 |
| bb | Sınama | 20 |
| EE | Works | 25 |
Not ADO, bir Excel sorgusu ilk satırı sütun başlıkları bulunduğunu varsayar. Bu nedenle, adlandırılmış aralık, sütun başlıklarını eklemeniz gerekir. Farklı bir DAO davranış budur.
Not Sütun başlıkları, bir sayı olamaz. Excel sürücüsü, bunları yorumlayamadığı ve bunun yerine, bir hücre başvurusunu verir. Örneğin, bir sütun başlığı olarak "F1" misinterpreted. - Bir ODBC sistem veri kaynağı adı (ADOTest.xls dosyaya işaret DSN) oluşturun.
- ODBC Denetim Masası'ndan açma yönetici.
- Sistem DSN sekmesinde Ekle'yi tıklatın.
- Microsoft Excel Driver (*.xls) seçin ve sonra Finish'i (son) tıklatın. Bu seçenek yoksa, Microsoft ODBC sürücüsü Excel için Excel kurulumundan yüklemeniz gerekir.
- ADOExcel için veri kaynağı adını seçin.
- Sürüm Excel sürümüne doğru olarak ayarlandığından emin olun.
- "Çalışma kitabı Seç..."'ı tıklatın, için ADOTest.xls göz dosya ve Tamam'ı tıklatın.
- Tıklatın "Seçenekleri >>" düğmesini tıklatın ve "Salt okunur" onay kutusunu temizleyin.
- Tamam'ı tıklattıktan sonra yine Tamam'ı tıklatın.
- Izinler ADOTest.xls dosyasını gösterir.
Active Server Sayfası'nı anonim olarak erişilebilen, anonim hesabın (ıusr_ <machinename>) en az olduğundan emin olmanız gerekir (RW) okuma/yazma erişimi elektronik tablo. Elektronik tablodaki bilgileri silmek isterseniz, uygun izinleri gerekir.
Active Server Sayfası'nı için erişim kimlik doğrulaması, uygulamanızın erişen tüm kullanıcılara uygun izinlere sahip olduğunuzdan emin olmak gerekir.
Not Elektronik tabloda uygun izinleri ayarlamak, hata iletisi aşağıdakine benzer alırsınız:
ODBC Sürücüler için Microsoft OLE DB Sağlayıcısı hatası '80004005'
[Microsoft][ODBC Excel sürücüsü] Microsoft Jet Veritabanı Altyapısı '(bilinmiyor)' dosyasını açamıyor. Dosya bir başka kullanıcı tarafından özel kullanımda açılmış veya verileri görebilmeniz için yetkiniz yok.
- Yeni bir ASP sayfası oluşturun ve aşağıdaki kodu yapıştırın:
<!-- Begin ASP Source Code -->
<%@ LANGUAGE="VBSCRIPT" %>
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "ADOExcel"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.ActiveConnection = objConn
objRS.CursorType = 3 'Static cursor.
objRS.LockType = 2 'Pessimistic Lock.
objRS.Source = "Select * from myRange1"
objRS.Open
%>
<br>
<%
Response.Write("Original Data")
'Printing out original spreadsheet headings and values.
'Note that the first recordset does not have a "value" property
'just a "name" property. This will spit out the column headings.
Response.Write("<TABLE><TR>")
For X = 0 To objRS.Fields.Count - 1
Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")
Next
Response.Write("</TR>")
objRS.MoveFirst
While Not objRS.EOF
Response.Write("<TR>")
For X = 0 To objRS.Fields.Count - 1
Response.write("<TD>" & objRS.Fields.Item(X).Value)
Next
objRS.MoveNext
Response.Write("</TR>")
Wend
Response.Write("</TABLE>")
'The update is made here
objRS.MoveFirst
objRS.Fields(0).Value = "change"
objRS.Fields(1).Value = "look"
objRS.Fields(2).Value = "30"
objRS.Update
'Printing out spreadsheet headings and values after update.
Response.Write("<br>Data after the update")
Response.Write("<TABLE><TR>")
For X = 0 To objRS.Fields.Count - 1
Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")
Next
Response.Write("</TR>")
objRS.MoveFirst
While Not objRS.EOF
Response.Write("<TR>")
For X = 0 To objRS.Fields.Count - 1
Response.write("<TD>" & objRS.Fields.Item(X).Value)
Next
objRS.MoveNext
Response.Write("</TR>")
Wend
Response.Write("</TABLE>")
'ADO Object clean up.
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
<!-- End ASP Source Code -->
- Kaydetmek ve Active Server Sayfası'nı adlandırın ve sonra da bunu tarayıcıda görüntülemek. Aşağıdaki görürsünüz:
Original Data:
column1 column2 column3
-----------------------------
rr this 30
bb test 20
tt works 25
Data after the update:
column1 column2 column3
-----------------------------
change look 30
bb test 20
tt works 25
Not Güncelleştirme, bir adlandırılmış aralık ilk satırı (sonra başlıkları) gerçekleştirildi.
Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
190195
(http://support.microsoft.com/kb/190195/
)
Güvenlik açığının nasıl ExtractInformation DAO ile Excel sayfası kaynağı