2009-02-03 18 views
5

यह मूलभूत सामग्री है, लेकिन मैं कुछ हद तक वीबीए और वर्ड/एक्सेस ऑब्जेक्ट मॉडल से अपरिचित हूं।किसी अन्य फ़ील्ड में लुकअप वैल्यू के आधार पर एक फ़ील्ड में मान कैसे वापस करें

मेरे पास लगभग 117000 रिकॉर्ड का दो कॉलम डेटाबेस है। कॉलम 'उपनाम' और 'गिनती' हैं। मैं चाहता हूं कि कोई उपयोगकर्ता किसी टेक्स्टबॉक्स में SMITH टाइप करने और सबमिट करने में सक्षम हो। मैं तो जैसे

SELECT table.count FROM table WHERE surname = string

कुछ चलाने के लिए और एक स्ट्रिंग में table.count का मान देने के लिए चाहते हैं।

ऐसा लगता है कि यह कोड की पांच या छह पंक्तियां होनी चाहिए (जो मेरे पास है लेकिन पोस्ट नहीं करेगा) लेकिन मुझे कुछ याद आ रही है!

चीयर्स

उत्तर

6

सबसे पहले, स्तंभ 'गिनती' नामकरण सावधान रहना - यह एसक्यूएल में एक कीवर्ड है और समस्याएं पैदा कर सकता है। इसी प्रकार, टेबल 'टेबल' को कॉल न करें।

' This example uses Microsoft ActiveX Data Objects 2.8, 
' which you have to check in Tools | References 

' Create the connection. This connection may be reused for other queries. 
' Use connectionstrings.com to get the syntax to connect to your database: 
Dim conn As New ADODB.Connection 
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\tmp\Database1.accdb" 

Dim cmd As New ADODB.Command 
Set cmd.ActiveConnection = conn 

' Replace anything which might change in the following SQL string with ? 

cmd.CommandText = "select ct from tbl where surname = ?" 

' Create one parameter for every ? 

Dim param As ADODB.Parameter 
Set param = cmd.CreateParameter("surname", adBSTR, adParamInput, , TextBox1.Text) 
cmd.Parameters.Append param 

Dim rs As ADODB.Recordset 
Set rs = cmd.Execute 

MsgBox rs("ct") 

rs.Close 
conn.Close 
+0

तालिका और कॉलम में वास्तव में वास्तविक नाम हैं, और वहां अधिक कॉलम हैं, लेकिन मैं अपने लिए थोड़ा सा काम करना चाहता था इसलिए मैं वास्तव में कुछ सीखता हूं। धन्यवाद! – user51498

4

यह InsertDatabase उपयोग करना संभव है:

यहां कुछ नमूना कोड जो यह कर का एक तरीका पता चलता है

Sub GetData() 
    ActiveDocument.Bookmarks("InsertHere").Select 

    Selection.Range.InsertDatabase Format:=0, Style:=0, LinkToSource:=False, _ 
     Connection:="TABLE Members", SQLStatement:= _ 
     "SELECT [Count] FROM [Members]" _ 
     & " WHERE Surname='" _ 
     & ActiveDocument.FormFields("Text1").Result & "'", _ 
     DataSource:="C:\docs\ltd.mdb", From:=-1, To:= _ 
     -1, IncludeFields:=True 
End Sub 

यह एक संपादित डेटाबेस उपकरण पट्टी का उपयोग करके दर्ज मैक्रो है।

संपादित चेतावनी: दिखाया गया यह कोड एसक्यूएल इंजेक्शन हमले के अधीन है।

संबंधित मुद्दे