ここから本文です

この知恵ノートを「知恵コレクション」に追加しました。

追加した知恵ノートはMy知恵袋の「知恵コレクション」ページで確認できます。

知恵コレクション」に登録済みです。

再登録しました。

追加に失敗しました。

ノートに戻り、もう一度やり直してください。

すでに1,000件のノートが登録されています。

新しく追加したい場合は、My知恵袋の「知恵コレクション」ページで登録されているノートを削除してください。

追加できませんでした。

ノートは削除されました。

AndroidでBASICで遊ぶ方法 その8-3

ライターさん(最終更新日時:2013/11/5)投稿日:

  • ナイス!:

    0

  • 閲覧数:442

印刷用のページを表示する

この知恵ノートは、以下の知恵ノートの継続のページとなります。
この知恵ノートを見る前に以下をご覧ください。

 

AndroidでBASICで遊ぶ方法 その8-1
http://note.chiebukuro.yahoo.co.jp/detail/n224842

AndroidでBASICで遊ぶ方法 その8-2
http://note.chiebukuro.yahoo.co.jp/detail/n225769

 

5.「メモデータベース」のプログラム内容(後半)

 

  8-2に引き続きもう少し具体的にこのツールの内容を
  見ていきます。


  BASIC!のプログラムで実際にやっていることを順に記載すると
  以下の通りとなります。
 

  実際のブログラムのソースは以下をご覧ください。

  ブログラムのソース: https://db.tt/yu3bogab

  

  (8)全件表示処理

     
     !------- TBL Print routine -----
     pall:
         →全件表示サブルーチン

     
     title$ = "全件データ一覧"
     
     Columns$ = "_id," + c1$  +"," + c2$ + "," +c3$ + "," + c4$ + "," + c5$
         →テーブルから取得する列を設定
         →この場合は、全項目を設定

     
     SQL.QUERY Cursor, DB_Ptr, tbname$,  Columns$
         →条件指定なしでテーブルから全項目を取得
         →取得行は、Cursorに先頭の位置が格納される。
     
     PRINT title$
     
     xdone = 0
     DO
     SQL.NEXT xdone,cursor,index$,v1$,v2$,v3$,v4$,v5$
     if !xdone THEN
        PRINT  index$,v1$,v2$,v3$
        PRINT  v4$
        print  v5$
     endif  
     UNTIL xdone
         →cursorに格納されている複数の行がある間
         →コンソール画面に各項目を表示


     PRINT " "
     gosub menux
     RETURN
         →全件表示サブルーチンの終了
     
  (9)件名一覧処理


     !------- TBL Print(kenmei) routine -----
     pken:
         →件名一覧サブルーチン

     
     title$ = "件名一覧"
     
     Columns$ = "_id," + c1$  +"," + c2$ + "," +c3$
         →テーブルから取得する列を設定
         →この場合は、通番、件名、更新日、掲載F
     
     SQL.QUERY Cursor, DB_Ptr, tbname$,  Columns$
         →条件指定なしでテーブルから指定項目を取得
         →取得行は、Cursorに先頭の位置が格納される。

     
     PRINT title$
     
     xdone = 0
     DO
     SQL.NEXT xdone,cursor,index$,v1$,v2$,v3$
     if !xdone THEN
        PRINT  index$,v1$,v2$,v3$
     endif  
     UNTIL xdone
     PRINT " "
     gosub menux
     RETURN
         →件名一覧サブルーチンの終了

 

  (10)検索処理
     
     
     !------- DB kensaku routine -----
     kensak:
         →検索サブルーチン
     
     input "検索文字列を入力してください。",jjj$
     
     Columns$ = "_id," + c1$  +"," + c2$ + "," +c3$ + "," + c4$ + "," + c5$
         →検索文字列を入力ダイアログで取得
         →テーブルから全項目を取得設定
     
     Where$ = "kenmei like '%" + jjj$ + "%' OR kanren like '%" + jjj$ + "%' OR naiyou like '%" + jjj$ + "%'"
         →検索文字列をどの列で検索するかを設定
         →この場合は、件名、関連項目、内容
         →検索条件はlike %(検索文字列)%
         →この条件は、部分文字列検索


     
     SQL.QUERY Cursor, DB_Ptr, tbname$,  Columns$, Where$
         →条件指定ありでテーブルから全項目を取得
         →取得行は、Cursorに先頭の位置が格納される。

     
     PRINT WHERE$;"の検索結果"
     
     xdone = 0
     DO
     SQL.NEXT xdone,cursor,index$,v1$,v2$,v3$,v4$,v5$
     if !xdone THEN
        PRINT  index$,v1$,v2$,v3$,v4$,left$(v5$,10)
     endif  
     UNTIL xdone
     PRINT " "
     gosub menux
     RETURN
         →検索サブルーチンの終了

 

  (11)変更処理

     
     !------- DB henkou routine -----
     henkou:
         →変更サブルーチン
     
     input "検索文字列を入力してください。",jjj$
     
     Columns$ = "_id," + c1$  +"," + c2$ + "," +c3$ + "," + c4$ + "," + c5$
     
     Where$ = "kenmei like '%" + jjj$ + "%' OR kanren like '%" + jjj$ + "%' OR naiyou like '%" + jjj$ + "%'"
     
     SQL.QUERY Cursor, DB_Ptr, tbname$,  Columns$, Where$
     
     PRINT WHERE$;"の検索結果"
     
     xdone = 0
     DO
     SQL.NEXT xdone,cursor,index$,v1$,v2$,v3$,v4$,v5$
     if !xdone THEN
        PRINT  index$,v1$,v2$,v3$,v4$,left$(v5$,10)
     endif  
     UNTIL xdone
     PRINT " "
     if tab$="y" then
       popup  "wait...",300,-150,1
       pause 5000
     else
     endif
         →ここまでは検索サブルーチンと同じ処理


     input "更新するメモ番号を指定 中止時はx",ckck$
         →更新する通番を入力するダイアログを表示

     
     if ckck$="x" then
     else
     
      Columns$ = "_id," + c1$  +"," + c2$ + "," +c3$ + "," + c4$ + "," + c5$
     
      Where$ = "_id = '" + ckck$ + "'"
     
      SQL.QUERY Cursor, DB_Ptr, tbname$,  Columns$, Where$
         →通番を条件指定でテーブル検索

     
      PRINT WHERE$;"の検索結果"
     
      xdone = 0
      DO
       SQL.NEXT xdone,cursor,index$,v1$,v2$,v3$,v4$,v5$
       if !xdone THEN
          PRINT  index$,v1$,v2$,v3$,v4$,v5$
       endif  
      UNTIL xdone
      PRINT " "
         →通番は、重複がないので1行だけレコードを取得

     
      text.input kenmei1$,v1$,"件名"
      Clipboard.put kenmei1$
      popup "クリップボードに件名をコピーしました",0,0,1
      pause 4000
     
      text.input keisaif1$,v3$,"掲載済フラグ"
      text.input kenren1$,v4$,"このメモに関連するキーワード"
      text.input naiyou1$,v5$,"メモの内容"
         →件名、掲載F、関連項目、内容を入力するテキストボックスを
         →検索したレコードの内容を初期値として順番に表示
       

     
      SQL.UPDATE DB_Ptr, tbname$, c1$,kenmei1$,c2$,today$,c3$,keisaif1$,c4$,kenren1$,c5$,naiyou1$: Where$
         →通番を指定された行の件名、更新日、掲載F,
         →関連項目、内容の項目を更新
     
      Clipboard.put naiyou1$
     
      popup "クリップボードにメモの内容をコピーしました",0,0,1
      pause 5000
     
      popup "更新完了",0,0,1
     
     endif
     
     gosub menux
     RETURN
         →変更サブルーチンの終了

 

  (12)削除処理

     
     !------- DB sakujo routine -----
     sakujo:
         →削除サブルーチン
     
     input "検索文字列を入力してください。",jjj$
     
     Columns$ = "_id," + c1$  +"," + c2$ + "," +c3$ + "," + c4$ + "," + c5$
     
     Where$ = "kenmei like '%" + jjj$ + "%' OR kanren like '%" + jjj$ + "%' OR naiyou like '%" + jjj$ + "%'"
     
     SQL.QUERY Cursor, DB_Ptr, tbname$,  Columns$, Where$
     
     PRINT WHERE$;"の検索結果"
     
     xdone = 0
     DO
     SQL.NEXT xdone,cursor,index$,v1$,v2$,v3$,v4$,v5$
     if !xdone THEN
        PRINT  index$,v1$,v2$,v3$,v4$,left$(v5$,10)
     endif  
     UNTIL xdone
         →ここまでは検索サブルーチンと同じ処理

 

     PRINT " "
     input "削除するメモ番号を指定 中止時はx",ckck$
         →削除する通番を入力するダイアログを表示
     
     if ckck$="x" then
     else
     
      Columns$ = "_id," + c1$  +"," + c2$ + "," +c3$ + "," + c4$ + "," + c5$
     
      Where$ = "_id = '" + ckck$ + "'"
     
      SQL.QUERY Cursor, DB_Ptr, tbname$,  Columns$, Where$
         →通番を条件指定でテーブル検索
     
      PRINT WHERE$;"の検索結果"
     
      xdone = 0
      DO
       SQL.NEXT xdone,cursor,index$,v1$,v2$,v3$,v4$,v5$
       if !xdone THEN
          PRINT  index$,v1$,v2$,v3$,v4$,v5$
       endif  
      UNTIL xdone
      PRINT " "
     
      input "このメモを削除します よろしいですか(y/n)",dldl$
      if dldl$="y" then
        SQL.DELETE DB_ptr, tbname$, Where$
      endif
         →削除を確認する入力ダイアログを表示して
         →通番を指定された行を削除
 
      popup "削除完了",0,0,1
     
     endif
     
     gosub menux
     RETURN
         →削除サブルーチンの終了

 

  (13)クローズ処理

     
     !------- DB Close routine -----
     cldb:
         →テーブルクローズサブルーチン
     
     SQL.CLOSE DB_Ptr
         →databaseをクローズする。


     popup "メモデータベースをクローズしました。",0,0,1
     pause 5000
     
     
     ! ftp upload
     
     input "FTPでバックアップしますか?(y/n)",ft$
     if ft$="y" then
     else
       return
     endif
         →FTPで外部サイトにアップロードするか
         →確認する入力ダイアログを表示


     
     input "FTPサイトの選択 1-fileserve 2-hotfile(1/2)",ftx
         →外部サイトを選択する入力ダイアログを表示
     
     
     popup "Connecting to ftp server...",0,0,1
     pause 4000
     
     ! Set the default path
     
     if ftx=1 then
      path$="ftp.fileserve.com"
      FTP.OPEN path$, 21, "userid", "password"
     else
      path$="ftp.hotfile.com"
      FTP.OPEN path$, 21, "userid2", "password"
     endif
         →外部のFTPサーバー、ID、パスワードを設定
         →外部サイトに接続

     
     ! Clear the default path
     
     path$="/"
     
     FTP.DIR ftplist
         →FTPでの初期ディレクトリをルートに設定して
         →ディレクトリリストを取得

     
     list.size ftplist,fsize
     
     for i=1 to fsize
       list.get ftplist,i,fname$
       print fname$
     next i
         →ディレクトリリストを表示
     
     
     zzz$="../databases/memo.db"
         →端末側のデータベース名を相対パスでセット

     
     yyy$="memo.db"
         →外部サイトでのアップロードファイル名をセット
     
     POPUP "UPloading メモデータベース...", 0, 0, 1
     pause 4000
     
     FTP.put zzz$, yyy$
         →外部サイトへアップロード     
     
     popup "UPload complete!",0,0,1
     PAUSE 4000 % Pause for a little
     
     popup "FTP close process start!",0,0,1
     pause 4000
     
     Ftp.close
         →外部サイトへの接続を終了     
     
     PAUSE 1000 % Pause for a little
     
     POPUP "メモデータベースUPload 終了", 0, 0, 1
     pause 4000
     
     return
         →テーブルクローズサブルーチンの終了

 

  (14)バックキー割り込み処理
     
     onbackkey:
     jjj=1
     back.resume
         →バックキー割り込み用の処理
         →メニューサブルーチンに戻ったときに
         →タブレットモードの場合、
         →メニュー選択の入力ダイアログを表示する

 

6.BASIC!の情報サイト


 

  私自身もBASIC!関連の日本語の掲示板や情報サイトを探しましたが
  ほとんどないので、仕方なく自分で作成しました。

  私自身、そんなにプログラム能力はないのであまり大した内容は
  ありませんが紹介動画や自作サンプルプログラムを置いているので
  よろしければ覗いてみてください。

 

  BASIC!友の会

   http://basic.amsstudio.jp/


  また、BASIC!友の会関連の更新はツイッターで
  お知らせしています。


  BASIC!友の会のツイッターアカウント
  @basictomonokai

  https://twitter.com/basictomonokai


7.関連知恵ノート一覧

 

  この知恵ノートに関連する知恵ノートの一覧です。

 

    AndroidでBASICで遊ぶ方法
  http://note.chiebukuro.yahoo.co.jp/detail/n190833

  AndroidでBASICで遊ぶ方法 その2
  http://note.chiebukuro.yahoo.co.jp/detail/n208888

  AndroidでBASICで遊ぶ方法 その3
  http://note.chiebukuro.yahoo.co.jp/detail/n210000

  AndroidでBASICで遊ぶ方法 その4
  http://note.chiebukuro.yahoo.co.jp/detail/n214126

  AndroidでBASICで遊ぶ方法 その5
    http://note.chiebukuro.yahoo.co.jp/detail/n216786

  AndroidでBASICで遊ぶ方法 その6
    http://note.chiebukuro.yahoo.co.jp/detail/n218610

  AndroidでBASICで遊ぶ方法 その7
    http://note.chiebukuro.yahoo.co.jp/detail/n222440

    AndroidでBASICで遊ぶ方法 その8-1
    http://note.chiebukuro.yahoo.co.jp/detail/n224842

    AndroidでBASICで遊ぶ方法 その8-2
    http://note.chiebukuro.yahoo.co.jp/detail/n225769

    AndroidでBASICで遊ぶ方法 その8-3
    http://note.chiebukuro.yahoo.co.jp/detail/n225771

    AndroidでBASICで遊ぶ方法(超初心者編)
  http://note.chiebukuro.yahoo.co.jp/detail/n223881

            
     
     

このノートに関するQ&A

このノートに関するQ&Aは、まだありません。

このノートについて質問する

このノートについてライターの方に質問できます。

※ライターの方から必ず回答をいただけるとは限りません

※別ウィンドウで開きます

ピックアップ

iPhoneで撮ったビデオ/写真をパ...
はじめにiTunesを用いてPC内の写真や動画をiPhoneに入れる方...
女子が陥りやすい、混んでいる...
はじめに毎日の通勤ラッシュ、つらいですよね。ただでさえ人...
質問にビックリ ∑(゜ロ゜ノ)ノ ...
                                                         ...
本文はここまでです このページの先頭へ