select name from MSysObjects where type=1 and flags=0
⑵ 易語言 SQL語句取ACCESS表名
寫了個函數
Public Function treeview()
Try
Dim connstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\WAB.mdb;User Id=admin;Password=; "
Dim objCn As New ADODB.Connection
objCn.Open(connstr)
Dim rstSchema As ADODB.Recordset
Dim adSchemaTables As ADODB.SchemaEnum
rstSchema = objCn.OpenSchema(ADODB.SchemaEnum.adSchemaTables)
Do Until rstSchema.EOF
If rstSchema("TABLE_TYPE").Value.ToLower = "TABLE".ToLower Then
Dim FileNode As TreeNode
ListView.Items.Add(rstSchema("TABLE_NAME").Value)
End If
rstSchema.MoveNext()
Loop
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Function
⑶ 用ADO如何遍歷ACCESS中某個資料庫所有表名
rst.Open Sql, cn.ConnectionString
我的資料庫語言不是很好,但看了你的代碼,也覺得很亂,你的代碼至少有好幾種方法可以修改,上面是最簡單的一種,實際上你的資料庫在acapp.OpenCurrentDatabase的時候已經打開了,接下來根本就不需要再次使用cn進行連接。
所以第二種改法是:
acApp.OpenCurrentDatabase (dbPath)
'Dim cn As ADODB.Connection '不需要再次連接
'Set cn = acApp.CurrentProject.Connection '不需要再次連接
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
Dim Sql As String
Sql = "Select * From 0012X32"
rst.Open Sql, acApp.ADOConnectString '我只需要在這里調用連接的數據就可以了,而這個連接數據存儲在acApp.ADOConnectString裡面。
rst.MoveFirst
acApp.OpenCurrentDatabase (dbPath)
'Dim cn As ADODB.Connection '不需要再次連接
'Set cn = acApp.CurrentProject.Connection '不需要再次連接
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
Dim Sql As String
Sql = "Select * From 0012X32"
rst.Open Sql, acApp.ADOConnectString '我只需要在這里調用連接的數據就可以了,而這個連接數據存儲在acApp.ADOConnectString裡面。
rst.MoveFirst
下面是RecordSet的OPEN的用法:
Open 方法 (ADO Recordset)
打開游標。
語法
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
參數
Source 可選。Variant,計算有效的 Command 對象、SQL 語句、表名、存儲過程調用、URL 或包含持久存儲 Recordset 的文件名或 Stream 對象。
ActiveConnection 可選。Variant,計算有效的 Connection 對象變數名,或包含 ConnectionString 參數的 String。
CursorType 可選。CursorTypeEnum 值,確定在打開 Recordset 時提供者應使用的游標類型。默認值為 adOpenForwardOnly。
LockType 可選。LockTypeEnum 值,確定在打開 Recordset 時提供者應使用的鎖定(並發)類型。默認值為 adLockReadOnly。
Options 可選。Long 值,指示提供者計算 Source 參數的方式(如果該參數表示除 Command 對象之外的某些內容),或者指示 Recordset 應該從以前保存過的文件中恢復。可以是一個或多個 CommandTypeEnum 或 ExecuteOptionEnum 值,這些值可以用位 AND 操作符組合。
注意 如果從包含持久 Recordset 的 Stream 中打開 Recordset,那麼使用 adAsyncFetchNonBlocking 的 ExecuteOptionEnum 值將不起作用;提取操作將同步進行並發生阻塞。adExecuteNoRecords 或 adExecuteStream 的 ExecuteOpenEnum 值不應與 Open 一起使用。
Open 方法 (ADO Recordset)
打開游標。
語法
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
參數
Source 可選。Variant,計算有效的 Command 對象、SQL 語句、表名、存儲過程調用、URL 或包含持久存儲 Recordset 的文件名或 Stream 對象。
ActiveConnection 可選。Variant,計算有效的 Connection 對象變數名,或包含 ConnectionString 參數的 String。
CursorType 可選。CursorTypeEnum 值,確定在打開 Recordset 時提供者應使用的游標類型。默認值為 adOpenForwardOnly。
LockType 可選。LockTypeEnum 值,確定在打開 Recordset 時提供者應使用的鎖定(並發)類型。默認值為 adLockReadOnly。
Options 可選。Long 值,指示提供者計算 Source 參數的方式(如果該參數表示除 Command 對象之外的某些內容),或者指示 Recordset 應該從以前保存過的文件中恢復。可以是一個或多個 CommandTypeEnum 或 ExecuteOptionEnum 值,這些值可以用位 AND 操作符組合。
⑷ 如何用sql語句查詢access中都有哪些表以及表名稱
查詢表及名稱:
SELECTMSysObjects.NameFROMMsysObjectsWHERE(Left([Name],1)<>"~")AND(Left$([Name],4)<>"Msys")AND(MSysObjects.Type)=1ORDERBYMSysObjects.Name;
⑸ 如何遍歷出ACCESS資料庫中的所有表的表名
importjava.sql.Connection;
importjava.sql.DatabaseMetaData;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.Statement;
publicclassDBaccess{
publicstaticvoidmain(Stringargs[])throwsException{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringdburl="jdbc:odbc:Driver={MicrosoftAccessDriver(*.mdb)};DBQ=d:\DBTest.mdb";//此為NO-DSN方式
Connectionconn=DriverManager.getConnection(dburl);
Statementstmt=conn.createStatement();
DatabaseMetaDatadbmd=conn.getMetaData();
ResultSetrs=dbmd.getTables(null,null,"%",null);
while(rs.next()){
System.out.println("table-name:"+rs.getString(3)+"<br>");
}
stmt.close();
conn.close();
}
}
⑹ sql怎麼獲得所有表名
select name from [MSysObjects] where type=1 需要有相關許可權
office 2003設置:工具 -> 選項 -> 視圖 -> 勾選隱藏對象、系統對象。工具 -> 安全 -> 用戶與組的許可權 ,在對象名稱中選定 MSysObjects ,然後許可權中設置其讀取許可權。
office 2007設置:單擊左上角圖標 -> Access選項 -> 當前資料庫 -> 導航 -> 導航選項 -> 勾選顯示隱藏對象,顯示系統對象。資料庫工具選項卡 -> 用戶和許可權 -> 用戶與組許可權,對象類型選擇表,對象名稱選定MSysObjects,然後勾選「讀取數據」許可權
查詢列的表名是[MSysColumns]
⑺ access 里的查一個資料庫里的 所有表名的sql語句
貌似Access沒有類似SQL Server的存儲問表名的系統表或視圖。
或者你可以參考一下鏈接,用VBA實現。
http://msdn.microsoft.com/en-us/library/Aa25
⑻ 怎樣使用SQL語句修改Access里的表名
JET SQL 可以更改欄位類型,無法更改欄位名的,除非你連續使用幾個JET SQL 先刪除欄位然後再插入欄位,然後用UPDATE查詢將保存再臨時表的原欄位數據恢復過來。
或者,直接用 ADOX 更改 TABLE 的 Columns(欄位名) 對象的 NAME 屬性即可。
Function Test()
ChangeTableFieldName_ADO "表1", "aa", "pic1"
End Function
Function ChangeTableFieldName_ADO(MyTableName As String, MyFieldName As String, strNewName As String)
'3個參數:
'MyTableName 字元串,表名
'MyFieldName 字元串,原來的欄位名
'strNewName 字元串,新的欄位名
'記得先引用 ADOX
Dim MyDB As New ADOX.Catalog
Dim MyTable As ADOX.Table
MyDB.ActiveConnection = CurrentProject.Connection
Set MyTable = MyDB.Tables(MyTableName)
MyTable.Columns(MyFieldName).Name = strNewName
End Function
⑼ access查詢全表的SQL語句咋寫
select * from 學生 where 學號 like" '%' + Me.Text0.Value + '%'" or 姓名 like" '%' + Me.Text0.Value + '%' "or 年齡="'%'+Me.Text0.Value +'%'" or 性別="'%'+Me.Text0.Value +'%'"
⑽ access2007資料庫,如果是中文表名和欄位名,要怎麼寫sql語句
我個人認為,在ACCESS中,用可視化操作做查詢,比直接寫SQL語更有效率。另,中文的表名和欄位名和字母的沒什麼區別。如下所示,中文表名和中文欄位名:
SELECT H_入庫單.入庫單號, H_入庫單.入庫日期, H_入庫單.審核, H_入庫單.審批, H_入庫單.供應商, H_入庫單.異動性質, H_入庫單.制單人, Format([入庫日期],"yyyy/mm/dd") AS 交貨日期, H_入庫單.列印, H_入庫單.檢驗判定, H_入庫單.判定結果
FROM H_入庫單
WHERE (((H_入庫單.入庫單號) Like IIf(IsNull([Forms]![TH_入庫單資料]![單據號碼]),'*',[Forms]![TH_入庫單資料]![單據號碼])) AND ((H_入庫單.審核) Like IIf(IsNull([Forms]![TH_入庫單資料]![是否審核]),'*',[Forms]![TH_入庫單資料]![是否審核])) AND ((H_入庫單.審批) Like IIf(IsNull([Forms]![TH_入庫單資料]![是否審批]),'*',[Forms]![TH_入庫單資料]![是否審批])) AND ((H_入庫單.供應商) Like IIf(IsNull([Forms]![TH_入庫單資料]![供應商]),'*',[Forms]![TH_入庫單資料]![供應商])) AND ((H_入庫單.異動性質) Like IIf(IsNull([Forms]![TH_入庫單資料]![異動性質]),'*',[Forms]![TH_入庫單資料]![異動性質])) AND ((H_入庫單.制單人) Like IIf(IsNull([Forms]![TH_入庫單資料]![制單人]),'*',[Forms]![TH_入庫單資料]![制單人])) AND ((Format([入庫日期],"yyyy/mm/dd")) Between ([Forms]![TH_入庫單資料]![年]) And ([Forms]![TH_入庫單資料]![年1])));