查看: 2338|回复: 27
|
Ms SQL SERVER 的問題.
[复制链接]
|
|
我有個問題想要大家幫幫忙, 那就是有關MS SQL Server的問題.
p/s:我想請問那裡可以找到有關importing & Exporting Data的資料. |
|
|
|
|
|
|
|
发表于 20-12-2004 07:21 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 20-12-2004 07:35 PM
|
显示全部楼层
DTS是什麼來的..
我要的是手動的...
其實我是知道怎樣importing 7 exporting data in EM,可是我現在要presentation所以我想參考人家怎樣做. |
|
|
|
|
|
|
|
发表于 20-12-2004 08:17 PM
|
显示全部楼层
直接right click,就会看到import data的功能了...按它的wizard一步一步做就行了 |
|
|
|
|
|
|
|
发表于 20-12-2004 09:03 PM
|
显示全部楼层
以下有个问题L:
请问有没有人知道如何用 VB 6.0 的coding 来 import text file 去 MS SQL 2000,我的 text file 类似如下 :
Text file name = text1.txt
Name Age Position
AAAAAAA 55 Sales Manager
bbb 22 Sales man
.... .... ..........
... ..........
.....
.....
这个 text file的fields 不被";", "tab", ","或......来分别,所以当我要import时,我必需算这个field里maximum可以到多少character,以下是我从网上找到的coding,可是不能用(可能是我自己也不很明白吧 !) ,有bug(根本link不到MS SQL 2000 server),再说我也是初学MS SQL 2000,so我觉得我link MS SQL 2000 Server 的那排coding 有很大问题! 有谁有这方面的经验吗?? 请帮帮忙!!
Coding :
Function ImportTextFile2()
Dim LineData As String
Dim NameAs String
Dim Age As String
Dim Pos As String
Open "D:\Systems\Packing\txt file\text1.txt" For Input As #1
DoCmd.OpenTable "EmpProfile", acNormal, acEdit
Do While Not EOF(1)
Line Input #1, LineData
Name= Trim(Mid(LineData, 2, 30))
Age= Trim(Mid(LineData, 33, 3))
Pos = Trim(Mid(LineData, 37, 20))
Loop
' Close the data file.
Close #1
End Function
我的疑问:
“DoCmd.OpenTable "EmpProfile", acNormal, acEdit” , 这行code拿来call MS Access 就行啦, call MS SQL 2000 Server 的code又该怎么写,在 VB 6.0 里又该select 哪些reference 和 component 呢? |
|
|
|
|
|
|
|
楼主 |
发表于 21-12-2004 07:50 AM
|
显示全部楼层
astral 于 20-12-2004 08:17 PM 说 :
直接right click,就会看到import data的功能了...按它的wizard一步一步做就行了
我知道要怎樣Import & Export, 我現在要的是他的detail link,最好是有image step by step importing & Exporting data. |
|
|
|
|
|
|
|
发表于 21-12-2004 11:16 AM
|
显示全部楼层
海星1988 于 20-12-2004 09:03 PM 说 :
以下有个问题L:
请问有没有人知道如何用 VB 6.0 的coding 来 import text file 去 MS SQL 2000,我的 text file 类似如下 :
Text file name = text1.txt
Name Age Position
AAA ...
不好意思,请问你的DoCmd是什么object? |
|
|
|
|
|
|
|
发表于 21-12-2004 01:08 PM
|
显示全部楼层
说真的,我也不大清楚, 不过你一定要在reference里选"Microsift Access 11.0 object library", 它才能被启用!
ei.., 我想是open MS Access Database的一道门吧! |
|
|
|
|
|
|
|
发表于 22-12-2004 09:16 AM
|
显示全部楼层
DRAGONISM 于 21-12-2004 11:16 AM 说 :
不好意思,请问你的DoCmd是什么object?
DoCmd 是 access 里的一个 method, 专门执行 access 内建的 command. |
|
|
|
|
|
|
|
发表于 22-12-2004 09:24 AM
|
显示全部楼层
海星1988 于 20-12-2004 09:03 PM 说 :
以下有个问题L:
请问有没有人知道如何用 VB 6.0 的coding 来 import text file 去 MS SQL 2000,我的 text file 类似如下 :
Text file name = text1.txt
Name Age Position
AAA ...
解决方法很简单.
DoCmd 只能用在 access, sql server 你只要写个普通的 sql server 连接就可以.
最容易的办法就是用 DSN, internet 上可以找到很多.
然后只要把文件里的每一行跟着 maximum characters 读取, 再用 INSERT 就可以了.
Dim db AS New ADODB.Connection
db.Open "DSN=mydsn;UID=myid;PWD=mypassword"
db.BeginTrans
While Not EOF(1)
...
...
...
db.Execute sql
Wend
db.CommitTrans
db.Close
Set db = Nothing |
|
|
|
|
|
|
|
发表于 22-12-2004 11:18 AM
|
显示全部楼层
goatstudio 于 22-12-2004 09:24 AM 说 :
解决方法很简单.
DoCmd 只能用在 access, sql server 你只要写个普通的 sql server 连接就可以.
最容易的办法就是用 DSN, internet 上可以找到很多.
然后只要把文件里的每一行跟着 maximum characters 读 ...
thx u.., i try it now!! |
|
|
|
|
|
|
|
发表于 22-12-2004 03:49 PM
|
显示全部楼层
goatstudio 于 22-12-2004 09:24 AM 说 :
解决方法很简单.
DoCmd 只能用在 access, sql server 你只要写个普通的 sql server 连接就可以.
最容易的办法就是用 DSN, internet 上可以找到很多.
然后只要把文件里的每一行跟着 maximum characters 读 ...
嘿, 以下是我try了你的coding加我的coding写出来的方法 (还是有点儿乱!) : 这linking好象对MS SQL 2000 有反应了, 可是还是有bug, 不好意思,还是不够经验。
New coding :
Sub ImportTextFile3()
Dim LineData As String
Dim Name As String
Dim Age As String
Dim Pos As String
Dim db As New ADODB.Connection
db.Open "DSN=Emp;UID=123;PWD=123"
db.BeginTrans
Set cncurrent = CurrentProject.Connection
Set rsDiag = New ADODB.Recordset
Open "C:\text1.txt" For Input As #1
strsql = "Select * from EmpProfile"
rsDiag.Open strsql, cncurrent, adOpenDynamic,
adLockOptimistic
Do While Not EOF(1)
' Read a line of data.
Line Input #1, LineData
Name = Trim(Mid(LineData, 2, 30))
Age = Trim(Mid(LineData, 33, 3))
Pos = Trim(Mid(LineData, 37, 20))
rsDiag.AddNew
rsDiag!Name = Name
rsDiag!Age = Age
rsDiag!Position = Pos
rsDiag.Update
db.Execute sql
Loop
' Close the data file.
Close #1
rsDiag.Close
db.CommitTrans
db.Close
Set db = Nothing
End Sub
其实DSN我早就setting好了, 而且我肯定它操作正常, 因为除了这import的form之外, 我还做了其他象login form, edit form, add new form...., 等等。这些form也都call from 同一个MS SQL 2000 DATABASE, 也都成功add new, update 到了!! 唯有这个import form 还是有问题!
"rsDiag.Open strsql, cncurrent, adOpenDynamic,
adLockOptimistic " 象这行coding还是在call MS Access 的 , 因为它要通过"rsDiag"来开启 strsql(SQL Daatabase ,EPmprofile table) 和 cncurrent (Text file), 象您建议我的coding, 我就看不到它在哪里叫我的table(sorry,学艺不精),可以帮我看一看吗?
以下是出现的bug :
Run-time error '3709' :
The connection cannot be used to perform this operation. It is either closed or invalid in this context.
研究了好久,还是没办法! |
|
|
|
|
|
|
|
发表于 22-12-2004 04:14 PM
|
显示全部楼层
1. rsDiag 已经不需要
2. 你的 db 没有执行任何 sql... 因为 sql 这 variable 是空的. 你需要用你所得到的 variable 来组合一个 INSERT statement, 例如: INSERT INTO table_name...
db.Execute sql
sql 就是你的 sql string. |
|
|
|
|
|
|
|
发表于 22-12-2004 04:43 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 28-12-2004 10:30 AM
|
显示全部楼层
還有就是當你們要select a data from a table but u don't want the format date is mm/dd/yyyy.
那你們的scrtip是怎樣呢.??
set formate date = dd/mm/yyy
select * from tablename
where postdate = ''
是不是這樣呢? |
|
|
|
|
|
|
|
发表于 28-12-2004 10:38 AM
|
显示全部楼层
很简单.
SELECT CONVERT(varchar, my_date, 103) AS new_date FROM tablename |
|
|
|
|
|
|
|
发表于 28-12-2004 01:02 PM
|
显示全部楼层
goatstudio 于 28-12-2004 10:38 AM 说 :
很简单.
SELECT CONVERT(varchar, my_date, 103) AS new_date FROM table ...
string conn_str = "Data Source=(local);Initial Catalog=abc;Integrated Security=SSPI" ;
string mySelectQuery = "SELECT CONVERT(varchar, my_date, 103) AS new_date FROM tablename WHERE culomnname='abc'" ;
SqlConnection myConnection = new SqlConnection(conn_str);
SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection);
myConnection.Open();
SqlDataReader myReader;
myReader = myCommand.ExecuteReader();
string strResult="";
while (myReader.Read())
{
strResult=(myReader.GetSqlString(0).ToString());
}
但是strResult 还是 mm/dd/yyyy...... |
|
|
|
|
|
|
|
楼主 |
发表于 28-12-2004 01:41 PM
|
显示全部楼层
我的script是run在sql server裡面的.... |
|
|
|
|
|
|
|
发表于 28-12-2004 02:07 PM
|
显示全部楼层
mouyanseng 于 28-12-2004 01:02 PM 说 :
string conn_str = "Data Source=(local);Initial Catalog=abc;Integrated Security=SSPI" ;
string mySelectQuery = "SELECT CONVERT(varchar, my_date, 103) AS new_date FROM tablen ...
有点奇怪.
1. 原始 data 是什么?
2. 有没有在 query analyzer 那里试一下? |
|
|
|
|
|
|
|
发表于 28-12-2004 02:08 PM
|
显示全部楼层
手語 于 28-12-2004 01:41 PM 说 :
我的script是run在sql server裡面的....
你有没有试试看呢?
在 query analyzer 那里试看吧.
这 syntax 不管在那里都可以用的. |
|
|
|
|
|
|
| |
本周最热论坛帖子
|