Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

SORUN: <a1>hata</a1> 3001 karşılaştırma alanları Recordset filtre için ölçüt olarak

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:216873
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.
Belirtiler
ADO Filter özelliğini, <a1>Ölçüt</a1> dizesinde iki alanı karşılaştırmak (örneğin: Ölçüt dizesi yan tümceleri formunda oluşur: "AlanAdı işletmen AlanAdı") aşağıdaki hata üretir:
Çalışma zamanı hatası '3001':
Uygulama yanlış türde, kabul edilebilir aralığın dışında veya birbiriyle çelişen değişkenler kullanmaktadır.
Neden
Bu işlev geçerli ADO sürümleriyle gerçekleştirilmesi edemiyor. ADO Filter özelliğini ölçüt sözdizimi aşağıdaki gibi tanımlanır:
"AlanAdı operator 'Literal_Value'"
'Literal_Value' veri türü dizesi, sayı veya tarih olabilir. Önünde gelen ifadenin, iki alanı karşılaştırmak için kullanamazsınız. Bunu yapmak çalışan <a1>hata</a1> 3001 yükseltir.
Çözüm
Bir geçici çözüm, süzgeç ölçütü olarak Boolean işleçleri olarak birleştirilmiş birkaç ifadeler almaktır. Bu, yalnızca kullanabileceğiniz karşılaştırılan alanların değerleri, geliştiriciler için denir. Bu şekilde geliştirici için gerekli sonuçları karşılayan Ölçüt dizesi bir formülle gelebilir. Örneğin,:
rs.Filter = "Field1 Operator1 'Value1' AND Field2 Operator2 'Value2'"				

Geliştirici alan1 ve alan2 değerleri bilmez, geliştirici veya özel bir süzgeç yordamına (istemci uygulama) içinde) hem de bir saklı yordam (sunucu tarafında) dinamik olarak işlevi yerine getirmek için kullanın... vardır. Akış denetimi deyimleri özel süzgeç yordamı (veya saklı yordam) gerekli alan karşılaştırmalar gerçekleştirmek ve beklenen sonuçları oluşturmak için kullanabilirsiniz.

Bu makalede, bu makalenin "Ek BILGI" bölümüne bir tür yordam için bir örnek sağlar.

UYARı: EK BILGILER</a0> bölümünde sağlanan geçici çözümü, yalnızca örnek amaçla da dahil, ancak bununla sınırlı olmamak kaydıyla, örtülü veya hiçbir garanti olmadan satılabilirlik ve/veya belirli bir amaca uygunluk zımni hiçbir garanti verilir.
Durum
Microsoft, bu makalenin başında listelenen Microsoft ürünlerinde bir sorun olduğunu onaylamıştır.
Daha fazla bilgi
ADO Yardım belgelerine süzgeç yöntemin ölçüt ifadesi--açıklamalar için aşağıdakileri belirtir:

Ölçüt dizesi yan tümceleri formunda AlanAdı - işletmen - değer oluşur (örneğin, "Soyadý = 'Etikan'"). Tek tek yan tümceleri ile birleştirerek, bileşik yan tümceler oluşturabilirsiniz VE (örneğin, "Soyadı = 'Etikan' AND Adı = 'Gamze'") veya VEYA (, "soyad 'Etikan' OR Soyadý = 'Can' =").

Ayrıca aşağıdaki yönergeleri için <a2>Ölçüt</a2> değerini belirtir:

Alan değerleri karşılaştıracaktır değer (örneğin, 'Etikan', # 8/24/95 #, 12.345 veya $ ortaya). Dizeler ve tarihleri, diyez işaretleri (#) ile tek tırnak işaretleri kullanın. Numaraları için ondalık noktalar, dolar işaretleri ve bilimsel gösterimde kullanabilirsiniz. Değer, joker karakterler kullanabilirsiniz LIKE işleci ise. Yalnızca yıldız işareti (*) ve yüzde (%) joker karakter izin verilir ve dizenin son karakteri olmaları gerekir. Değer null olamaz.
Davranışı yeniden oluşturma adımları
===========================

  1. Yeni bir Microsoft Visual Basic projesi başlatın. Varsayılan olarak, Form1 oluşturulur.
  2. Bir proje Microsoft ActiveX Data Objects 2.x kütüphanesine başvurular ayarlayın.
  3. Formdaki bir komut düğmesi ekleyin. Command1, varsayılan olarak oluşturulur.
  4. Aşağıdaki kodu genel bildirim'ın Form1 bölümüne ekleyin:
   Option Explicit   Dim cn As New ADODB.Connection   Dim rs As New ADODB.Recordset   Private Sub Command1_Click()       cn.Open "provider=SQLOLEDB;Data Source=<your data source>;User ID=<uid>;" _     "password=;Initial Catalog=pubs;"       On Error Resume Next       cn.Execute "drop table tblFilterTest"       On Error GoTo errh       ' Create the test table       cn.Execute "create table tblFilterTest(ID int primary key, Field1      varchar(20), Field2 varchar(20))"       ' Open ADO recordset       rs.Open "select * from tblFilterTest", cn, adOpenKeyset,     adLockOptimistic       ' Add first record       rs.AddNew       rs("ID") = 1       rs("Field1") = "A"       rs("Field2") = "B"       rs.Update       rs.Requery          ' Add 2nd record       rs.AddNew       rs("ID") = 2       rs("Field1") = "D"       rs("Field2") = "C"       rs.Update       rs.Requery           ' Print original recordset       Debug.Print "Original Recordset:"       Debug.Print "====================="       While Not rs.EOF            Debug.Print rs("Field1") & vbTab & rs("Field2")              rs.MoveNext       Wend       rs.MoveFirst       ' You get error 3001 on the following line       rs.Filter = " Field1 > Field2 "       ' To demonstrate the workaround, comment the preceding line and       ' uncomment the following line:       ' Call Filter       Exit Sub   errh:       Debug.Print "Error Number:", Err.Number       Debug.Print "Error Source:", Err.Source       Debug.Print "Error Description:", Err.Description   End Sub   Private Sub Filter()       Debug.Print "Filtered Recordset: "       Debug.Print "====================="           While Not rs.EOF         If rs("Field1") > rs("Field2") Then             Debug.Print rs("Field1") & vbTab & rs("Field2")          End If         rs.MoveNext       Wend   End Sub				
Proje ve <a1>hata</a1> 3001'nı çalıştırmak için F5 tuşuna basarak oluşur.
Referanslar
Daha fazla bilgi için ADO Yardım belgelerine başvurun.
Ek bilgi için lütfen Microsoft Knowledge Base'de aşağıdaki makaleye bakın:
195222SORUN: ADO <a1>Yöntem</a1> yalnızca destekleyen bir ölçüt Bul

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 216873 - Son İnceleme: 08/24/2001 08:40:00 - Düzeltme: 1.0

Microsoft ActiveX Data Objects 2.0, Microsoft ActiveX Data Objects 2.01, Microsoft ActiveX Data Objects 2.1, Microsoft ActiveX Data Objects 2.1 Service Pack 2, Microsoft ActiveX Data Objects 2.5, Microsoft ActiveX Data Objects 2.6, Microsoft ActiveX Data Objects 2.7

  • kbmt kbcode kbdatabase kbfix kbprb KB216873 KbMttr
Geri bildirim