こんにちはゲストさん    
集金代行データの読み込み・・・

ある時「販売管理システム」を制作していたところ・・・お客様から「集金代行結果データ」を自動で読み込むことが出来ないかと云った相談を受ける・・・
確かに、非常に多くの入金データを顧客を選んで付き合わせを行って入力処理をするのは大変な作業である。
データを見たところ特に問題のないCSV形式のデータだったので、「phpMyAdminでも同じような事が出来るし・・・」と思い軽く引き受けてしまった。

簡単なテーブルを設計してまずそのCSVファイルをphpMyAdminで読み込んでみると。。。確かにデーブルにデータが読み込まれて「入金結果データテーブル」が形成されている。
ここまで来るともう出来たも同然。 何故かと云うとphpMyAdminも所詮PHPでコーディングされており、いざとなればその部分を参考に作ってしまえば良いということである。

そこで少しこれらの事について調べてみる・・・
  どうやら、この「LOAD DATA INFILE」を使えば簡単に読み込めるような事が読み取れる。 

マニュアルには「ローカルデータ」が読み込めるような事が書いてあるが一向に上手く行かない・・・
  そこで頼みの綱のphpMyAdminを少し解析してみると、どうやらLOCALからファイルのアップロードを行いその時にブラウザに作られるテンポラリファイルを指定してデータのインポートをしているような感じになっているので、同じようなqueryを作って試すが、クウォート関連のエラーにはまってしまう

このままでは生産性が悪いのでこのLOAD DATA INFILEを使用するのは一時ペンディングにし、CSVファイルをサーバにアップロードし、そのCSVファイルからオーソドックスな方式でデータを読み込むことにした。
結果お見事に成功した。  やはり横着はいけませんネ^^; 結局オーソドックスにやった方が良い方法は沢山あります。

総括・・・
LOAD DATA INFILEを諦めた訳ではありません、一番重要なのはLOAD DATA [LOCAL] INFILELOCALオプションが問題のような気がします。このLOCALオプションを使うことにより、ローカルファイルが使えるようになるようですが、その詳細に関する情報がありません(サーバ環境の設定もある感じ)、恐らくアップロード時にキャッシュされたTMPファイルを指定すれば良いような気がしますが、時間のある時にまた研究してみます。

そんな事よりも口座引き落とし用の全銀データを作らなくては・・・

メールでの問合せ
意見を書込む
FPDF+FPDI下マージン・・・

通常の帳票はあまり気にしなかったが、佐川やゆうパックの送り状印刷などを行う時に、デフォルトで印刷するとどうしても下(マージン)が空いてしまい、印刷出来ないエリアが発生してしまう・・・
そこでリファレンスマニュアルを覗いてみると、SetMargins(float left, float top [, float right]) という関数はあるが、なななんと・・・
肝心な下のマージンの設定が出来ないのではないか
そこで、仕方なくfpdf.phpを覗いてみるとそもそも考え方が違っていたようで、下マージと云うよりはSetAutoPageBreak(自動改ページ)機能が働いていたようで元々下マージンと云う考え方が無いモノと思われる。
そこで少しこのあたりに手を加えて下まで印刷範囲が広がるようにした。

fpdf.phpの186行目
改造前  $this->SetAutoPageBreak(true,2*$margin);
改造後  $this->SetAutoPageBreak(true,0.2*$margin);
結局これは自動改ページの判断を下まで行わない為に下マージンは減る結果になるようである。(数値はゼロ"0"でもOKかと思うが、今回は小さくしただけで勘弁してやった

メールでの問合せ
意見を書込む
FPDF+FPDIでゆうパック用紙設定

ドットプリンタでゆうパック印刷用のPDFファイルを作成するはめになり、FPDF+FPDIで作成しましたが、用紙サイズの設定方法と下マージンの設定方法が解らず忘れそうなのでメモとして書いておきます。

普通A4サイズならこんな感じに出来るんだけど特殊サイズは作らないと駄目でした。

 まず fpdf.php の用紙サイズ設定 130行目付近の下記を追加

  if($format=='a3')
   $format=array(841.89,1190.55);
  elseif($format=='a4')
   $format=array(595.28,841.89);
  elseif($format=='a5')
   $format=array(420.94,595.28);
  elseif($format=='you1')
   $format=array(360,792);//サイズはピクセルで指定のこと

if文で用紙サイズと名前を追加し下記の印刷用ファイルで読み込めばいろいろなサイズを設定可能。

印刷用ファイルの設定部分の下記を設定、単位に注意 今回は11インチ×5インチで設定

  $pdf   = & new fpdi('landscape','mm','you1'); //ゆうパック連続用紙
  $pagecount  = $pdf->setSourceFile("form/youpackREN_D.pdf");//テンプレートPDFファイル
  $tplidx  = $pdf->ImportPage(1);
  
  $pdf->addPage();
  $pdf->useTemplate($tplidx,10,0,279.4,127);//サイズはmmで指定のこと

 

メールでの問合せ
意見を書込む
■ 37〜39件 全39件中