¡¡¡¡ÔÚVBÖУ¬ÓÃÊý¾Ý¿âÒýÇæºÍÊý¾Ý·ÃÎʶÔÏóDAO¿ÉÒÔ´´½¨¹¦ÄÜÇ¿´óµÄ¿Í»§/·þÎñÆ÷Ó¦ÓóÌÐò¡£¶ÔÔ¶³ÌÊý¾Ý¿âµÄ·ÃÎÊÊÇ¿ª·¢ÕâÀàÓ¦ÓóÌÐòµÄ¹Ø¼ü£¬±¾ÎĽ«½éÉÜÔÚVBÖÐÓÃDAOͨ¹ýÊý¾Ý¿âÒýÇæ·ÃÎÊÔ¶³ÌÊý¾Ý¿âµÄ·½·¨¡£ ¡¡¡¡ÓÃDAO·ÃÎÊÔ¶³ÌÊý¾Ý¿â¿ÉÒÔͨ¹ýÈý²½À´ÊµÏÖ£¬¼´Êý¾ÝÁ¬½Ó¡¢Êý¾Ý´¦ÀíºÍ¶Ï¿ªÁ¬½Ó¡£ÏÂÃæÖ÷Òª½éÉÜÊý¾ÝÁ¬½ÓºÍÊý¾Ý´¦ÀíµÄ¾ßÌå²Ù×÷¡£ ¡¡¡¡Êý¾ÝÁ¬½Ó ¡¡¡¡DAOͨ¹ýÁ´½ÓÔ¶³Ì±íµÄ·½Ê½À´½øÐÐÊý¾ÝÁ¬½Ó¡£ÕâÑù£¬Êý¾ÝËäȻפÁôÔÚÔ¶³ÌÊý¾ÝÔ´ÉÏ£¬µ«ÔÚ±¾µØµÄÊý¾Ý¿âÖпÉÒÔ´æ´¢ÓëÔ¶³ÌÊý¾ÝµÄÓÀ¾ÃÐÔÁ¬½Ó£¬Í¬Ê±»º´æÁ´½ÓµÄ±í½á¹¹ÐÅÏ¢£¬´Ó¶øÔÚÏÂÒ»´Î·ÃÎʸñíʱ£¬ ²»ÓÃÔٴδӷþÎñÆ÷ÖмìË÷ÕâЩ½á¹¹ÐÅÏ¢£¬¼Ó¿ìÁËÁ¬½ÓËٶȡ£Ò»µ©Á´½ÓÁËÒ»¸ö±í£¬¸ÃÁ´½Ó±ã»á±£ÁôÔÚ¸÷»á»°Æڼ䣬ֱµ½Á¬½Ó¶Ï¿ª¡£Á´½ÓÔ¶³Ì±íµÄ¾ßÌå²Ù×÷ÊÇ£º ¡¡¡¡Óà OpenDatabase ·½·¨´ò¿ª½«Òª°üº¬¸ÃÁ´½ÓµÄ±¾µØÊý¾Ý¿â£¬Óà CreateTableDef ·½·¨ÔÚ¸ÃÊý¾Ý¿âÖд´½¨Ò»¸öеÄTableDef¶ÔÏ󣬽« TableDef ¶ÔÏóµÄ Connect ÊôÐÔÉèÖÃΪһ¸öºÏ·¨µÄÁ¬½Ó×Ö·û´®£¬±êʶҪ·ÃÎʵÄÔ¶³ÌÊý¾Ý¿âÀàÐÍ¡¢Êý¾ÝÎļþµÄ·¾¶ÒÔ¼°Óû§ÃûºÍÔ¶³ÌÊý¾ÝÔ´ÃÜÂëµÈ¡£½« TableDef ¶ÔÏóµÄ SourceTableName ÊôÐÔÉèÖÃΪԶ³ÌÊý¾Ý¿âÖÐÒª·ÃÎʵıíµÄÃû³Æ¡£ Ìí¼Ó TableDef ¶ÔÏóµ½ TableDefs ¼¯ºÏÖС£ ¡¡¡¡ÊµÏÖÁ´½ÓÔ¶³Ì±í²Ù×÷µÄ´úÂëÈçÏ£º ¡¡¡¡Public Sub LinkTable(strDB As String, strRoDB As String, _ ¡¡¡¡strCn As String, strTdf As String, linkTdfName As String) ¡¡ Dim linkTdf As New TableDef ¡¡ Set dbs = OpenDatabase(strDB) ¡¡ linkTdf.Name = linkTdfName¡¡100 ¡¡ tempTable = UCase(linkTdf.Name) ¡¡ For i = 0 To dbs.TableDefs.Count - 1 ¡¡¡¡¡¡ If UCase(dbs.TableDefs(i).Name) = tempTable Then ¡¡¡¡¡¡¡¡¡¡ If MsgBox(linkTdfName + " ÒÑ´æÔÚ£¬ÊÇ·ñɾ³ý £¿", _ ¡¡¡¡¡¡¡¡¡¡ vbQuestion + vbYesNo) = vbYes Then ¡¡¡¡¡¡¡¡¡¡¡¡¡¡ dbs.TableDefs.Delete linkTdf.Name ¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Exit For ¡¡¡¡¡¡¡¡¡¡ Else: MsgBox "ÖØÐÂÊäÈëбíÃû" ¡¡¡¡¡¡¡¡¡¡ linkTdfName = InputBox(" бíÃû") ¡¡¡¡¡¡¡¡¡¡ GoTo 100 ¡¡¡¡¡¡¡¡¡¡ End If ¡¡¡¡¡¡ End If ¡¡ Next i Set linkTdf = dbs.CreateTableDef(linkTdfName)¡¡ 'Á´½ÓÔ¶³Ì±í ¡¡ linkTdf.Connect = ";database=" + strCn ¡¡ linkTdf.SourceTableName = strTdf ¡¡ dbs.TableDefs.Append linkTdf End Sub ¡¡¡¡ÉÏÊö¹ý³ÌÓÃÀ´ÊµÏÖÔ¶³Ì±íµÄÁ¬½Ó£¬ËüÓÐ5¸ö²ÎÊý£¬ÆäÖÐstrRoDBÊÇÒª·ÃÎʵÄÔ¶³ÌÊý¾Ý¿âÃû£¨°üÀ¨Â·¾¶£©£»strTdf ÊǸÃÊý¾Ý¿âÖеıíÃû£»strDB ÊÇÒªÁ´½ÓµÄ±¾µØÊý¾Ý¿â£¨°üÀ¨Â·¾¶£©£»linkTdfName ÊDZ¾µØÊý¾Ý¿âµÄÒ»¸öбíÃû£¬ÓÃÀ´½¨Á¢Ô¶³Ì±íµÄÁ´½Ó£»strCn ÊÇÖ¸¶¨Á¬½ÓÐÅÏ¢µÄ×Ö·û´®¡£ÐèÒªÌرð×¢ÒâµÄÊÇ£¬³ýÁËÔÚ·ÃÎÊÔ¶³Ì Microsoft Jet Êý¾Ý¿âʱ£¬Á¬½Ó×Ö·û´®ÒªÒԷֺţ¨£»£©¿ªÍ·Í⣬ָ¶¨Á¬½ÓÐÅÏ¢µÄ×Ö·û´®¶¼±ØÐëÒÔËù·ÃÎʵÄÔ¶³ÌÊý¾Ý¿âÀàÐÍ¿ªÍ·¡£DAO¿ÉÒÔ·ÃÎʵÄÔ¶³ÌÊý¾ÝÔ´ÓÐÒÔÏÂÈýÀࣺ ¡¡¡¡Microsoft Jet Êý¾ÝÔ´£¬È磺Access Êý¾Ý¡£ ¡¡¡¡IISAM£¨¿É°²×°µÄË÷Òý»¯Ë³Ðò·ÃÎÊ·½·¨£©¸ñʽÊý¾ÝÔ´£¬È磺FoxPro¡¢Paradox¡¢dBASE Êý¾Ý¡£ ODBC Êý¾ÝÔ´£¬È磺SQL Server Êý¾Ý¡¢Oracle Êý¾Ý¡£ ¡¡¡¡ÀýÈ磺ÉèÍøÂç·þÎñÆ÷ÃûΪserver£¬¹²ÏíĿ¼Ϊ C:\Sales µÄ FoxProÊý¾Ý¿â£¬Á¬½Ó×Ö·û´®Ó¦ÎªstrCn="FoxPro3.0;database=\\server\c$\Sales\Region1" ¡¡¡¡´ËÍ⣬DAO ͨ¹ý Microsoft Jet Êý¾Ý¿âÒýÇæ·ÃÎÊÔ¶³ÌÊý¾Ýʱ£¬»¹¿ÉÒÔÓà OpenDatabase ·½·¨Ö±½Ó´ò¿ªÔ¶³Ì±í¡£ÔÚ±¾µØÊý¾Ý¿âÖв¢Î´´æ´¢ÓëÔ¶³ÌÊý¾ÝÔ´½¨Á¢Á¬½ÓËùÐèÒªµÄÐÅÏ¢¡£Èç¹ûʹÓÃÁ´½Ó·½Ê½·ÃÎÊÊý¾Ý£¬Ôò²»±ØÔÚÿ´Î»á»°¿ªÊ¼Ê±ÌṩÁ¬½ÓÐÅÏ¢£¬´Ó¶ø¿ÉÒÔÌá¸ßЧÂÊ¡£ ¡¡¡¡Êý¾Ý´¦Àí ¡¡¡¡Êý¾ÝÁ¬½Ó½¨Á¢ºó£¬¿ÉÒÔÓà OpenRecordset ·½·¨´ò¿ªÒ»¸ö¼Ç¼¼¯£¬²¢¿ÉÓà DBGrid ¿Ø¼þºÍ Data ¿Ø¼þ·½±ãµØä¯ÀÀÕû¸ö¼Ç¼¼¯¡£Èç¹ûʹÓñíÀàÐÍ£¨Table-type£©¼Ç¼¶ÔÏó£¬Ôò¶ÔÓ¦µÄÊÇÒ»¸öʵ¼Ê´æÔÚµÄÊý¾Ý¿â±í£¬ÔÚ¶àÓû§»·¾³Ï£¬ÆäËüÓû§¶ÔÊý¾ÝµÄÐ޸ĻáÁ¢¼´·´Ó³µ½±íÖУ»Èç¹ûʹÓö¯Ì¬¼¯ÀàÐÍ£¨Dynaset-type£©¼Ç¼¶ÔÏó£¬Ôò¶ÔÓ¦µÄ¼È¿ÉÒÔÊÇÒ»¸ö±íÖÐÈ«²¿¼Ç¼£¬ÓÖ¿ÉÒÔÊÇÒ»¸ö²éѯµÄ½á¹û£¬²¢ÇÒ¿ÉÒÔ¸üмǼ¼¯ÖеļǼ£»Èç¹ûʹÓÿìÕÕÀàÐÍ£¨Snapshot-type£©¼Ç¼¶ÔÏó£¬Ôò¶ÔÓ¦µÄ¿ÉÒÔÊDZíÖеÄÈ«²¿¼Ç¼£¬Ò²¿ÉÒÔÊÇÒ»¸ö²éѯ½á¹û£¬µ«²»ÄܽøÐмǼµÄÔö¼Ó¡¢É¾³ýºÍÐ޸IJÙ×÷¡£´ËÍ⣬»¹¿ÉÒÔ½¨Á¢ÆäËüÀàÐ͵ļǼ¶ÔÏó£¬Èç½öÏòÇ°ÐÍ£¨ForwardOnly-type£©¼Ç¼¶ÔÏóºÍ¶¯Ì¬ÐÍ£¨Dynamic-type£©¼Ç¼¶ÔÏó¡£ ¡¡¡¡ÏÂÃæÊÇ´ò¿ª¶¯Ì¬¼¯¼Ç¼¶ÔÏó²¢ÏÔʾ¼Ç¼µÄ´úÂ룺 Public Sub rst_display(strDB As String, strRst As String, strForm As Form) ¡¡ Set dbs = OpenDatabase(strDB) ¡¡ Set rst = dbs.OpenRecordset(strRst, dbOpenDynaset) ¡¡ strForm!Data1.DatabaseName = dbs.Name ¡¡ strForm!Data1.RecordSource = rst.Name ¡¡ strForm!Data1.Refresh ¡¡ strForm!DBGrid1.ReBind End Sub ¡¡¡¡ÉÏÊö¹ý³ÌÓÐÈý¸ö²ÎÊý£¬ÆäÖÐ strDB ÓÃÀ´Ö¸¶¨±¾µØÊý¾Ý¿âÃû£¨°üÀ¨Â·¾¶£©£¬linkTdfName ÊÇÔÚ±¾µØÊý¾Ý¿âÖÐн¨µÄÁ´½ÓÔ¶³Ì±íµÄ±íÃû£¬strForm ÊÇÍø¸ñ¿Ø¼þºÍÊý¾Ý¿Ø¼þËùÔڵĴ°ÌåÃû¡£µ÷Óô˹ý³Ì¿ÉÒÔ»ùÓÚÐÂ±í½¨Á¢Ò»¸ö¶¯Ì¬¼¯ÀàÐ͵ļǼ¶ÔÏ󣬲¢¿ÉÔÚÍø¸ñÖÐä¯ÀÀ¸÷¸ö¼Ç¼¡£ ¡¡¡¡¶Ï¿ªÁ¬½Ó¿ÉÒÔͨ¹ý¹Ø±ÕÓ¦ÓóÌÐò»òÉèÖÃÁ¬½Ó³¬Ê±À´ÊµÏÖ¡£×¢Ò⣺Èç¹û¶ÔÊý¾Ý¿â¶ÔÏóʹÓà Close·½·¨£¬ÔòÓÉÓÚÔÚ Miscrosoft Jet Êý¾Ý¿âÒýÇæÄÚ²¿»º´æÁËÁ¬½Ó£¬Êµ¼ÊÉÏÁ¬½Ó²¢Î´È¡Ïû¡£¡¡ |