2012年4月30日月曜日

UԈႢ炯̃f[^ANZXvEp邽߂


uԈႢ炯̃f[^ANZXvEp邽߂
_CNg~hEFAV[Ŷ
Direct ORA / Direct SQL

LЃCgEc[ \
ؑ
br/>̃R|[lg̖{̂́ADirectSQL.DLLłAVisual BasicȂǂ͎QƐݒĎgBg͂ăJ^łBVisual BasicgƂ̗B
  TṽfBNg: \DirectSQL\Samples\Pubs

    @
  1. DBLibraryIuWFNg̍쐬 Dim oDBL As New DBLibrary ̂悤ɂāADBLibraryIuWFNg쐬B炷ׂĂn܂BȌ́AoDBLx[XɂׂĂ̍ƂŝŁAVisual Basicł̃IuWFNg̃ANZX邽߂ɁAWith`End WithubN̒ŋLq邱ƂɂB
      With oDBL  	R[hc  End With  
  2. T[o[Ƃ̐ڑ Initialize\bhŏƁAT[o[Af[^x[XA|U[ApX[hw肵AOpen\bhŐڑB
      	' ڑ  	.Initialize  	.Server = "sqlsvr"  	.Database = "pubs"  	.User = "sa"  	.Password = "passwprd"  	.Open  
  3. SQL̔s ^ϐsSQLSQLݒ肵ACompile\bhSQLRpCAExecute\bhŎsBSQĹATransact SQLŋLqꂽGȂ̂łĂŎs"\łBASELECTłȂANVNG[XgAhvV[W̎sȂǂ"\łB
    ' SQL̔s  	.Compile sSql  	.Execute  
  4. Resultset̎擾 Transact SQLsƁASQL Server1ˆȏResultsetԂBƂ΁AXg(DirectSQL\Samples\Pubs\rept.sql)̂悤ȕGSQLSQL ServertISQL/w[eBeBgĎsƁA}̂悤ɕ̏邱ƂnYB́ux܂v1ZbgЂƂ‚ResultsetȂ̂łB

    DirectSQLł́AGetNextResultvpeBQƂ邲ƂɁAResultset𓾂邱Ƃł悤ɂȂĂBselecťʂȂǂFetcĥ́Â悤Ƀ[vōsƂɂȂB

      Do While .GetNextResult  	'Resultset͓ǂݔ΂  	If .Columns.Count <> 0 Then  		FetchȂǂ̏c  	End If  	Debug.Print "RowCount:"; .RowCount  Loop  

    ISQL/wł悤ɁAuSELECT @pub_id = "%%%%%%%%"v̂悤ȕɑ΂ĂResultsetԂĂ킯A͌ʃZbgƂĎ擾Kv͂ȂBŁAColumnus.CountvpeB0̂Ƃɂ́AFetchȂǂ͂ȂŁAGetNextResults΂悢B
    FetchɂĂResultseťʂ荞񂾌ŁARowCountvpeBɂ͏ꂽsԂB
    ȂAResultsetKvȂƂAKvResultsetoɂ́ACancel\bhgĂ̂ƂResultsetj邱ƂłB
     


    衝撃フィットボード
  5. FetchƃJe̎擾 Resultsetsoɂ́AFetchvpeBgB́AGetNextResultvpeBƓlɁA[v̏ƂĎgƂłB
    JColumnts.CountvpeB0ȊÔƂɂ́AJJ擾邱ƂłB
    Column̓RNVɂȂĂ̂ŁAColumn("ID") ̂悤ɃJw肵AColumn(1)̂悤ɔz񃉃CNɃANZX邱ƂłB܂AJ́AColumnName(index)œ邱ƂłB
    ̃R[h́A1ڂFetcĥƂɃJ\ĂAJ̓e\łB
      	bFirst = True  	Do While .GetNextResult  		Do While .Fetch  			If .Columns.Count <>0 Then  				If bFirst Then  					For i = 1 To .Columns.Count  						Debug.Print .Columns(i).Name;",";  					Next i  					Debug.Print  					bFirst = False  				End If  				For i = 1 To .Columns.Count  					Debug.Print .Columns(i);",";  					List1.AddItem .Columns(i)  				Next i  				Debug.Print  			End If  		Loop  		Debug.Print "RowCount:"; .RowCount  	Loop  
  6. I .Close\bhŐڑ‚邱ƂłB
     
@ ȏオAʓIȎgłB

ۂɁAقǎXg̕GSQLsʂ}ɎB

̕GSQLɂ‚āAƐĂBSQĹAMS SQL ServerɃCXg[Tvf[^x[Xpubsɂ11̃e[ûA6‚ɃANZX(DirectSQL\Samples\Pubs\pubs.xlsERDV[g)AeƃCeB(쌠)̌vẐłBŎgĂe[u\ɂ‚ĕ\(pubs.xls̃e[uV[g)ɎBł́Â悤ȂƂOɁA҂ɎxCeB̌vZĂB

    @
  • ҂ɑ΂āAЂɉđOex(titles/advance etc.)
  • ҂ɉāA̔ɂ̊ŃCeBx(titles/royalty etc.)
  • ҂ւ̎x́AXoŎЂɑxꂽƂB(on invoiceƂȂĂ̂͏X痂ɏoŎЂɎx̂ƂB‚܂A҂ւ̎x͗XƂȂ)
@ ۂSQL΁Ae|e[u쐬ďWvƂAɕGȍƂĂ邱Ƃ邾낤BA]Visual Basic+RDO/ADOȂǂł낤ƂA厖łBłȂƂł͂ȂA‚̃NG[lXgčsAvẐVisual Basicł邱ƂɂȂ邾낤B͍lȂƂł͂Ȃ낤?
Ƃ낪ASQL}X^[Ă΁Â悤SQLLq邱ƂłAISQL/wŎsēmF邱ƂłBƂ낪AȕGSQLVisual Basic + ̂ւ̈ʓIȃ~hEFAł͓ƂłȂ̂łBISQL/wœmF̂ɁAĂѕ̃NG[ɃoVisual BasicɌvẐ͓􂾂Ǝv낤?
Ȑl͂Ȃ낤B
DirectSQL͌�br/>̃R|[lg̖{̂́ADirectORA.DLLłADirectSQLlVisual BasicȂǂ͎QƐݒĎgBgDirectSQLlăJ^ł邪ADBLibraryNet8Ƃ�= sServer oOra.User = sUser oOra.Password = sPassword

@


サスペンションは、バイクにどのように動作するか
  • OciCursorIuWFNg̍쐬 Net8OCI̓}`ZbVɑΉĂ̂ŁA‚OCIIuWFNg畡OciCursorIuWFNg(J[\)‚ƂłBāADirect ORÃIuWFNg\ZbVɑΉĂB̓Iɂ́Â悤OpenvpeBĂяoāAOciCursorIuWFNg쐬B
      Dim oCur As OciCursor  Set oCur = oOra.Open  
    @
  • SQL̎s Compile\bhSQLRpCAExecute\bhŎsBŎsłSQĹAPL/SQLubNłBASELECTłȂANVNG["\łBBindϐɂΉĂ̂ŁA߂lԂXgAhvV[WĂяo"\łB
      oCur.Compile = "select * from c"  oCur.Execute  
  • FetchƃJ̎擾 eśAFetchvpeB[vƂĎ擾邱ƂłB擾śARNVƂOciColumnIuWFNgɓBFor Eachł̃IuWFNgNamevpeBŃJAValuevpeBŒl邱ƂłBɁAŏ̍ŝƂJ\AȌ̓J̒l\B
      Dim oCol As OciColumn  bFirstTime = True  Do While oCur.Fetch  	If bFirstTime Then  		sValue = ""  		For Each oCol In oCur.Columns  			sValue = sValue & oCol.Name & vbTab  		Next  		lstX.AddItem sValue  		bFirstTime = False  	End If  	sValue = ""  	For Each oCol In oCur.Columns  		sValue = sValue & oCol.Value & vbTab  	Next  	lstX.AddItem sValue  Loop  
  • ꂽs̎擾 ۂɏꂽśAOciCursorIuWFNgRowAffectedvpeBœ邱ƂłB
    @
      MsgBox CStr(oCur.RowsAffected) & "R[h܂B", vbInformation, "DirectOra"  
  • ZbV̏I ZbVIɂ́AOciCursorIuWFNgClose\bhŕ‚BOCIIuWFNĝ́AvZXIɎIɉ邪ANothingSetĖĉ邱ƂłB
      oCur.Close  Set oOra = Nothing  
  • ȏオJ^Ȏgł邪AInsertAUpdateADeleteȂǂ̂Ƃɂ́AOracle̓I[gR~bgftHgł͂Ȃ̂ŁAcommit邢rollbackȂǂĂKvBASQLƂĎs邱Ƃ"\ADirectORAł̓\bhƂĂB

    DirectORAłBindϐ̎g

    DirectORAł́ABindϐgƂł悤ɂȂĂB
    TṽfBNg: \DirectORA\Samples\bind
    @ DirectORÃIuWFNgfɂAOciFloatAOciIntegerAOciString̊eIuWFNgValuevpeB́AꂼꂪFloatAIntegerAString̃oChϐƂāAVisual BasicȂǂ̃c[ANZX邱ƂłB
    Ƃ΁Â悤ɊeIuWFNg쐬Ƃ悤B
      Dim fval As New OciFloat  Dim fval2 As New OciFloat  Dim ival As New OciInteger  Dim sval As New OciString  

    PL/SQLubNŁA:fA:f3A:sA:IA:c͂ꂼPL/SQLubNAȂ킿OracleT[o[߂oChϐłB


    ドイツのトップ10 fordhändler
      begin  	:f := 3.14;  	:f3 := :f * :f2;  	:s := 'hello, world';  	:i := 123;  	:c := 'Edit!';  end;  

    PL/SQLubNRpCB

      oCur.Compile txtSQLBind.Text  

    Visual Basicł́Â悤Bind\bhgVisual BasicŃANZXłϐƂăoChBƂ΁APL/SQLubŃu:fvfvalɃoChB܂Ał͕^TextBoxRg[̃ftHglłTextvpeBɃoCh邱ƂłB

      oCur.Bind "f", fval  fval2 = txtF2.Text  oCur.Bind "f2", fval2  oCur.Bind "f3", txtF3  oCur.Bind "i", ival  oCur.Bind "s", sval  oCur.Bind "c", txtReturn  

    Execute\bhŎs΁ABindĂ邱ƂmFłB

      oCur.Execute  Debug.Print fval  Debug.Print ival  Debug.Print sval  

    ̃vOł낢̂́AVisual Basiĉ悤 Signed^̐lȂł̓I[o[t[Ă܂悤ȌvZAOracleɂ点Ă܂Ƃł邱ƂBƂAvẐ̓iZXł邩AȂ炩̃NG[ƋɎsׂ낤B
    ܂ADirectORAł́Â悤PL/SQLubNsł邩AXgA[hvV[WXgA[htxtSQLBind2.Text oCur2.Bind "empno", txtMinEmpNo oCur2.Execute

    Execute\bhsɁALink\bhempnoenameAꂼeLXg{bNXtxtEmpNotxtEnameɃf[^oCfBO邱ƂłB

      oCur2.Columns.Item("empno").Link = txtEmpNo  oCur2.Columns.Item("ename").Link = txtEname  

    xAf[^oCfBOĂ܂΁Aʂ̃{^ȂǂFetch ĂƁA̍s̓eIɕ\B
    mɕ֗łB܂łłUPDATE܂Ŏɂ悤ȋC邪ADirectORA𖼏Vvȃ~hEFAƂvz͏XĂ܂B܂AXV炢UPDATEBindϐgċLqĂ悢낤BmɏXSQLȂǂԂ͂邪A̕yȂ̂łB
    �br/>Oracle: CREATE_SQL.XLS

    ExcelDirectR|[lggAV[gɋLqꂽe[u`ɂāAe[uCfbNX(̃Jgݍ킹̂)쐬邱Ƃłc[łBł́AV[g=e[uƂăe[u̒`ĂB

    ɁA.date‚V[gɂ́Af[^͂ĂAe[u쐬ɓ邱ƂłBf[^ɂ́ASQL̊֐LqēIɓ悤ɂ邱ƂłB


    {͂܂悭ȂƂł͂邪A|U[̗vJɔô߃XL[}̐݌vύX𓾂ȂƂB̂悤ȂƂɁAXL[}쐬Excel̃V[gɋLqȂŁAXOɃXL[}č쐬ł̂́AɌ悢B
    ܂AfobOɃf[^ƂAۂɉ^pɓĂ}X^[̃f[^ꊷ肵ȂĂ͂ȂȂƂBƂɂÃc[͈З͂𔭊B
    悤ɍlĂƁANxȂǂɃf[^ExcelɎ擾ēvAʂ̃obNAbve[uɈڍs邱ƂAJ^łB

  • f[^̓c[
    TvvO:Edit.Vbp
    ł́AVisual BasicDirectR|[lggāA1.œ͂}X^[f[^ɂāA~σf[^쐬AvP[VB

    ̃c[ł́Ai}X^[ITEMƒS҃}X^[PERSONQƂȂA̔~σe[uSALEɃf[^ljACA폜ł悤ɂȂĂBłȂǂ̋zvZ͎ōsB
    ł́A͂ꂽ̔tL[ɂāÃR[hړĕ\ł悤ɂȂĂBMovePreviouśAɏqׂ悤�br/>Oracle: REPORT_ORA.XLS

    [c[ł́A܂܂ExcelgĂB̔~σe[uƊe}X^[ɃANZXAグ̈ꗗV[gɎ擾ĂB
    ̃c[ł͂܂ĂȂAExcel̕\`ɂ͌E͂̂́AȂɂꂢɃtH[}bgĈ邱ƂłAWvȂǂ邱ƂłBɁAOtȂǂłB
    ɂ悢Ƃ́ÃV[gƕʖŕۑĂ΁A⌎ȂǂAłȂ̂ƂExcel`̃f[^ƂĒ~ς邱ƂłB
    ̂悤ɁA܂ÂCAEgvȂ̂ł΁AExcel͂Ȃg肪悭Ap[c[ƂĎgƂł̂łB



    These are our most popular posts:

    MS-Access解説

    普段SQL Serverを専用回線経由で60km離れた本社のPC内にあるデータを使用し ています。 ... 離れた場所にある、サーバー間でデータ同期を取りながら運用していく場合 と、クローズな場所でしか使用しない場合の作成方法(設計)には若干違いが有ります。 read more

    ADO.NET が導くデータ アクセスの進化

    2000年9月22日 ... NET のもたらす高度な相互運用性とスケーラビリティについて解説しています。 .... 関連 するコンポーネントが物理的に離れたところにある別のシステムで実行されている場合、 COM のマーシャリングはさらに大きな負担になります。 ... この方法でページ上の リモート ファンクションを起動すると、RS インフラストラクチャはファンクションが クライアントに返すマーシャリングを提供します。 .... 集合体は、階層構造をとることも あります)。recordset とは、簡単に言えばメモリ上に置かれるテーブルのコピーです。 read more

    ADO.NET Entity Framework « 恵みの波紋

    とはいえ、初代には色々問題があって、デザイナーにバグはあって、生成コードが壊れる し、文字列の Contains メソッドすら ... しばらく、EF からは離れていて、. ..... データベースとマッピングする際に、属性を使って静的にマッピングする方法と Fluent API と言われる数珠つなぎメソッドで書いて、実行時に ... EF 1.0 の時は、結構ツールの バグに悩まされたものだったが、EF 4.1 でもさっそく躓いたので、後に同じ罠にはまって まっとる人の ... read more

    VBA応用(データベースへの接続方法)

    VBAから「Microsoft Query」等を除いて直接レコード(フィールド)を操作する場合の方法 について説明します。 「Microsoft ... 現在は ADO に取って替わりつつありますが、中に は ODBC 経由で ADO 記述をしている場合が多く、この RDO での記述の方が効率が 上がる場合があります。オブジェクトの ... さて、をExcelと話題が離れてしまったようです が、実はこのWebベースのアプリケーションでExcelはまた別の活躍を見せていました。 read more

    Related Posts



  • 0 コメント:

    コメントを投稿