<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "在ACCESS 2007裡面的VBA一個問題？"]]></title>
		<link>https://forum.andowson.com/posts/list/12.page</link>
		<description><![CDATA[Latest messages posted in the topic "在ACCESS 2007裡面的VBA一個問題？"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>在ACCESS 2007裡面的VBA一個問題？</title>
				<description><![CDATA[ 原本是依賴拉物件方式搭SQL去做，後來伺服器掛點，最新一次的備份出來用CSV的；所以想問若是用Office 2007裡面ACCESS，用ACCESS去做每一行（即每一行筆資料）查詢的SQL語法應該怎麼下？或是怎麼寫支程式進去下達？如下： 
<br>
<br>
<br>
原始資料表 ALL_TABLE 
<br>
<br>
索引_欄位1_欄位2_欄位3_欄位4 
<br>
<br>
01_XXXX1_YYYY1_ZZZZ1_WWWW1 
<br>
<br>
02_XXXX2_YYYY2_ZZZZ2_WWWW2 
<br>
．　 ． ．　 ． ． 
<br>
．　 ． ．　 ． ． 
<br>
．　 ． ．　 ． ． 
<br>
．　 ． ．　 ． ． 
<br>
．　 ． ．　 ． ． 
<br>
NN_XXXXN_YYYYN_ZZZZN_WWWWN 
<br>
<br>
每一行各別轉如下： 
<br>
<br>
01_TABLE 
<br>
<br>
索引_欄位1_欄位2_欄位3_欄位4 
<br>
<br>
01_XXXX1_YYYY1_ZZZZ1_WWWW1 
<br>
<br>
02_TABLE 
<br>
<br>
索引_欄位1_欄位2_欄位3_欄位4 
<br>
<br>
02_XXXX2_YYYY2_ZZZZ2_WWWW2 
<br>
<br>
........一直到 
<br>
<br>
NN_TABLE 
<br>
<br>
索引_欄位1_欄位2_欄位3_欄位4 
<br>
<br>
NN_XXXXN_YYYYN_ZZZZN_WWWWN 
<br>
<br>
<br>
～以上～ 
<br>
<br>
有這樣子SQL語法嗎？或是VBA應該怎麼寫？還是java可以做到？ 
<br>
<br>
懇請賜教，感激不盡～]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/468/964.page</guid>
				<link>https://forum.andowson.com/posts/preList/468/964.page</link>
				<pubDate><![CDATA[Thu, 20 Jan 2011 15:44:31]]> GMT</pubDate>
				<author><![CDATA[ crc2121]]></author>
			</item>
			<item>
				<title>回覆:在ACCESS 2007裡面的VBA一個問題？</title>
				<description><![CDATA[ 這個問題我看很久還是沒什麼頭緒，如果要寫支Java程式透過 JDBC 去存取 Microsoft Access 2007 的資料表可以參考這個範例程式： 
<br>
[code] 
<br>
import java.sql.Connection; 
<br>
import java.sql.DriverManager; 
<br>
import java.sql.PreparedStatement; 
<br>
import java.sql.ResultSet; 
<br>
import java.sql.ResultSetMetaData; 
<br>
<br>
public class DBAccess { 
<br>
<br>
 /** 
<br>
 * @param args 
<br>
 */ 
<br>
 public static void main(String[] args) { 
<br>
 try { 
<br>
<br>
 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
<br>
 String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/test/Database1.accdb"; 
<br>
 Connection conn = DriverManager.getConnection(url, "", ""); 
<br>
 PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM ALL_TABLE"); 
<br>
<br>
 ResultSet rs = pstmt.executeQuery(); 
<br>
 ResultSetMetaData rsmd = rs.getMetaData(); 
<br>
 int i = 0; 
<br>
 while (rs.next()) { 
<br>
 String column1 = rs.getString("欄位1"); 
<br>
 String column2 = rs.getString("欄位2"); 
<br>
 String column3 = rs.getString("欄位3"); 
<br>
 String column4 = rs.getString("欄位4"); 
<br>
 i++; 
<br>
 System.out.println(i+"_TABLE: "); 
<br>
 for (int j = 1; j &lt; rsmd.getColumnCount(); j++) { 
<br>
 System.out.print(rsmd.getColumnName(j) + "_"); 
<br>
 } 
<br>
 System.out.println(rsmd.getColumnName(rsmd.getColumnCount())); 
<br>
 System.out.println(i+"_"+column1+"_"+column2+"_"+column3+"_"+column4); 
<br>
 } 
<br>
 rs.close(); 
<br>
 pstmt.close(); 
<br>
 conn.close(); 
<br>
 } catch (Exception e) { 
<br>
 System.err.println("Got an exception!"); 
<br>
 System.err.println(e.getMessage()); 
<br>
 } 
<br>
 } 
<br>
<br>
} 
<br>
[/code] 
<br>]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/468/965.page</guid>
				<link>https://forum.andowson.com/posts/preList/468/965.page</link>
				<pubDate><![CDATA[Thu, 20 Jan 2011 18:21:34]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:在ACCESS 2007裡面的VBA一個問題？</title>
				<description><![CDATA[ 我用圖來解釋一下好了。 
<br>
<br>
圖中的ACCESS2007建立的資料庫中的test資料表（如紅線上方），透過SQL或是VBA在或者是JAVA都可，能否把圖中的綠藍紫框個別製作成資料表且每個資料表由001一直至做到XXX為止。 
<br>
[url]http://img200.imageshack.us/f/002wui.jpg/[/url] 
<br>
其中ＩＤ欄位重複是和段欄位做分段用。 
<br>
<br>
p.s所有資料型態皆為備忘，如圖：[url]http://img195.imageshack.us/f/001anpk.jpg/[/url]]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/468/968.page</guid>
				<link>https://forum.andowson.com/posts/preList/468/968.page</link>
				<pubDate><![CDATA[Thu, 20 Jan 2011 23:25:03]]> GMT</pubDate>
				<author><![CDATA[ crc2121]]></author>
			</item>
			<item>
				<title>回覆:在ACCESS 2007裡面的VBA一個問題？</title>
				<description><![CDATA[ 假設您已經把所有的資料由一個csv檔案匯入到Access 2007中的一個table (table name是test)，然後依據欄位ID的值之不同，將所有ID相同之紀錄分別插入(Insert)到相同的資料表，不同的ID則放到不同的資料表中(table name為三位數字，由001開始，依序遞增）。由於不知道資料表可能有多少個，所以採用由程式動態建立。參考範例程式如下： 
<br>
<br>
[code] 
<br>
import java.sql.Connection; 
<br>
import java.sql.DriverManager; 
<br>
import java.sql.PreparedStatement; 
<br>
import java.sql.ResultSet; 
<br>
import java.sql.ResultSetMetaData; 
<br>
import java.sql.SQLException; 
<br>
import java.sql.Statement; 
<br>
import java.sql.Timestamp; 
<br>
<br>
public class DBAccess { 
<br>
<br>
 /** 
<br>
 * @param args 
<br>
 */ 
<br>
 public static void main(String[] args) { 
<br>
 try { 
<br>
 // Connect to database 
<br>
 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
<br>
 String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/test/Database1.accdb"; 
<br>
 Connection conn = DriverManager.getConnection(url, "", ""); 
<br>
 // Fetch data from table 
<br>
 PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM test"); 
<br>
 ResultSet rs = pstmt.executeQuery(); 
<br>
 ResultSetMetaData rsmd = rs.getMetaData(); 
<br>
 int i = 0; 
<br>
 String oldID = ""; 
<br>
 String tableName = ""; 
<br>
 while (rs.next()) { 
<br>
 // Fetch a record 
<br>
 String ID = rs.getString("ID"); 
<br>
 Timestamp diagnoseDate = rs.getTimestamp("看診日期"); 
<br>
 String pulseCondition = rs.getString("脈象"); 
<br>
 int segment = rs.getInt("段"); 
<br>
 String chiefComplaint = rs.getString("主訴"); 
<br>
 String disease = rs.getString("病名"); 
<br>
 String prescription = rs.getString("配方"); 
<br>
 // Change tableName if ID change 
<br>
 if (!oldID.equals(ID)) { 
<br>
 i++; 
<br>
 oldID = ID; 
<br>
 tableName = String.format("%03d", i); 
<br>
 System.out.println(tableName); 
<br>
 Statement stmt = conn.createStatement(); 
<br>
 try { 
<br>
 // We may need to run this program several times 
<br>
 stmt.execute("DROP TABLE " + tableName); 
<br>
 } catch (SQLException se) { 
<br>
 // Just ignore the table does not exist exception 
<br>
 } 
<br>
 stmt.execute("CREATE TABLE " + tableName + " ([ID] CHAR(10), [看診日期] DATETIME, [脈象] TEXT, [段] INTEGER, [主訴] TEXT, [病名] TEXT, [配方] TEXT)"); 
<br>
 for (int j = 1; j &lt; rsmd.getColumnCount(); j++) { 
<br>
 System.out.print(rsmd.getColumnName(j) + "_"); 
<br>
 } 
<br>
 System.out.println(rsmd.getColumnName(rsmd.getColumnCount())); 
<br>
 } 
<br>
 // Store each record into new table 
<br>
 String sql = "INSERT INTO " + tableName + " ([ID], [看診日期], [脈象], [段], [主訴], [病名], [配方]) VALUES(?, ?, ?, ?, ?, ?, ?)"; 
<br>
 PreparedStatement pstmt2 = conn.prepareStatement(sql); 
<br>
 pstmt2.setString(1, ID); 
<br>
 pstmt2.setTimestamp(2, diagnoseDate); 
<br>
 pstmt2.setString(3, pulseCondition); 
<br>
 pstmt2.setInt(4, segment); 
<br>
 pstmt2.setString(5, chiefComplaint); 
<br>
 pstmt2.setString(6, disease); 
<br>
 pstmt2.setString(7, prescription); 
<br>
 pstmt2.executeUpdate(); 
<br>
 } 
<br>
 rs.close(); 
<br>
 pstmt.close(); 
<br>
 conn.close(); 
<br>
 } catch (Exception e) { 
<br>
 System.err.println("Got an exception!"); 
<br>
 System.err.println(e.getMessage()); 
<br>
 } 
<br>
 } 
<br>
<br>
} 
<br>
[/code] 
<br>
<br>
參考資料： 
<br>
http://msdn.microsoft.com/en-us/library/bb208866%28v=office.12%29.aspx]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/468/969.page</guid>
				<link>https://forum.andowson.com/posts/preList/468/969.page</link>
				<pubDate><![CDATA[Fri, 21 Jan 2011 12:17:58]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
	</channel>
</rss>