Aracılığıyla paylaş


AdNumeric alan türünde sayısal bir karşılaştırma yaptığınızda VBScript çalışma zamanı hatası (Tür Uyuşmazlığı)

Bu makale, bir (131) alan türünde sayısal karşılaştırma veya hesaplama yapmak için Visual Basic Scripting Edition (VBScript) kullandığınızda oluşan bir adNumeric hatayı (tür uyuşmazlığı) çözmenize yardımcı olur.

Özgün ürün sürümü: Visual Basic Betiği
Özgün KB numarası: 306916

Belirtiler

(131) alan türünde sayısal karşılaştırma veya hesaplama adNumeric yapmak için VBScript kullandığınızda, aşağıdaki hata iletilerini alabilirsiniz:

  • Hata iletisi 1

    Microsoft VBScript çalışma zamanı hatası '800a000d'
    Tür uyumsuzluğu

  • Hata iletisi 2

    Microsoft VBScript çalışma zamanı hatası '800a01ca'
    Değişken, VBScript'te desteklenmeyen bir Otomasyon türü kullanıyor

Neden

VBScript değerleri doğru bir sayısal türe dönüştüremediği adNumeric için bu hata iletileri oluşur. Bu davranış tasarımdan kaynaklanır.

Çözüm

Aşağıdaki iki olası geçici çözümden birini kullanabilirsiniz:

  • CDbl Alanı dönüştürmek adNumeric için veya CInt işlevini kullanın.
  • Bu davranışı göstermeyen JScript kullanın.

Bu davranışı bir Active Server Pages (ASP) sayfasında veya basit bir Visual Basic Script (.vbs) dosyası aracılığıyla yeniden oluşturabilirsiniz. Aşağıdaki adımlar, sorunun basit bir .vbs dosyasında nasıl yeniden üretileceğini gösterir.

Davranışı yeniden oluşturmak için 1. Adım: Oracle tablosunu oluşturma

Örnek tabloyu oluşturmak için Oracle sunucunuzda aşağıdaki betiği çalıştırın:

DROP TABLE Cust;
CREATE TABLE Cust (CustID NUMBER(22,6) PRIMARY KEY, Name VARCHAR2(50));
INSERT INTO Cust VALUES(222,'Kent');
INSERT INTO Cust VALUES(333,'Sally');
COMMIT;

Davranışı yeniden oluşturmak için 2. Adım: VBS dosyasını oluşturma

  1. Not Defteri'nde Test.vbs adlı yeni bir metin belgesi oluşturun ve aşağıdaki kodu teste yapıştırın.

    Set oConn = CreateObject("ADODB.Connection")
    oConn.open "Provider=MSDAORA;user id=User;" & _
    "password=password;data source=Oracle816Server;"
    
    set oRS = oConn.Execute("Select CustID FROM Cust")
    MsgBox "Numeric field type is 131." & vbcrlf & _
    "Field Type = " & ors.fields("CustID").type
    
    MsgBox "Numeric field * 100 = " & oRS("CustID") * 100
    MsgBox "Numeric field * 100 = " & cdbl(oRS("Custid")) * 100
    
  2. bağlantı dizesi Oracle sunucunuza işaret edip geçerli bir kullanıcı adı ve parola sağlayacak şekilde değiştirin.

  3. Test.vbs dosyasını masaüstünüzde kaydedin. Uzantıyı değiştirmenin dosyayı kararsız hale getirebileceğine dair bir uyarı almalısınız. Devam etmek için Tamam 'a tıklayın. Bu uyarıyı görmüyorsanız, bilinen dosya türleri için uzantıları gösterdiğinizi emin olmak isteyebilirsiniz.

  4. Test.vbs dosyasını kapatın.

  5. Masaüstünüzde Test.vbs'ye çift tıklayarak kodu çalıştırın. Tür Uyuşmazlığı hata iletisini alırsınız.

  6. Alanı çift veri türüne dönüştüren aşağıdaki kod satırının açıklamasını adNumeric kaldırın:

    MsgBox "Numeric field * 100 = " & cdbl(oRS("Custid")) * 100
    
  7. Aşağıdaki kod satırına açıklama ekleyin:

    MsgBox "Numeric field * 100 = " & oRS("CustID") * 100
    
  8. Test.vbs dosyasını kapatın ve kaydedin.

  9. Masaüstünüzde, kodu yeniden çalıştırmak için Test.vbs'ye çift tıklayın, ardından iki ileti kutusu alırsınız ve hata iletisi almazsınız.