WSIRINQ: 仕入先照会[WEB解説]
最終更新:
2025-11-24
#*********************************************************#
#*
#* プログラム名 : WSIRINQ.PY
#* タイプ : PYTHON
#* APP タイプ : WSFL ( WEB SFL 一覧表示 )
#* 作成日 : 2025/11/04 07:57:11
#* 作成者 : QTR
#* ディレクトリー : /PYTHON.400/PROJECT
#* 使用ファイル : QTRFIL/SIREMT
#* 監査報告書 : Y
#* 数値の編集 : Y
#* 画面サイズ
#* 桁 : 132
#* 行 : 27
#*
#*********************************************************
#! /usr/bin/env python3.4
import sys
import os
import re
import ibm_db2
import bottle2
import urllib.parse
dspmod = sys.argv[1]
SFLPAG = 10 # 一度の通信でクライアントに返すレコード数
add_count = 0
chg_count = 0
dlt_count = 0
#*************************************************************#
@bottle2.route('/init', method=["GET", "POST"])
def init():
#*************************************************************#
# 初期画面の HTML を表示する。
# パラメータを受け取る
params = bottle2.request.params.decode()
# パラメータがあれば初期画面の HTML にセットする。
values = [{
'SRCODE': params.get('SRCODE', ''),
}]
# ブラウザに DSPHEAD.HTM を出力する。
return bottle2.template('DSPHEAD.HTM', {
'dspmod': dspmod,
'values': values,
'msg': params.get('MSG', ''),
})
#*************************************************************#
@bottle2.route('/input', method=["GET", "POST"]) # 入力切替
def input():
#*************************************************************#
# ブラウザからの入力値を受け取る。
params = bottle2.request.query.decode()
# 白紙の明細画面の HTML を表示する
return bottle2.template('DSPTOP.HTM', {
'dspmod': 'INPPTN',
'values': [{}],
})
#*************************************************************#
# 明細画面 # データ検索
@bottle2.route('/query', method=["GET"])
def query():
#*************************************************************#
# ブラウザからの入力値を受け取る。
params = bottle2.request.query.decode()
# 明細画面の HTM を表示する。
values = [{
'SRCODE': params.get('SRCODE', ''),
}]
return bottle2.template('DSPTOP.HTM', {
'dspmod': dspmod,
'values': values,
})
#*************************************************************#
# 挿入画面用の空っぽのレコードをブラウザに返す。
@bottle2.route('/template', method=["GET", "POST"])
def template():
#*************************************************************#
return bottle2.template('LISTDEF.HTM', {
'dspmod': 'WRTPTN',
'value': {},
})
#*************************************************************#
# レコードのデータをブラウザに返す。
@bottle2.route('/record', method=["GET", "POST"])
def record():
#*************************************************************#
# DB2 に接続する。
with ibm_db2.connected() as conn:
# ブラウザからの入力値を受け取る。
params = bottle2.request.params.decode()
# SQL を組み立てる。
sql = '''
SELECT T01.SRCODE
,T01.SRNMK
,T01.SRNMJ
,T01.SRNMJ2
,T01.SRNM
,T01.SRSHOT
,T01.SRTEL
,T01.SRFAX
,T01.SFAX
,T01.SRFORD
,T01.SRYOSI
,T01.SRKAIT
,T01.SRLABL
,T01.SRZIP
,T01.SRADR1
,T01.SRADR2
,T01.STANTO
,T01.SRKOKB
,T01.SRFRKB
,T01.SRR01
,T01.SRR02
,T01.SRR03
,T01.SRR04
,T01.SRKBN
,T01.SGYOSH
,T01.SRHLMT
,T01.SEGCD
,T01.SCHIKU
,T01.SRTRI
,T01.SRSHCD
,T01.SRSHKB
,T01.SRSHHO
,T01.SRSIT
,T01.SRZEI
,T01.SDIHYO
,T01.SJOKEN
,T01.SBNKCD
,T01.SSTNCD
,T01.SYOKKB
,T01.SKOZNO
,T01.SYOKNM
,T01.SNEWDT
,T01.SMITEG
,T01.SRKEDT
,T01.SRHDDT
,T01.SROKDT
,T01.SSIHON
,T01.SNENSO
,T01.SORITU
,T01.SSHAIN
,T01.SKESAN
,T01.SMAKER
,T01.SSHHIN
,T01.STRHIN
,T01.SBIKO1
,T01.SBIKO2
,T01.STORCD
,T01.STOROK
FROM QTRFIL/SIREMT T01
WHERE T01.SRCODE >= ?
ORDER BY T01.SRCODE
OFFSET ? ROWS
FETCH NEXT ? ROWS ONLY
'''
stmt = ibm_db2.prepare(conn, sql);
ibm_db2.bind_param(stmt, 1, params['SRCODE']) # SRCODE を SQL にセットする。
ibm_db2.bind_param(stmt, 2, params['_RRN']) # RRN を SQL にセットする。
ibm_db2.bind_param(stmt, 3, SFLPAG) # SFLPAG を SQL にセットする。
# SQL を実行する。
ibm_db2.execute(stmt)
# 結果のレコードを取得する。
values = []
row = ibm_db2.fetch_assoc(stmt)
while row != False:
values.append(row)
row = ibm_db2.fetch_assoc(stmt)
# 結果をテンプレートに埋め込む。
text = ""
for value in values:
text += bottle2.template('LISTDEF.HTM', {
'dspmod': dspmod,
'value': value,
})
# 明細画面の HTM を表示する。
bottle2.response.content_type = 'text/plain';
return text
#*************************************************************#
@bottle2.route('/update', method=["POST"]) # 更新処理
def update():
#*************************************************************#
# DB2 に接続する。
with ibm_db2.connected() as conn:
# ブラウザからの入力値を受け取る。
params = bottle2.request.forms.decode()
txn_chg_count = 0
txn_add_count = 0
# 各レコードについて繰り返す。
for i in range(len(params.getall('SRCODE'))):
# 空行はスキップ
if params.getall('SRCODE')[i] == '':
continue
params['SRKAIT'] = int(params['SRKAIT'].replace(',', '')) # SRKAIT を数値に変換する
params['SRHLMT'] = int(params['SRHLMT'].replace(',', '')) # SRHLMT を数値に変換する
params['SRSIT'] = int(params['SRSIT'].replace(',', '')) # SRSIT を数値に変換する
params['SNEWDT'] = int(params['SNEWDT'].replace(',', '')) # SNEWDT を数値に変換する
params['SMITEG'] = int(params['SMITEG'].replace(',', '')) # SMITEG を数値に変換する
params['SRKEDT'] = int(params['SRKEDT'].replace(',', '')) # SRKEDT を数値に変換する
params['SRHDDT'] = int(params['SRHDDT'].replace(',', '')) # SRHDDT を数値に変換する
params['SROKDT'] = int(params['SROKDT'].replace(',', '')) # SROKDT を数値に変換する
params['SSIHON'] = int(params['SSIHON'].replace(',', '')) # SSIHON を数値に変換する
params['SNENSO'] = int(params['SNENSO'].replace(',', '')) # SNENSO を数値に変換する
params['SORITU'] = int(params['SORITU'].replace(',', '')) # SORITU を数値に変換する
params['SSHAIN'] = int(params['SSHAIN'].replace(',', '')) # SSHAIN を数値に変換する
params['SKESAN'] = int(params['SKESAN'].replace(',', '')) # SKESAN を数値に変換する
params['STOROK'] = int(params['STOROK'].replace(',', '')) # STOROK を数値に変換する
# SQL を組み立てる。
if params.getall('_DSPMOD')[i] == 'WRTPTN':
# レコードの挿入
sql = '''
INSERT INTO QTRFIL/SIREMT
(SRCODE,
SRNMK,
SRNMJ,
SRNMJ2,
SRNM,
SRSHOT,
SRTEL,
SRFAX,
SFAX,
SRFORD,
SRYOSI,
SRKAIT,
SRLABL,
SRZIP,
SRADR1,
SRADR2,
STANTO,
SRKOKB,
SRFRKB,
SRR01,
SRR02,
SRR03,
SRR04,
SRKBN,
SGYOSH,
SRHLMT,
SEGCD,
SCHIKU,
SRTRI,
SRSHCD,
SRSHKB,
SRSHHO,
SRSIT,
SRZEI,
SDIHYO,
SJOKEN,
SBNKCD,
SSTNCD,
SYOKKB,
SKOZNO,
SYOKNM,
SNEWDT,
SMITEG,
SRKEDT,
SRHDDT,
SROKDT,
SSIHON,
SNENSO,
SORITU,
SSHAIN,
SKESAN,
SMAKER,
SSHHIN,
STRHIN,
SBIKO1,
SBIKO2,
STORCD,
STOROK)
'''
stmt = ibm_db2.prepare(conn, sql);
ibm_db2.bind_param(stmt, 1, params['SRCODE']) # SRCODE を SQL にセットする
ibm_db2.bind_param(stmt, 2, params['SRNMK']) # SRNMK を SQL にセットする
ibm_db2.bind_param(stmt, 3, params['SRNMJ']) # SRNMJ を SQL にセットする
ibm_db2.bind_param(stmt, 4, params['SRNMJ2']) # SRNMJ2 を SQL にセットする
ibm_db2.bind_param(stmt, 5, params['SRNM']) # SRNM を SQL にセットする
ibm_db2.bind_param(stmt, 6, params['SRSHOT']) # SRSHOT を SQL にセットする
ibm_db2.bind_param(stmt, 7, params['SRTEL']) # SRTEL を SQL にセットする
ibm_db2.bind_param(stmt, 8, params['SRFAX']) # SRFAX を SQL にセットする
ibm_db2.bind_param(stmt, 9, params['SFAX']) # SFAX を SQL にセットする
ibm_db2.bind_param(stmt, 10, params['SRFORD']) # SRFORD を SQL にセットする
ibm_db2.bind_param(stmt, 11, params['SRYOSI']) # SRYOSI を SQL にセットする
ibm_db2.bind_param(stmt, 12, params['SRKAIT']) # SRKAIT を SQL にセットする
ibm_db2.bind_param(stmt, 13, params['SRLABL']) # SRLABL を SQL にセットする
ibm_db2.bind_param(stmt, 14, params['SRZIP']) # SRZIP を SQL にセットする
ibm_db2.bind_param(stmt, 15, params['SRADR1']) # SRADR1 を SQL にセットする
ibm_db2.bind_param(stmt, 16, params['SRADR2']) # SRADR2 を SQL にセットする
ibm_db2.bind_param(stmt, 17, params['STANTO']) # STANTO を SQL にセットする
ibm_db2.bind_param(stmt, 18, params['SRKOKB']) # SRKOKB を SQL にセットする
ibm_db2.bind_param(stmt, 19, params['SRFRKB']) # SRFRKB を SQL にセットする
ibm_db2.bind_param(stmt, 20, params['SRR01']) # SRR01 を SQL にセットする
ibm_db2.bind_param(stmt, 21, params['SRR02']) # SRR02 を SQL にセットする
ibm_db2.bind_param(stmt, 22, params['SRR03']) # SRR03 を SQL にセットする
ibm_db2.bind_param(stmt, 23, params['SRR04']) # SRR04 を SQL にセットする
ibm_db2.bind_param(stmt, 24, params['SRKBN']) # SRKBN を SQL にセットする
ibm_db2.bind_param(stmt, 25, params['SGYOSH']) # SGYOSH を SQL にセットする
ibm_db2.bind_param(stmt, 26, params['SRHLMT']) # SRHLMT を SQL にセットする
ibm_db2.bind_param(stmt, 27, params['SEGCD']) # SEGCD を SQL にセットする
ibm_db2.bind_param(stmt, 28, params['SCHIKU']) # SCHIKU を SQL にセットする
ibm_db2.bind_param(stmt, 29, params['SRTRI']) # SRTRI を SQL にセットする
ibm_db2.bind_param(stmt, 30, params['SRSHCD']) # SRSHCD を SQL にセットする
ibm_db2.bind_param(stmt, 31, params['SRSHKB']) # SRSHKB を SQL にセットする
ibm_db2.bind_param(stmt, 32, params['SRSHHO']) # SRSHHO を SQL にセットする
ibm_db2.bind_param(stmt, 33, params['SRSIT']) # SRSIT を SQL にセットする
ibm_db2.bind_param(stmt, 34, params['SRZEI']) # SRZEI を SQL にセットする
ibm_db2.bind_param(stmt, 35, params['SDIHYO']) # SDIHYO を SQL にセットする
ibm_db2.bind_param(stmt, 36, params['SJOKEN']) # SJOKEN を SQL にセットする
ibm_db2.bind_param(stmt, 37, params['SBNKCD']) # SBNKCD を SQL にセットする
ibm_db2.bind_param(stmt, 38, params['SSTNCD']) # SSTNCD を SQL にセットする
ibm_db2.bind_param(stmt, 39, params['SYOKKB']) # SYOKKB を SQL にセットする
ibm_db2.bind_param(stmt, 40, params['SKOZNO']) # SKOZNO を SQL にセットする
ibm_db2.bind_param(stmt, 41, params['SYOKNM']) # SYOKNM を SQL にセットする
ibm_db2.bind_param(stmt, 42, params['SNEWDT']) # SNEWDT を SQL にセットする
ibm_db2.bind_param(stmt, 43, params['SMITEG']) # SMITEG を SQL にセットする
ibm_db2.bind_param(stmt, 44, params['SRKEDT']) # SRKEDT を SQL にセットする
ibm_db2.bind_param(stmt, 45, params['SRHDDT']) # SRHDDT を SQL にセットする
ibm_db2.bind_param(stmt, 46, params['SROKDT']) # SROKDT を SQL にセットする
ibm_db2.bind_param(stmt, 47, params['SSIHON']) # SSIHON を SQL にセットする
ibm_db2.bind_param(stmt, 48, params['SNENSO']) # SNENSO を SQL にセットする
ibm_db2.bind_param(stmt, 49, params['SORITU']) # SORITU を SQL にセットする
ibm_db2.bind_param(stmt, 50, params['SSHAIN']) # SSHAIN を SQL にセットする
ibm_db2.bind_param(stmt, 51, params['SKESAN']) # SKESAN を SQL にセットする
ibm_db2.bind_param(stmt, 52, params['SMAKER']) # SMAKER を SQL にセットする
ibm_db2.bind_param(stmt, 53, params['SSHHIN']) # SSHHIN を SQL にセットする
ibm_db2.bind_param(stmt, 54, params['STRHIN']) # STRHIN を SQL にセットする
ibm_db2.bind_param(stmt, 55, params['SBIKO1']) # SBIKO1 を SQL にセットする
ibm_db2.bind_param(stmt, 56, params['SBIKO2']) # SBIKO2 を SQL にセットする
ibm_db2.bind_param(stmt, 57, params['STORCD']) # STORCD を SQL にセットする
ibm_db2.bind_param(stmt, 58, params['STOROK']) # STOROK を SQL にセットする
ibm_db2.bind_param(stmt, 59, params['SRCODE']) # SRCODE を SQL にセットする
# SQL を実行する。
ibm_db2.execute(stmt)
global add_count
add_count += 1
txn_add_count += 1
else:
# レコードの更新
sql = '''
UPDATE QTRFIL/SIREMT
SET SRNMK = ?
,SRNMJ = ?
,SRNMJ2 = ?
,SRNM = ?
,SRSHOT = ?
,SRTEL = ?
,SRFAX = ?
,SFAX = ?
,SRFORD = ?
,SRYOSI = ?
,SRKAIT = ?
,SRLABL = ?
,SRZIP = ?
,SRADR1 = ?
,SRADR2 = ?
,STANTO = ?
,SRKOKB = ?
,SRFRKB = ?
,SRR01 = ?
,SRR02 = ?
,SRR03 = ?
,SRR04 = ?
,SRKBN = ?
,SGYOSH = ?
,SRHLMT = ?
,SEGCD = ?
,SCHIKU = ?
,SRTRI = ?
,SRSHCD = ?
,SRSHKB = ?
,SRSHHO = ?
,SRSIT = ?
,SRZEI = ?
,SDIHYO = ?
,SJOKEN = ?
,SBNKCD = ?
,SSTNCD = ?
,SYOKKB = ?
,SKOZNO = ?
,SYOKNM = ?
,SNEWDT = ?
,SMITEG = ?
,SRKEDT = ?
,SRHDDT = ?
,SROKDT = ?
,SSIHON = ?
,SNENSO = ?
,SORITU = ?
,SSHAIN = ?
,SKESAN = ?
,SMAKER = ?
,SSHHIN = ?
,STRHIN = ?
,SBIKO1 = ?
,SBIKO2 = ?
,STORCD = ?
,STOROK = ?
WHERE SRCODE = ?
'''
stmt = ibm_db2.prepare(conn, sql);
ibm_db2.bind_param(stmt, 1, params['SRCODE']) # SRCODE を SQL にセットする
ibm_db2.bind_param(stmt, 2, params['SRNMK']) # SRNMK を SQL にセットする
ibm_db2.bind_param(stmt, 3, params['SRNMJ']) # SRNMJ を SQL にセットする
ibm_db2.bind_param(stmt, 4, params['SRNMJ2']) # SRNMJ2 を SQL にセットする
ibm_db2.bind_param(stmt, 5, params['SRNM']) # SRNM を SQL にセットする
ibm_db2.bind_param(stmt, 6, params['SRSHOT']) # SRSHOT を SQL にセットする
ibm_db2.bind_param(stmt, 7, params['SRTEL']) # SRTEL を SQL にセットする
ibm_db2.bind_param(stmt, 8, params['SRFAX']) # SRFAX を SQL にセットする
ibm_db2.bind_param(stmt, 9, params['SFAX']) # SFAX を SQL にセットする
ibm_db2.bind_param(stmt, 10, params['SRFORD']) # SRFORD を SQL にセットする
ibm_db2.bind_param(stmt, 11, params['SRYOSI']) # SRYOSI を SQL にセットする
ibm_db2.bind_param(stmt, 12, params['SRKAIT']) # SRKAIT を SQL にセットする
ibm_db2.bind_param(stmt, 13, params['SRLABL']) # SRLABL を SQL にセットする
ibm_db2.bind_param(stmt, 14, params['SRZIP']) # SRZIP を SQL にセットする
ibm_db2.bind_param(stmt, 15, params['SRADR1']) # SRADR1 を SQL にセットする
ibm_db2.bind_param(stmt, 16, params['SRADR2']) # SRADR2 を SQL にセットする
ibm_db2.bind_param(stmt, 17, params['STANTO']) # STANTO を SQL にセットする
ibm_db2.bind_param(stmt, 18, params['SRKOKB']) # SRKOKB を SQL にセットする
ibm_db2.bind_param(stmt, 19, params['SRFRKB']) # SRFRKB を SQL にセットする
ibm_db2.bind_param(stmt, 20, params['SRR01']) # SRR01 を SQL にセットする
ibm_db2.bind_param(stmt, 21, params['SRR02']) # SRR02 を SQL にセットする
ibm_db2.bind_param(stmt, 22, params['SRR03']) # SRR03 を SQL にセットする
ibm_db2.bind_param(stmt, 23, params['SRR04']) # SRR04 を SQL にセットする
ibm_db2.bind_param(stmt, 24, params['SRKBN']) # SRKBN を SQL にセットする
ibm_db2.bind_param(stmt, 25, params['SGYOSH']) # SGYOSH を SQL にセットする
ibm_db2.bind_param(stmt, 26, params['SRHLMT']) # SRHLMT を SQL にセットする
ibm_db2.bind_param(stmt, 27, params['SEGCD']) # SEGCD を SQL にセットする
ibm_db2.bind_param(stmt, 28, params['SCHIKU']) # SCHIKU を SQL にセットする
ibm_db2.bind_param(stmt, 29, params['SRTRI']) # SRTRI を SQL にセットする
ibm_db2.bind_param(stmt, 30, params['SRSHCD']) # SRSHCD を SQL にセットする
ibm_db2.bind_param(stmt, 31, params['SRSHKB']) # SRSHKB を SQL にセットする
ibm_db2.bind_param(stmt, 32, params['SRSHHO']) # SRSHHO を SQL にセットする
ibm_db2.bind_param(stmt, 33, params['SRSIT']) # SRSIT を SQL にセットする
ibm_db2.bind_param(stmt, 34, params['SRZEI']) # SRZEI を SQL にセットする
ibm_db2.bind_param(stmt, 35, params['SDIHYO']) # SDIHYO を SQL にセットする
ibm_db2.bind_param(stmt, 36, params['SJOKEN']) # SJOKEN を SQL にセットする
ibm_db2.bind_param(stmt, 37, params['SBNKCD']) # SBNKCD を SQL にセットする
ibm_db2.bind_param(stmt, 38, params['SSTNCD']) # SSTNCD を SQL にセットする
ibm_db2.bind_param(stmt, 39, params['SYOKKB']) # SYOKKB を SQL にセットする
ibm_db2.bind_param(stmt, 40, params['SKOZNO']) # SKOZNO を SQL にセットする
ibm_db2.bind_param(stmt, 41, params['SYOKNM']) # SYOKNM を SQL にセットする
ibm_db2.bind_param(stmt, 42, params['SNEWDT']) # SNEWDT を SQL にセットする
ibm_db2.bind_param(stmt, 43, params['SMITEG']) # SMITEG を SQL にセットする
ibm_db2.bind_param(stmt, 44, params['SRKEDT']) # SRKEDT を SQL にセットする
ibm_db2.bind_param(stmt, 45, params['SRHDDT']) # SRHDDT を SQL にセットする
ibm_db2.bind_param(stmt, 46, params['SROKDT']) # SROKDT を SQL にセットする
ibm_db2.bind_param(stmt, 47, params['SSIHON']) # SSIHON を SQL にセットする
ibm_db2.bind_param(stmt, 48, params['SNENSO']) # SNENSO を SQL にセットする
ibm_db2.bind_param(stmt, 49, params['SORITU']) # SORITU を SQL にセットする
ibm_db2.bind_param(stmt, 50, params['SSHAIN']) # SSHAIN を SQL にセットする
ibm_db2.bind_param(stmt, 51, params['SKESAN']) # SKESAN を SQL にセットする
ibm_db2.bind_param(stmt, 52, params['SMAKER']) # SMAKER を SQL にセットする
ibm_db2.bind_param(stmt, 53, params['SSHHIN']) # SSHHIN を SQL にセットする
ibm_db2.bind_param(stmt, 54, params['STRHIN']) # STRHIN を SQL にセットする
ibm_db2.bind_param(stmt, 55, params['SBIKO1']) # SBIKO1 を SQL にセットする
ibm_db2.bind_param(stmt, 56, params['SBIKO2']) # SBIKO2 を SQL にセットする
ibm_db2.bind_param(stmt, 57, params['STORCD']) # STORCD を SQL にセットする
ibm_db2.bind_param(stmt, 58, params['STOROK']) # STOROK を SQL にセットする
ibm_db2.bind_param(stmt, 59, params['SRCODE']) # SRCODE を SQL にセットする
# SQL を実行する。
ibm_db2.execute(stmt)
global chg_count
chg_count += 1
txn_chg_count += 1
# 初期画面に戻る
msgs = []
if txn_add_count > 0:
msgs.append("{} レコード追加 ".format(txn_add_count))
msgs.append("{} レコード更新 ".format(txn_chg_count))
msg = ' 、 '.join(msgs) + " しました。 "
return bottle2.redirect('/init?' + urllib.parse.urlencode({
'MSG': msg,
}))
#*************************************************************#
@bottle2.route('/insert', method=["POST"]) # 入力処理
def insert():
#*************************************************************#
# DB2 に接続する。
with ibm_db2.connected() as conn:
# ブラウザからの入力値を受け取る。
params = bottle2.request.forms.decode()
params['SRKAIT'] = int(params['SRKAIT'].replace(',', '')) # SRKAIT を数値に変換する
params['SRHLMT'] = int(params['SRHLMT'].replace(',', '')) # SRHLMT を数値に変換する
params['SRSIT'] = int(params['SRSIT'].replace(',', '')) # SRSIT を数値に変換する
params['SNEWDT'] = int(params['SNEWDT'].replace(',', '')) # SNEWDT を数値に変換する
params['SMITEG'] = int(params['SMITEG'].replace(',', '')) # SMITEG を数値に変換する
params['SRKEDT'] = int(params['SRKEDT'].replace(',', '')) # SRKEDT を数値に変換する
params['SRHDDT'] = int(params['SRHDDT'].replace(',', '')) # SRHDDT を数値に変換する
params['SROKDT'] = int(params['SROKDT'].replace(',', '')) # SROKDT を数値に変換する
params['SSIHON'] = int(params['SSIHON'].replace(',', '')) # SSIHON を数値に変換する
params['SNENSO'] = int(params['SNENSO'].replace(',', '')) # SNENSO を数値に変換する
params['SORITU'] = int(params['SORITU'].replace(',', '')) # SORITU を数値に変換する
params['SSHAIN'] = int(params['SSHAIN'].replace(',', '')) # SSHAIN を数値に変換する
params['SKESAN'] = int(params['SKESAN'].replace(',', '')) # SKESAN を数値に変換する
params['STOROK'] = int(params['STOROK'].replace(',', '')) # STOROK を数値に変換する
# SQL を組み立てる。
sql = '''
INSERT INTO QTRFIL/SIREMT
(SRCODE,
SRNMK,
SRNMJ,
SRNMJ2,
SRNM,
SRSHOT,
SRTEL,
SRFAX,
SFAX,
SRFORD,
SRYOSI,
SRKAIT,
SRLABL,
SRZIP,
SRADR1,
SRADR2,
STANTO,
SRKOKB,
SRFRKB,
SRR01,
SRR02,
SRR03,
SRR04,
SRKBN,
SGYOSH,
SRHLMT,
SEGCD,
SCHIKU,
SRTRI,
SRSHCD,
SRSHKB,
SRSHHO,
SRSIT,
SRZEI,
SDIHYO,
SJOKEN,
SBNKCD,
SSTNCD,
SYOKKB,
SKOZNO,
SYOKNM,
SNEWDT,
SMITEG,
SRKEDT,
SRHDDT,
SROKDT,
SSIHON,
SNENSO,
SORITU,
SSHAIN,
SKESAN,
SMAKER,
SSHHIN,
STRHIN,
SBIKO1,
SBIKO2,
STORCD,
STOROK)
'''
stmt = ibm_db2.prepare(conn, sql);
ibm_db2.bind_param(stmt, 1, params['SRCODE']) # SRCODE を SQL にセットする
ibm_db2.bind_param(stmt, 2, params['SRNMK']) # SRNMK を SQL にセットする
ibm_db2.bind_param(stmt, 3, params['SRNMJ']) # SRNMJ を SQL にセットする
ibm_db2.bind_param(stmt, 4, params['SRNMJ2']) # SRNMJ2 を SQL にセットする
ibm_db2.bind_param(stmt, 5, params['SRNM']) # SRNM を SQL にセットする
ibm_db2.bind_param(stmt, 6, params['SRSHOT']) # SRSHOT を SQL にセットする
ibm_db2.bind_param(stmt, 7, params['SRTEL']) # SRTEL を SQL にセットする
ibm_db2.bind_param(stmt, 8, params['SRFAX']) # SRFAX を SQL にセットする
ibm_db2.bind_param(stmt, 9, params['SFAX']) # SFAX を SQL にセットする
ibm_db2.bind_param(stmt, 10, params['SRFORD']) # SRFORD を SQL にセットする
ibm_db2.bind_param(stmt, 11, params['SRYOSI']) # SRYOSI を SQL にセットする
ibm_db2.bind_param(stmt, 12, params['SRKAIT']) # SRKAIT を SQL にセットする
ibm_db2.bind_param(stmt, 13, params['SRLABL']) # SRLABL を SQL にセットする
ibm_db2.bind_param(stmt, 14, params['SRZIP']) # SRZIP を SQL にセットする
ibm_db2.bind_param(stmt, 15, params['SRADR1']) # SRADR1 を SQL にセットする
ibm_db2.bind_param(stmt, 16, params['SRADR2']) # SRADR2 を SQL にセットする
ibm_db2.bind_param(stmt, 17, params['STANTO']) # STANTO を SQL にセットする
ibm_db2.bind_param(stmt, 18, params['SRKOKB']) # SRKOKB を SQL にセットする
ibm_db2.bind_param(stmt, 19, params['SRFRKB']) # SRFRKB を SQL にセットする
ibm_db2.bind_param(stmt, 20, params['SRR01']) # SRR01 を SQL にセットする
ibm_db2.bind_param(stmt, 21, params['SRR02']) # SRR02 を SQL にセットする
ibm_db2.bind_param(stmt, 22, params['SRR03']) # SRR03 を SQL にセットする
ibm_db2.bind_param(stmt, 23, params['SRR04']) # SRR04 を SQL にセットする
ibm_db2.bind_param(stmt, 24, params['SRKBN']) # SRKBN を SQL にセットする
ibm_db2.bind_param(stmt, 25, params['SGYOSH']) # SGYOSH を SQL にセットする
ibm_db2.bind_param(stmt, 26, params['SRHLMT']) # SRHLMT を SQL にセットする
ibm_db2.bind_param(stmt, 27, params['SEGCD']) # SEGCD を SQL にセットする
ibm_db2.bind_param(stmt, 28, params['SCHIKU']) # SCHIKU を SQL にセットする
ibm_db2.bind_param(stmt, 29, params['SRTRI']) # SRTRI を SQL にセットする
ibm_db2.bind_param(stmt, 30, params['SRSHCD']) # SRSHCD を SQL にセットする
ibm_db2.bind_param(stmt, 31, params['SRSHKB']) # SRSHKB を SQL にセットする
ibm_db2.bind_param(stmt, 32, params['SRSHHO']) # SRSHHO を SQL にセットする
ibm_db2.bind_param(stmt, 33, params['SRSIT']) # SRSIT を SQL にセットする
ibm_db2.bind_param(stmt, 34, params['SRZEI']) # SRZEI を SQL にセットする
ibm_db2.bind_param(stmt, 35, params['SDIHYO']) # SDIHYO を SQL にセットする
ibm_db2.bind_param(stmt, 36, params['SJOKEN']) # SJOKEN を SQL にセットする
ibm_db2.bind_param(stmt, 37, params['SBNKCD']) # SBNKCD を SQL にセットする
ibm_db2.bind_param(stmt, 38, params['SSTNCD']) # SSTNCD を SQL にセットする
ibm_db2.bind_param(stmt, 39, params['SYOKKB']) # SYOKKB を SQL にセットする
ibm_db2.bind_param(stmt, 40, params['SKOZNO']) # SKOZNO を SQL にセットする
ibm_db2.bind_param(stmt, 41, params['SYOKNM']) # SYOKNM を SQL にセットする
ibm_db2.bind_param(stmt, 42, params['SNEWDT']) # SNEWDT を SQL にセットする
ibm_db2.bind_param(stmt, 43, params['SMITEG']) # SMITEG を SQL にセットする
ibm_db2.bind_param(stmt, 44, params['SRKEDT']) # SRKEDT を SQL にセットする
ibm_db2.bind_param(stmt, 45, params['SRHDDT']) # SRHDDT を SQL にセットする
ibm_db2.bind_param(stmt, 46, params['SROKDT']) # SROKDT を SQL にセットする
ibm_db2.bind_param(stmt, 47, params['SSIHON']) # SSIHON を SQL にセットする
ibm_db2.bind_param(stmt, 48, params['SNENSO']) # SNENSO を SQL にセットする
ibm_db2.bind_param(stmt, 49, params['SORITU']) # SORITU を SQL にセットする
ibm_db2.bind_param(stmt, 50, params['SSHAIN']) # SSHAIN を SQL にセットする
ibm_db2.bind_param(stmt, 51, params['SKESAN']) # SKESAN を SQL にセットする
ibm_db2.bind_param(stmt, 52, params['SMAKER']) # SMAKER を SQL にセットする
ibm_db2.bind_param(stmt, 53, params['SSHHIN']) # SSHHIN を SQL にセットする
ibm_db2.bind_param(stmt, 54, params['STRHIN']) # STRHIN を SQL にセットする
ibm_db2.bind_param(stmt, 55, params['SBIKO1']) # SBIKO1 を SQL にセットする
ibm_db2.bind_param(stmt, 56, params['SBIKO2']) # SBIKO2 を SQL にセットする
ibm_db2.bind_param(stmt, 57, params['STORCD']) # STORCD を SQL にセットする
ibm_db2.bind_param(stmt, 58, params['STOROK']) # STOROK を SQL にセットする
ibm_db2.bind_param(stmt, 59, params['SRCODE']) # SRCODE を SQL にセットする
# SQL を実行する。
ibm_db2.execute(stmt)
global add_count
add_count += 1
# 初期画面に戻る
return bottle2.redirect('/init?' + urllib.parse.urlencode({
'MSG': '1 レコード追加しました ',
}))
#*************************************************************#
@bottle2.route('/delete', method=["POST"]) # 削除処理
def delete():
#*************************************************************#
# DB2 に接続する。
with ibm_db2.connected() as conn:
# ブラウザからの入力値を受け取る。
params = bottle2.request.forms.decode()
txn_dlt_count = 0
# 各レコードについて繰り返す。
for i in range(len(params.getall('SRCODE'))):
if(params.getall('_CHK')[i] != 'on'):
continue
params['SRKAIT'] = int(params['SRKAIT'].replace(',', '')) # SRKAIT を数値に変換する
params['SRHLMT'] = int(params['SRHLMT'].replace(',', '')) # SRHLMT を数値に変換する
params['SRSIT'] = int(params['SRSIT'].replace(',', '')) # SRSIT を数値に変換する
params['SNEWDT'] = int(params['SNEWDT'].replace(',', '')) # SNEWDT を数値に変換する
params['SMITEG'] = int(params['SMITEG'].replace(',', '')) # SMITEG を数値に変換する
params['SRKEDT'] = int(params['SRKEDT'].replace(',', '')) # SRKEDT を数値に変換する
params['SRHDDT'] = int(params['SRHDDT'].replace(',', '')) # SRHDDT を数値に変換する
params['SROKDT'] = int(params['SROKDT'].replace(',', '')) # SROKDT を数値に変換する
params['SSIHON'] = int(params['SSIHON'].replace(',', '')) # SSIHON を数値に変換する
params['SNENSO'] = int(params['SNENSO'].replace(',', '')) # SNENSO を数値に変換する
params['SORITU'] = int(params['SORITU'].replace(',', '')) # SORITU を数値に変換する
params['SSHAIN'] = int(params['SSHAIN'].replace(',', '')) # SSHAIN を数値に変換する
params['SKESAN'] = int(params['SKESAN'].replace(',', '')) # SKESAN を数値に変換する
params['STOROK'] = int(params['STOROK'].replace(',', '')) # STOROK を数値に変換する
# SQL を組み立てる。
sql = '''
DELETE QTRFIL/SIREMT
WHERE SRCODE = ?
'''
stmt = ibm_db2.prepare(conn, sql);
ibm_db2.bind_param(stmt, 1, params['SRCODE']) # SRCODE を SQL にセットする
# SQL を実行する。
ibm_db2.execute(stmt)
global dlt_count
dlt_count += 1
txn_dlt_count += 1
# 初期画面に戻る
return bottle2.redirect('/init?' + urllib.parse.urlencode({
'MSG': '{} レコード削除しました '.format(txn_dlt_count),
}))
#*************************************************************#
# 終了画面
@bottle2.route('/end', method=["GET", "POST"]) # 終了処理
def end():
#*************************************************************#
# ブラウザからの入力値を受け取る。
params = bottle2.request.params.decode()
# 終了確認画面の HTML を表示する。
return bottle2.template('ENDOPT.HTM', {
'dspmod': dspmod,
'values': [params],
'add_count': add_count,
'chg_count': chg_count,
'dlt_count': dlt_count,
})
#*************************************************************#
@bottle2.route('/close', method=["POST"])
def close():
#*************************************************************#
# bottle を終了する。
bottle2.shutdown()
#*************************************************************#
@bottle2.route('/icon/') # アイコンの呼出し
def icon(path):
#*************************************************************#
return bottle2.static_file(path, '/PYTHON.400/ICON')
#*************************************************************#
# MAIN: 以下のルーチンが最初に実行されるメイン・ルーチンです。
#*************************************************************#
# 使用する HTML テンプレートの場所を宣言する。
HTM_DIR = os.path.dirname(os.path.abspath(__file__))
bottle2.TEMPLATE_PATH[:] = [HTM_DIR]
# HTTP サーバーを起動する。
bottle2.run(host='', port=8080, quiet=True)
[解説]
WSIRINQ:仕入先マスター照会もWSHOINQ:商品照会と基本的には同じです。
仕入先マスターは商品マスターに比べて圧倒的に項目数が多くなりますが
HTMLには横方向縦方向の制限がありませんので
5250エミュレータのような制約はありません。
従ってロール・アップ/ダウンなどの処理を書く必要もありません。
WSIRINQ:仕入先マスター照会ノロジックは WSHOINQ:商品マスター照会を
参考にして読み解いてみてください。