els數字貨幣
Ⅰ 求用VB實現的數字轉換英文的程序,不是貨幣轉換,只數字就OK了,包括0的,跪求代碼啊~~
Option Explicit
'Main Function
Function SpellNumber(ByVal MyNumber)
Dim Dollars, Cents, Temp, Cents1
Dim DecimalPlace, Count
ReDim Place(9) As String
Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "
' 字元串表示的金額。
MyNumber = Trim(Str(MyNumber))
' Position of decimal place 0 if none.小數點後的位置0如果沒有。
DecimalPlace = InStr(MyNumber, ".")
' Convert cents and set MyNumber to dollar amount.MyNumber轉換美分和設置,金額。
If DecimalPlace > 0 Then
Cents = Left(Mid(MyNumber, DecimalPlace + 1) & _
"00", 2)
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If
Count = 1
Cents1 = GetCents(Cents)
Do While MyNumber <> ""
Temp = GetHundreds(Right(MyNumber, 3))
If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop
Select Case Dollars
Case ""
Dollars = ""
Case "One"
Dollars = "One"
Case Else
Dollars = Dollars
End Select
Select Case Cents1
Case ""
Cents1 = ""
Case "One"
Cents1 = " point One"
Case Else
Cents1 = " point " & Cents1
End Select
SpellNumber = Dollars & Cents1
Do While InStr(SpellNumber, " ") > 0
SpellNumber = Replace(SpellNumber, " ", " ")
Loop
End Function
' Converts a number from 100-999 into text轉換數字100 - 999進入文本
Function GetHundreds(ByVal MyNumber)
Dim Result As String
If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3)
' Convert the hundreds place.轉換百的地方。
If Mid(MyNumber, 1, 1) <> "0" Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred and "
End If
' Convert the tens and ones place.轉換千的地方。
If Mid(MyNumber, 2, 1) <> "0" Then
Result = Result & GetTens(Mid(MyNumber, 2))
Else
Result = Result & GetDigit(Mid(MyNumber, 3))
End If
GetHundreds = Result
End Function
' Converts a number from 10 to 99 into text.轉換數字從10到99成文本。
Function GetTens(TensText)
Dim Result As String
Result = "" ' Null out the temporary function value.空出暫時的函數值。
If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
Select Case Val(TensText)
Case 10: Result = "Ten"
Case 11: Result = "Eleven"
Case 12: Result = "Twelve"
Case 13: Result = "Thirteen"
Case 14: Result = "Fourteen"
Case 15: Result = "Fifteen"
Case 16: Result = "Sixteen"
Case 17: Result = "Seventeen"
Case 18: Result = "Eighteen"
Case 19: Result = "Nineteen"
Case Else
End Select
Else ' If value between 20-99...
Select Case Val(Left(TensText, 1))
Case 2: Result = "Twenty "
Case 3: Result = "Thirty "
Case 4: Result = "Forty "
Case 5: Result = "Fifty "
Case 6: Result = "Sixty "
Case 7: Result = "Seventy "
Case 8: Result = "Eighty "
Case 9: Result = "Ninety "
Case Else
End Select
Result = Result & GetDigit _
(Right(TensText, 1)) ' Retrieve ones place.檢索的地方。
End If
GetTens = Result
End Function
' Converts a number from 1 to 9 into text.
Function GetDigit(Digit)
Select Case Val(Digit)
Case 1: GetDigit = "One"
Case 2: GetDigit = "Two"
Case 3: GetDigit = "Three"
Case 4: GetDigit = "Four"
Case 5: GetDigit = "Five"
Case 6: GetDigit = "Six"
Case 7: GetDigit = "Seven"
Case 8: GetDigit = "Eight"
Case 9: GetDigit = "Nine"
Case Else: GetDigit = ""
End Select
End Function
Function GetCents(ByVal Cents)
Dim Result As String
Result = ""
If Val(Left(Cents, 1)) = 1 Then
Select Case Val(Cents)
Case 11: Result = "Eleven"
Case 12: Result = "Twelve"
Case 13: Result = "Thirteen"
Case 14: Result = "Fourteen"
Case 15: Result = "Fifteen"
Case 16: Result = "Sixteen"
Case 17: Result = "Seventeen"
Case 18: Result = "Eighteen"
Case 19: Result = "Nineteen"
Case Else
End Select
ElseIf Val(Mid(Cents, 2, 1)) = 0 Then
Select Case Val(Left(Cents, 1))
Case 2: Result = "Two"
Case 3: Result = "Three"
Case 4: Result = "Four"
Case 5: Result = "Five"
Case 6: Result = "Six"
Case 7: Result = "Seven"
Case 8: Result = "Eight"
Case 9: Result = "Nine"
Case Else
End Select
Else
Select Case Val(Left(Cents, 1))
Case 2: Result = "Twenty "
Case 3: Result = "Thirty "
Case 4: Result = "Forty "
Case 5: Result = "Fifty "
Case 6: Result = "Sixty "
Case 7: Result = "Seventy "
Case 8: Result = "Eighty "
Case 9: Result = "Ninety "
Case Else
End Select
Result = Result & GetDigit _
(Right(Cents, 1))
End If
GetCents = Result
End Function
如果想投資的話,建議先考慮下是否看好這個行業了,因為比特幣這類數字貨幣,其實是沒有實際價值的,只有收藏價值,所有被炒的價格比較高,打算投資的話,先要選一個靠譜的老平台,口碑不錯的,這樣至少錢進去不會憑空消失,你可以看下AEX、火幣這2家,年限6年以上,口碑也一直不錯,長期投資可以去AEX進行貨幣理財
Ⅲ 求電子表格文本格式轉為數字或貨幣格式的公試
文本轉換為數值就用,舉例
=VALUE(A1)
Ⅳ 四川師范大學自考本科有哪些專業
四川師范大學自考本科專業如下:
物業管理、法學、工程造價、環境設計、應用化學、電子商務、學前教育、小學教育、教育管理、工商企業管理、行政管理、金融學、物流管理、公共事業管理、美術教育、音樂教育、會計學;
市場營銷、漢語言文學、數字媒體藝術、數字媒體技術、新聞學、播音與主持藝術、教育技術學、社會工作與管理、體育教育、英語教育、食品衛生與營養學。
自考考試時間:分為統考和校考,每年參加國家組織的2次統考(4月、10月),統考每次考試較多可報考4科;校考一年兩次(6月和12月)由學校自行組織,校考每次考試可報考6科。考試時間均安排在周六和周日。
Ⅳ select case when a.currencycode = 'USD' then '$' else '¥' end as '金額'怎麼把amount欄位加到貨幣符號
請問下,你是在專門用命令讀取資料庫,還是在寫程序?
要是專門用命令讀取資料庫的話,我還真不知道,請您再去網路,或者google一下,
要是寫程序的話,可以將此數據用字元串的形式存儲,
要是後頭要參與計算的話,這樣會很麻煩,建議還是存儲數字,你可以再建一個欄位,專門來存放「¥」,「$」,到時用的時候在前台拼接就行
Ⅵ 誰能給我詳細介紹一下美國和英國的電子納稅申報系統啊謝謝
隨著經濟的全球化和信息技術的飛速發展,世界各國的稅收管理呈現諸多趨同性,其全球化趨勢之一就是鼓勵納稅人採用電子通信技術填寫納稅申報表和財務信息。電子報稅的主要優勢是能夠減輕稅務局轉換稅收數據的負擔,並且對數據進行集中和快速處理,對選擇電子報稅的納稅人來講,報稅更加方便、快捷,但納稅成本也相應增加。雖然電子納稅申報從概念上來講很簡單,但是每個國家在稅收管理實踐中,關於電子報稅的應用具有不同的優勢與局限。本文選取兩個主要經濟發達國家——美國和英國,就其電子納稅申報系統背景、內容、進展、效果及存在的問題進行比較性介紹,以期對我國稅收管理的信息化建設有所借鑒。
一、美國電子納稅申報系統
美國國內收入局的電子納稅申報系統,始於1985年。實施電子報稅的17年之後,也就是在2002年,1.3億份個人納稅申報表中的35%是通過電子方式填報的。由於許多公司報稅表還沒有利用電子報稅系統,所以公司的電子報稅還不是很普遍。到目前為止,美國國內收入局對個人電子報稅系統投入了大量的精力,而對公司電子報稅系統的開發與使用從最近才開始投入工作。雖然也可以要求一些公司運用電子方式填寫納稅申報表,但是公司的納稅申報表與個人申報表有所不同,所以在系統的設計與操作上還有許多差異,還需要對目前的電子報稅系統進行完善。
美國的電子納稅申報系統要求申請電子報稅者,必須首先在稅務局進行注冊。國內收入局要求電子報稅納稅人必須通過一個合格的中介,該中介被稱為電子申報表傳送人,即電子申報中介人。想成為電子申報中介人的個人,必須經過注冊、背景審核,並滿足相應的技術資格標准,獲得國內收入局的授權之後,他們才能夠替電子報稅者運用電子方式填寫申報表。
美國電子報稅系統是嚴格和嚴密的,如果填寫的表格不合格,申報表就會被拒絕。目前,有13%的個人電子申報表被美國國內收入局的電子報稅軟體拒絕,這些不合格的申報表主要是記錄數據的缺失和不準確。對於紙質的申報表,美國國內收入局職員同樣也能檢查出許多這樣的錯誤。
美國對電子報稅者最初的激勵措施是退稅預期貸款。通過電子方式填寫納稅申報表的70%納稅人有資格獲得退稅,有勤勞所得的納稅人稅收抵免的平均最高額為1 500美元。一般情況下,有一個或多個需撫養子女的低收入納稅人,有資格獲得稅收抵免。因為填寫納稅申報表之後要等6個星期才能獲得美國國內收入局的退稅,一些金融機構開始提供與預期退稅有關的貸款。在實施電子報稅的頭10年,一半以上的電子申報表與退稅貸款相結構。
為了鼓勵電子報稅者,國內收入局將電子納稅申報時限延長。通常情況下,多數美國個人納稅人的納稅年度使用的是公歷年,美國納稅申報期從1月中旬開始,一般持續3個月,只有很少一部分個人納稅人申請將申報期延長至6個月。對於電子報稅者,對其申報和補稅時間延長了15天,截止到每年的4月30日。
為了做好電子報稅宣傳,美國國內收入局為電子報稅做廣告投入了1800萬美元,經過近5年的努力使電子報稅率有所上升。國內收入局還與私人部門合作,在2003年1月實施互聯網報稅,希望即將填寫納稅申報表的納稅人能夠將互聯網報稅作為其新的電子報稅選擇。
美國電子報稅進展比較慢的一個現實問題,是國內收入局要求有些稅收表格不可以進行電子填寫,到目前為止,還有20多種表格不能運用電子方式填報,這在一定程度上會阻礙經營者電子報稅的應用。
二、英國電子納稅申報系統
英國國內收入局開始實施的電子納稅申報系統是電子站點服務(ELS)系統,對該系統的技術要求是每年能夠處理將近三分之一納稅人報送的自核納稅申報表。英國國內收入局於1997年4月23日成功收到首例報道的ELS納稅申報表,也就是在當年納稅年度結束之後兩個星期多一點的時間。
英國的財政年度是從4月6日到下一年的4月5日,英國納稅申報的頭一個最後期限是財政年度結束後的6個月,希望由收入局計算機應納稅額的納稅人必須在9月30日之前遞交納稅申報表,想自己計算應納稅額的納稅人可以再有4個月的申報時期,直到下一年的1月30日。這樣,無論是通過電子申報還是紙質申報的英國納稅人,就有近10個月的時間進行納稅申報。
與美國納稅申報不同的是,多數英國個人納稅人不需要報送納稅申報表。大約三分之一的英國納稅人可以遵從最終稅款扣繳制,從工資和利息等所得中扣除應納稅款,也包括預期稅款,因此這部分納稅人,通常沒有必要填寫納稅申報表。對於一些特殊的稅收收益,例如工作家庭中的稅收抵免,主要由僱主來操作,他會按照規定從應支付工資中減少應納稅款的扣除。大約三分之一的英國納稅人,即910萬納稅人,他們無法或不能進行稅款自核,因此每年必須填寫納稅申報表。其中這些申報表的350萬到400萬份需要根據收入局的要求,由申報表調制機報送。
英國實施最終稅款扣繳制的大部分工作由僱主按照收入局的指導來操作,僱主需要填制一份收入局的編碼通告,該通告記載著每位納稅人按規定計算出的稅款扣繳額,這些表格是通過電子方式填寫的。英國收入局也鼓勵僱主用電子方式填寫其他的報表,例如僱主的附加福利報表(P11D表)、雇員受雇開始工作報表(P46表)和雇員辭職報表(P45表)。
與美國對電子報稅者要求相同,ELS系統也要求電子報稅者必須首先在稅務局進行注冊。但與美國不同的是,英國納稅人能夠直接應用收入局的稅款計算系統填寫納稅申報表,而不用通過一個中介人。在英國,只有通過ELS系統填寫申報表的納稅人才符合電子報稅的要求。盡管個人納稅人可以申請電子報稅,但是電子報稅有一定的成本。在實施操作中,只有存在大量納稅申報表需要填寫和有申報表調制機的納稅人才有條件申請使用ELS電子報稅系統。一旦批准允許進行電子報稅,納稅人或其代理人通過計算機的數據機填寫納稅申報表。稅收信息通過一個安全的信息通道(SMG)傳送到收入局的ELS界面,該界面與收入局的計算機相聯。
報表填寫者和國內收入局通過SMG可以發送和收集電子文件,SMG和界面被設計成緩沖器來阻止非官方入口進入到納稅人和收入局的計算機系統。只有ELS的使用者正式在SMG上注冊,才能將填報的信息發送給收入局,每個ELS用戶的唯一的電子地址與電子轉換系統相聯。除了給收入局,每個ELS用戶有唯一的電子地址與電子轉換系統相聯。除了SMG入口,在過去兩年裡,英國收入局也允許個人通過互聯網填寫納稅申報表。
在2000—2001財政年度的納稅申報期內,43 143名英國納稅人進行了電子報稅,一年後該數字上升為73 652。2002—2003財政年度的納稅申報期還沒有結束,但截止到2002年7月31日,已經有12 382份納稅申報表是通過電子方式填寫的。目前,英國納稅人通過電子方式填寫的納稅申報表低於1%,顯然公眾對電子報稅的接受程度還是比較慢,政府還不能保證納稅人將來可以使用一個適合他們的完全免費電子報稅系統。對於互聯網報稅的應用情況,2002年皇家注冊會計師協會(ACCA)對英國納稅人的調查顯示,回復者中通過互聯網填寫納稅申報表的低於5%。在這5%納稅人中,一半以上對互聯網報稅表示滿意,而其他人認為互聯網報稅太消耗時間並且界面對用戶不友好。
與美國的退稅預期貸款鼓勵相比,英國雖然沒有類似的金融產品,但英國的國內收入局已經試圖採用其他的措施來鼓勵ELS用戶,例如免費提供軟體和數據機,對第一年使用電子報稅的納稅人允許最高為15美元的稅收抵免。從目前來看,英國電子報稅的潛在用戶比美國要少得多。
與美國相同,英國國內收入局也投入大量財力為電子報稅做廣告。2001年,英國國內收入局投入750萬美元為互聯網報稅的有效性和填寫自核報表的要求做廣告。英國政府近期的市場運做努力不是很成功,2003年國內收入局在一個關於互聯網報稅的廣告上投入了百萬英鎊,但根據ACCA的調查,甚至會計師也很少使用這種納稅服務。
英國電子報稅面臨的一個問題是,稅收管理的某些規定成為電子報稅的固有障礙。英國國內收入局通常有12個月的時間來審計一份納稅申報表,相比較而言,美國規定3年。電子報表特有的較快處理過程為收入局提供更多的時間和精力來關注個人納稅申報表的審計上,這樣對電子報稅者來講很不利;再一個問題就是電子報稅無論在時間上還是設備上都存在額外的成本,需要關注的是額外的成本是否能夠轉嫁給納稅人;還有一個問題是數據的安全性和保密性。盡管已報告的電子報稅問題比較少,但即使這些問題也都是很棘手的。在英國第一個ELS納稅申報期中,就出現了一些故障,最嚴重的問題是41個已進行ELS注冊的納稅調制機,收到了其他調制機的納稅人信息。
在當前的報稅期內,也出現了一些問題,英國國內收入局被迫臨時關閉了其能夠提供電子申報表的自核在線服務系統,因為一些用戶反映看到了其他納稅人的稅收信息。雖然該問題在一個月之內得到了解決,英國國內收入局還是確信有47名電子報稅者的稅收信息可能已被其他人提取或修改,另外665我納稅人的稅收信息被其他非稅務職員訪問過。英國國內收入局認為這個問題作為一個預防性措施,會使電子了稅系統逐漸完善,目前該系統重新修復,電子報稅率已經大幅度提高,同時收入局向人們保證電子報稅系統是安全的,要充滿信心。
三、總結
盡管美國與英國的納稅申報程序和要求不同,但是兩國政府對電子納稅申報的態度很明確,要給予扶持並積極推廣。美國2002年度仍有將近三分之二的納稅報表採用郵寄申報,但美國政府相信,在今後的幾年,電子納稅申報的比例會逐步上升,因為現在已經進入電子時代,應該將電子時代的科技成果充分應用到稅收管理中,以利提高稅收管理的質量和效率。英國政府每年將大量經費投入到電子報稅的廣告宣傳中,目的也是提高公人 對電子報稅的認知度,從而提高電子報稅的比例。同時兩國政府還對電子報稅者給予稅收優惠,如可以獲得退稅和稅收抵免,激勵電子報稅者的積極性;免費獲得軟體和部分硬體,最大限度地降低電子納稅成本。
就象其他新生事物一樣,電子報稅作為一種新的納稅申報方式也有其自身的問題不容忽視。首先是納稅成本問題。納稅人肯定選擇對自己便利、納稅成本低的申報方式。即使在經濟最為發達的美國,電子報稅的成本也不低。據統計,電子報稅的平均收費為13美元,而郵寄兩盎司重的稅收表只需57美分郵資。電子報稅的費用沒有交到政府,而是由電子報稅中介人收取,因為美國現行法規規定,凡是電子報稅者必須經過一個電子報稅中介。由於這個額外的費用影響了電子報稅的推廣,美國總統布希在2002年2月提出免費電子報稅的建議,卻現遭到電子報稅中介人的反對,從這一點來看,電子報稅的納稅成本問題依然是美國電子報稅推廣的阻礙。2002年美國電子報稅增長率比預期的要低,政府官員也承認如果對電於報稅不給予大力支持,絕不可能達到在2007年讓80%稅表採用電子申報的目標;其次是電子報稅的安全性和保密性問題。英國在電子納稅申報的過程中,曾遇到過稅收數據被非相關人員訪問的問題,侵犯了納稅人要求保密的權利,同時也看到了電子報稅系統的安全性,對於電子報稅方式的推廣及納稅人的信任度極為重要;最後電子報稅系統順利運作的法律環境問題。因為電子報稅系統涉及電子申報數據的合法性、電子簽名的合法性、電子貨幣的合法性及納稅人信息被竊取的法律制裁等問題,必須用法律形式加以明確,否則同樣會影響電子報稅推行的進度,一些經濟發達國家出台了電子數據法律等相關法律規范性文件,對電子報稅的實施起到了一定的保障作用。
從目前來看,美國與英國的電子報稅進展還是比較慢,但是從稅收管理的信息化趨勢來看,電子報稅有很大的推廣空間和優勢。目前除了美國和英國,加拿大、澳大利亞、韓國等一些經濟發達國家都開展了電子納稅申報方式,因此吸取他國的經驗教訓對我國的稅收管理信息化建設大有裨益。
Ⅶ 智付生態項目合法嗎
資金盤是指以資金流通形式,拆東牆補西牆,用後加入會員的錢支付給前面會員的網路傳銷形式。資金盤最核心的特點就是用高額返利,吸引玩家拉人頭。這類項目就是擊鼓傳花游戲,永遠都是後加入者「接盤」,並存在非法集資、金融詐騙、傳銷等違法犯罪活動的行為的風險。
以下是反傳防騙快訊收集整理的5月份資金盤項目名稱,請廣大群眾一定要遠離,千萬不要參與。
AGD環球幣 FaMa法碼 覓鏈樂園
多多世界 雲逗短視頻 NEC新生態
HFF飛帆 螞蟻雲算 幣友生態
綠色星球 全民猜歌 嗨啦短視頻
LGT動物保護鏈 BGOEX礦池 星事物
松鼠樂園 享拍視頻 99Pool礦池生態
艾淘 茶道商場 PGO穿山甲
STC未來鏈 CDN全球社交節點 金鼠商城
ZS鑽石幣 YSTAR 優貝
萌鼠世界 蝦米一直賺 星學院
星雲礦工 世界學霸 帝伍波
海草短視頻 阿拉丁原始礦場 阿貝爾ABEL
預言家FICH 善余商城 EthPro交易所
夢境時代 綠尚健康 影粉世家
維特生態 魚塘 SPE礦工聯盟
藏寶鼠 全民礦工 樂刷短視頻
百藝短視頻 KIMI客眯 YTC礦池錢包
Smartx智圖 啟雲(啟雲) 起點資訊FIN
World pay Pizza寶 中心幣CCC
全球環保ESC 鈦幣Ti 納米鏈NML
綠色地球 雲健康 小豬量化機器人
RRCP智能方舟 LFEX拉菲交易所 快步
去嗨皮 U比生活 慈善幣AOT
GTA基因鏈 趣出行 PDC熊貓幣
趣淘鯨 LDC萊達生態 3C物聯
KYBER - KNC rtidcoin-RTID ACH幣
NowEx合約 智鏈雲倉 CHMV視頻
神域online FreePool自由礦池 ELS魔域精靈
健康助力BBE ENT娛樂鏈 火花短視頻
綠洲世界 咪多多 HTV傳媒
ATR安泰鏈 DA星球 3Q盛世
酒聖 AT生態幣 GLUT競游聯盟
四方算力 魔幻炫影 算力貓
HTV廣告 超級算力社區 趣淘鯨
好玩吧 相玉有錢 TORO公牛
Pizza披薩鏈 鏈知星 5GK
HXC生態鏈 客眯KIMI 稀釋幣
感恩時代 ZLB隕石鏈 AToken
芝麻開門 頂點號 螞蟻雲算
NEC新生態幣 優視短視頻 鏈音
反傳防騙快訊提醒:銀保監會、中央網信辦、公安部等多部門提示投資者,一些不法分子打著「金融創新」、「區塊鏈」的旗號,通過發行所謂「虛擬貨幣」、「虛擬資產」、「數字資產」等方式吸收資金,侵害公眾合法權益。此類活動並非真正基於區塊鏈技術,而是炒作區塊鏈概念行非法集資、傳銷、詐騙之實,實質是「借新還舊」的龐氏騙局,資金運轉難以長期維系。
不法分子通過公開宣傳,以炒幣升值獲利和發展下線獲利為誘餌,吸引公眾投入資金,並利誘投資人發展人員加入,不斷擴充資金池,具有非法集資、傳銷、詐騙等違法行為特徵。[此文來源反傳防騙快訊,版權歸原作者,如侵權,請聯系刪除]
反傳銷救助中心:提醒廣大市民:凡是讓你先交錢,;然後層層拉人頭賺錢的就是傳銷。凡是交錢無依無據無憑無證的,讓你等待發大財的都是非法集資。須謹慎防範。抵制傳銷從我做起,舉報傳銷人人有責。
Ⅷ 比特幣交易平台這么多,新人小白很想做比特幣理財,剛入門怎麼避免被坑
現在數字貨幣領域很火,大家都知道這行能賺錢,所以算是龍蛇混雜。我建議新人選擇像OKEx比特幣交易所進行學習和投資,可以少踩很多坑。我的回答您還滿意嗎?滿意的話,請採納
Ⅸ Java 連接access 資料庫成功 能夠讀取數據 為什麼插入數據總報錯 但是打開
系統已經安裝好SQL Server2000並且打上了SP3補丁;安裝好Office套件裡面的Access;使用一個支持純文本編輯並且帶有行號顯示的編輯器,
二、准備
1、程序提供了SQL資料庫格式:有一個MDF文件,或者提供了創建SQL資料庫的SQL腳本文件(後綴名為.sql)。
2、更多的是沒有提供SQL資料庫或腳本文件的,這時,就要自己來做這一切了,這也是我們這個帖子主要解決的問題。
對照原來的access,改寫下面的部分:
(1)sql資料庫表是沒有自動欄位的,因此原來access中的自動欄位被轉換成了普通欄位,需要手工改成標識類型,增量為1。
(2)所有的時間欄位,如果定義了默認值,那麼原來肯定是now(),需要改成getdate()
(3)原來欄位的默認值一般都不會自動引入,需要對照原表的欄位手工添加。
(4)由於資料庫的不同,access和sql的欄位類型很多轉換後就變化了,比如原來的《是否》欄位會被轉換成bit或者int,備注欄位被轉換成longtext,text欄位轉換成varchar等等,一般來說不會影響程序運行,如果有問題,我們在下面的程序改寫部分再說。
(5)如果你要用一個For SQL的程序,裡面用到了存儲過程,那麼你應該有這個程序本身建立SQL資料庫的方法:有其本身的SQL資料庫文件,或者sql腳本;如果沒有的話,採用導入access資料庫的方式是無法建立存儲過程的,這樣你最好放棄這個For SQL的程序版本,使用同樣版本的For Access的程序,導入access資料庫,然後用下面的改寫方法自己改成SQL版本的程序。
三、連接字元串的改寫
可參考動網的這段,分別是針對access和SQL的
Dim ConnStr
If IsSqlDataBase = 1 Then
'sql資料庫連接參數:資料庫名、用戶密碼、用戶名、連接名(本地用local,外地用IP)
Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = "dvbbs7"
SqlPassword = ""
SqlUsername = "dvbbs"
SqlLocalName = "(local)"
ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"
Els
'sql資料庫連接參數:資料庫名、用戶密碼、用戶名、連接名(本地用local,外地用IP)
Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = "dvbbs7"
SqlPassword = ""
SqlUsername = "dvbbs"
SqlLocalName = "(local)"
ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
也可以簡潔一些,寫成這樣:
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "Provider = Sqloledb; User ID = sa; Password = 1234567; Initial Catalog = dvbbs7; Data Source = (local);"
裡面的資料庫名稱、數據源、用戶、密碼根據自己的實際情況改寫一下。
四、程序的改寫
1、如果你幸運,拿到的是For SQL的程序,那麼如果上面的資料庫建立過程沒有遇到麻煩,程序基本上就可以運行了,出錯的話,只是程序本身的bug,如何修改不是這個帖子討論的內容,就不贅述了。
2、大多數情況,程序本身是For Access的,與For SQL的程序差別主要是程序中使用到的SQL查詢語句。注意,SQL查詢語句是資料庫應用不可缺少的部分,不管是For SQL還是For Aceess的程序使用的語法大體差不多,但是有一些微妙的差別,正是這些差別,造成了程序的不通用,也是我們需要修改的主要內容。這樣一般要修改的部分如下:
(1)時間函數的問題:SQL資料庫的時間函數與access不同,最常見的是取現在時間的函數,access是now(),SQL是getdate()。因此凡是在where子句中使用了now()的地方都要改成getdate();注意,now()函數在asp程序本身也要使用,凡是不在資料庫查詢或執行語句中使用的now()函數千萬不要改。
(2)時間比較函數:datediff('d','時間1',『時間2』)這是access查詢用的格式,SQl中這些引號都要去掉,同時時間格式的前後可能加上了#,這也要去掉。同樣這也是指在sql語句中的,在asp語句中的要保持原樣。
(3)空值的表示:在access中,判斷空值一般用是否=""來表示,但是這在SQL中往往出錯,如果遇到出錯的問題或者程序運行不正常,可以改成如這樣判斷:where (name is null)
(4)真假值判斷:access中可以用=true、=false來判斷,但是在SQL中就會出錯,因此在SQL查詢或執行語句中這類判斷要分別改成=1、=0。注意一點:有些程序雖然寫成=「true」,但是由於有引號,所以這個欄位是字元類型的,你不能改成=1,保持原樣即可.
程序的調試
前面推薦使用帶有行號的編輯器,是因為上述的改寫不大可能是直接搜索程序源碼來做,很難找全。
我採取的方式一般這樣:資料庫改寫完成,直接調試程序,出錯後,看看出錯的提示,找到相應文件的代碼行,但是根源往往不是那行,比如出錯的語句是:conn.execute(sql),但是這句本身是沒有錯的,錯誤原因是裡面的這個sql字元串,那就向上看這個sql字元串是如何生成的,按照上面所說的程序修改辦法修改。
所有的默認值都丟失了。主要是數字類型和日期類型。
所有now(),time(),date()要改成getdate()。
所有datediff('d', time1, time2)要改成datediff(day, time1, time2)
有可能一些true/false類型不能使用,要變為1/0。
備注類型要通過cast(column as varchar)來使用。
CursorType要改成1,也就是打開資料庫時要給出第一個數字參數為1,否則記錄可能顯示不完整。
isnull(rowname)要改成rowname = null
ACCESS的資料庫中的自動編號類型在轉化時,sql server並沒有將它設為自動編號型,我們需在SQL創建語句中加上identity,表示自動編號!
轉化時,跟日期有關的欄位,SQL SERVER默認為smalldatetime型,我們最好將它變為datetime型,因為datetime型的范圍比smalldatetime型大。有時用smalldatetime型時,轉化失敗,而用datetime型時,轉化成功。
對此兩種資料庫進行操作的sql語句不全相同,例如:在對ACCESS資料庫進行刪除紀錄時用:"delete * from user where id=10",而對SQL SERVER資料庫進行刪除是用:"delete user where id=10".
日期函數不相同,在對ACCESS資料庫處理中,可用date()、time()等函數,但對SQL SERVER資料庫處理中,只能用datediff,dateadd等函數,而不能用date()、time()等函數。
在對ACCESS資料庫處理中,sql語句中直接可以用一些VB的函數,像cstr()函數,而對SQL SERVER資料庫處理中,卻不能用。
下表比較了MicrosoftAccess資料庫(MicrosoftAccess資料庫:數據和對象(如表、查詢或窗體)組成的集合,與特定的主題或用途有關。MicrosoftJet資料庫引擎用於管理數據。)和MicrosoftAccess項目(MicrosoftAccess項目:與MicrosoftSQLServer資料庫連接且用於創建客戶/伺服器應用程序的Access文件。項目文件中不包含任何數據或基於數據定義的對象(如表或視圖)。)的數據類型(數據類型:決定欄位可擁有的數據類型的欄位特徵。數據類型包括Boolean、Integer、Long、Currency、Single、Double、Date、String和Variant(默認))。
MicrosoftAccess數據類型SQLServer數據類型
是/否(「是/否」數據類型:一種欄位數據類型,用於只有兩種可能值(如是或否、True或False)的欄位。不允許有Null值。)bit(bit數據類型:在Access項目中,一種存儲值為1或0的數據類型。接受1和0以外的整數值,但總是將其解釋為1。)
數字(「數字」數據類型:MicrosoftAccess資料庫中的一種欄位數據類型,用於將在數學運算中使用的數值數據。但是,若要顯示或計算貨幣值,則應使用「貨幣」數據類型。)(位元組)tinyint(tinyint數據類型:Access項目中的一種佔一個位元組(8位)的數據類型,用於存儲從0到255范圍內的整數。)
數字(整型)smallint(smallint數據類型:Access項目中的一種2位元組(16位)數據類型,存儲位於-2^15(-32,768)與2^15-1(32,767)之間的數字。)
數字(長整型)int(int數據類型:Access項目中的一種4位元組(32位)數據類型,存儲位於-2^31(-2,147,483,648)與2^31-1(2,147,483,647)之間的數字。)
數字(單精度浮點型)real(real數據類型:在Access項目中,一種近似的數值數據類型,精度為7位,正值取值范圍大致從1.18E-38到3.40E+38,負值取值范圍大致從-1.18E-38到-3.40E+38,也可以取0。)
(無等價的數據類型)bigint(bigint數據類型:Access項目中的一種8位元組(64位)數據類型,存儲位於-2^63(-9,223,372,036,854,775,808)與2^63-1(9,223,372,036,854,775,807)之間的數字。)
數字(雙精度浮點型)float(float數據類型:在Access項目中,一種近似的數值數據類型,精度為15位。它所存儲的正值范圍大致是從2.23E-308到1.79E+308,負值范圍大致是從-2.23E-308到-1.79E+308,也可以為0。)
貨幣(「貨幣」數據類型:MicrosoftAccess資料庫中的一種數據類型,用於與貨幣有關的計算或其精確度極其重要的定點計算。)money(money數據類型:在Access項目中,用於存儲貨幣值的數據類型,取值范圍從-922,337,203,685,477.5707到922,337,203,685,477.5807,精確度為萬分之一個貨幣單位。)
smallmoney(smallmoney數據類型:Access項目中的一種存儲貨幣值的數據類型,取值范圍從-214,748.3648到214,748.3647,精確度為萬分之一個貨幣單位。當顯示smallmoney值時,會將它們四捨五入為兩個小數位。)
小數/數值(decimal數據類型(Access資料庫):精確的數值數據類型,用於存儲-10^38-1到10^38-1的值。可以指定數值范圍(最大總位數)和精度(小數點右邊的最大位數)。)decimal(decimal數據類型(Access項目):精確的數值數據類型,用於存儲-10^38-1到10^38-1的值。可以指定數值范圍(最大總位數)和精度(小數點右邊的最大位數)。)
numeric(numeric數據類型:在Access項目中,一種精確的數值數據類型,取值從-10^38-1到10^38-1。可以指定數值范圍(最大總位數)和精度(小數點右邊的最大位數)。)
日期/時間(「日期/時間」數據類型:Access資料庫的一種數據類型,用來存放日期和時間信息。)datetime(datetime數據類型:在Access項目中,日期和時間的數據類型,范圍從1753年1月1日到9999年12月31日,精確度為三百分之一秒,即3.33毫秒。)
smalldatetime(smalldatetime數據類型:Access項目中的一種日期和時間數據類型,精度不如datetime時間數據類型。數據取值范圍從1900年1月1日到2079年6月6日,精確度為一分鍾。)
自動編號(「自動編號」數據類型:MicrosoftAccess資料庫中的一種欄位數據類型,當向表中添加一條新記錄時,這種數據類型會自動為每條記錄存儲一個唯一的編號。可以產生三種編號:順序號、隨機號和同步復制ID。)(遞增)int(int數據類型:Access項目中的一種4位元組(32位)數據類型,存儲位於-2^31(-2,147,483,648)與2^31-1(2,147,483,647)之間的數字。)(定義了Identity屬性)
文本(「文本」數據類型:MicrosoftAccess資料庫中的一種欄位數據類型。「文本」數據類型最多可以包含255個字元,或者是由FieldSize屬性指定的一個小一些的字元數。)(n)varchar(n)(varchar(n)數據類型:Access項目中的一種可變長度的數據類型,最大長度為8,000個ANSI字元。)
nvarchar(n)(nvarchar(n)數據類型:在Access項目中,一種可變長度的數據類型,最多可含4,000個Unicode字元。Unicode字元每字元占兩個位元組,而且支持所有國際字元。)
備注(「備注」數據類型:在MicrosoftAccess資料庫中的一種欄位數據類型。「備注」欄位最多可以包含65,535個字元。)text(text數據類型:Access項目中的一種長度可變的數據類型,最多可存儲2^31-1(2,147,483,647)個字元;默認長度為16。)
OLE對象(「OLE對象」數據類型:欄位的數據類型之一,用於在其他應用程序中創建的、可鏈接或嵌入(插入)到Access資料庫中的對象。)image(image數據類型:在Access項目中,一種長度可變的數據類型,最多可存儲2^31-1(2,147,483,647)位元組的二進制數據。image數據類型用來存儲BLOB(二進制大對象),如圖片、文檔、聲音和已編譯代碼。)
同步復制ID(又名全局唯一標識符(GUID:在Access資料庫中,一種用於建立同步復制唯一標識符的16位元組欄位。GUID用於標識副本、副本集、表、記錄和其他對象。在Access資料庫中,GUID是指同步復制ID。)(GUID))uniqueidentifier(uniqueidentifier數據類型:在Access項目中,16位元組的全局唯一標識符(GUID)。)(僅適於SQLServer7.0或更高版本)
超鏈接(「超鏈接」數據類型:存儲超鏈接地址的Access資料庫欄位的數據類型。地址最多可以包含四部分,用以下語法格式編寫:displaytext#address#subaddress#。)char(char數據類型:在Access項目中,一種固定長度的數據類型,最多可含8,000個ANSI字元。),
nchar(nchar數據類型:在Access項目中,一種固定長度的數據類型,最多可含4,000個Unicode字元。Unicode字元每字元占兩個位元組,而且支持所有國際字元。),varchar,nvarchar(Hyperlink屬性設為Yes)
(無等價的數據類型)varbinary(varbinary數據類型:Access項目中的一種可變長度的數據類型,最多可存儲8,000位元組的二進制數據。)
(無等價的數據類型)smallint(smallint數據類型:Access項目中的一種2位元組(16位)數據類型,存儲位於-2^15(-32,768)與2^15-1(32,767)之間的數字。)
(無等價的數據類型)timestamp(timestamp數據類型:在Access項目中,一種每插入或更新一行就會自動更新的數據類型。timestamp列中的值不是datetime數據,而是binary(8)或varbinary(8),標明了數據修改的順序。)
(無等價的數據類型)charnchar
(無等價的數據類型)sql_variant(sql_variant數據類型:Access項目中的一種數據類型,存儲除text、ntext、image、timestamp和sql_variant類型以外的多種數據類型的值。在列、參數、變數或用戶定義函數的返回值中使用。)
(無等價的數據類型)用戶定義(用戶定義的數據類型:在MicrosoftSQLServer資料庫中,允許某列包含的數據的類型定義,由用戶利用現有的系統數據類型定義。規則和默認值僅可以綁定到用戶定義的數據類型。)
注釋在Access項目或SQLServer資料庫中,前綴「n」代表「國家/地區」,意思是這個數據類型是啟用Unicode的。在Access資料庫中,全部文本列在默認情況下都是啟用Unicode的。
ACCESS轉SQL需要注意的問題
2006-2-13 16:01:20
很多朋友想用SQL2000資料庫的編程方法,但是卻又苦於自己是學ACCESS的,對SQL只是一點點的了解而已,這里我給大家提供以下參考---將ACCESS轉化成SQL2000的方法和注意事項
一,首先,我說的是在ACCESS2000,SQL2000之間轉換,其他的我也還沒有嘗試過,希望大家多多試驗,肯定是有辦法的;
二,轉換的方法
1,打開」控制面板「下」管理工具「中的」資料庫源「;
2,按」添加「添加一個新的數據源,在選擇欄里選」DriverdomicrosoftAccess
(*.mdb)」,完成後將出現一個框,
在」資料庫源「裡面輸入你想寫的名稱,我取名叫「ABC」,說明不需要填,接著,按下面的選擇,尋找你的資料庫地址和選中(注意,請先備份自己的ACCESS資料庫),然後確定。
數據源在這里建好了,剩下轉換了。
3,打開SQL2000企業管理器,進入資料庫,新建一個空的資料庫「ABC」;
4,選擇新建立的資料庫,按滑鼠右鍵,選擇「所有任務」下「導入數據」,按「下一步」繼續;
5,在資料庫源下拉但中選擇」DriverdomicrosoftAccess(*.mdb)「,在」用戶/系統DSN「中,選種你剛才添加的」ABC「,按」下一步「;
6,「目的」不需要修改,選擇伺服器(一般下為自己的本機"local",也可以選擇伺服器地址或者區域網地址,確定你的許可權是否可以操作,),"使用WINDOWS身份驗證"指用自己的系統管理員身份操作,"使用SQL身份操作驗證"可以用於網站的操作,推薦用後者;
7,選上"使用SQL身份操作驗證"後,填寫你的用戶名和密碼,我自己選擇的是系統默認號碼"sa","****",資料庫選擇剛新建的"ABC",按"下一步";
8,這一步的兩個單項選擇,"從數據源復製表和視圖"與"用一條查詢指令指定要傳輸的數據",選擇前者,按"下一步"繼續;
9,這里將出現你自己ACCESS資料庫的表,按"全選"後,下一步;
10,"DTS導入/導出向導",看"立即運行"被選中按"下一步",
11,按"完成"繼續;
12,這個步驟你將看到你的數據被導入SQL2000裡面,當出現"已經成功把XXX個表導入到資料庫"的字樣,而且所有的表前面都有綠色的勾,就表示成功導入所有數據,如果中途出現問題或者表前面有紅色的*的話,說明該表沒有成功導入,這時就要回去查看自己的操作是否正確了.
三,數據修改
1,由於SQL2000裡面沒有"自動編號",所以你的以"自動編號"設置的欄位都會變成非空的欄位,這就必須手工修改這些欄位,並把他的"標示"選擇"是",種子為"1",增量為"1",
2,另外,ACCESS2000轉換成SQL2000後,原來屬性為"是/否"的欄位將被轉換成非空的"bit",這時候你必須修改成自己想要的屬性了;
3,另外,大家要注意對時間函數的把握.ACCESS與SQL是有很多不同的.
四、相關的欄位問題
1.ACCESS的資料庫中的自動編號類型在轉化時,sqlserver並沒有將它設為自動編號型,我們需在SQL創建語句中加上identity,表示自動編號!
2.轉化時,跟日期有關的欄位,SQLSERVER默認為smalldatetime型,我們最好將它變為datetime型,因為datetime型的范圍比smalldatetime型大。我遇見這種情況,用smalldatetime型時,轉化失敗,而用datetime型時,轉化成功。
3.對此兩種資料庫進行操作的sql語句不全相同,例如:在對ACCESS資料庫進行刪除紀錄時用:"delete*fromuserwhereid=10",而對SQLSERVER資料庫進行刪除是用:"deleteuserwhereid=10".
4.日期函數不相同,在對ACCESS資料庫處理中,可用date()、time()等函數,但對SQLSERVER資料庫處理中,只能用datediff,dateadd等函數,而不能用date()、time()等函數。
5.在對ACCESS資料庫處理中,sql語句中直接可以用一些VB的函數,像cstr()函數,而對SQLSERVER資料庫處理中,卻不能用。