質問編集履歴

2

書式を改善しました。

2021/12/01 11:14

投稿

simatanuki
simatanuki

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,16 +1,4 @@
1
- 以下のコードで、データベースから読みだしたデータを一レコードずつ表示させる機能を実現したいと思っています。
2
-
3
- ここで、Sqliteのfetchoneを使ってプラス方向で一枚ずつめくっていくことはできるのですが、、、
4
-
5
- sqliteには戻る機能がないということで、webで「戻る機能を疑似的に実現するコード」を探してきて、実装しようとしました。
6
-
7
- が、、、動いてくれませんで。。。
1
+ ```python Sqlite3
8
-
9
-
10
-
11
- どうすれば、sqlite「一枚ずつ戻る」機能を実現できるのか、お分かりの方がいらっしゃいましたらお願いします。
12
-
13
-
14
2
 
15
3
  import tkinter
16
4
 
@@ -158,90 +146,28 @@
158
146
 
159
147
  application.mainloop()
160
148
 
149
+ ```
161
150
 
162
151
 
163
152
 
153
+ Sqliteの機能表に従って、
154
+
155
+ def btn_click2(self):
156
+
157
+ で関数を作成したのですが、、、
158
+
159
+ name 'scroll' is not defined
160
+
161
+ というエラーが出て、機能しません。
164
162
 
165
163
 
166
164
 
165
+ 該当するコード行は
166
+
167
- Sqliteのデータベースの内容を、一枚ずつ表示させる機能で、、、
167
+ row=scroll(-2, mode='relative'); self.c.fetchone()
168
+
169
+ です。
168
170
 
169
171
 
170
172
 
171
- def btn_click1(self):
172
-
173
- try:
174
-
175
- row=self.c.fetchone()
176
-
177
- except LookupError:
178
-
179
- self.lblStatus.configure(text="データはありません。")
180
-
181
- return
182
-
183
-
184
-
185
- if row != None:
186
-
187
- self.lbl1.configure(text="ID:"+str(row[0]))
188
-
189
- self.lbl2.configure(text="品名:"+row[1])
190
-
191
- self.lbl3.configure(text="価格:"+str(row[2]))
192
-
193
- else:
194
-
195
- self.lblStatus.configure(text="データはありません。")
196
-
197
-
198
-
199
- で、一枚ずつ前向きに表示させていくことはできるのですが、、、
200
-
201
-
202
-
203
- def btn_click2(self):# print="Display pre Data
204
-
205
- try:
206
-
207
- row=scroll(-2, mode='relative');self.c.fetchone()
208
-
209
- except LookupError:
210
-
211
- self.lblStatus.configure(text="データはありません。")
212
-
213
- return
214
-
215
-
216
-
217
- if row != None:
218
-
219
- self.lbl1.configure(text="ID:"+str(row[0]))
220
-
221
- self.lbl2.configure(text="品名:"+str(row[1]))
222
-
223
- self.lbl3.configure(text="価格:"+str(row[2]))
224
-
225
- else:
226
-
227
- self.lblStatus.configure(text="データはありません。")
228
-
229
-
230
-
231
- で戻らせようとすると、scroll is notdefined というエラーが出てしまいます。
232
-
233
-
234
-
235
- 以下の表をもとに作ってみたのですが、、、どうすればよいのかわかりませんで、、、
236
-
237
-
238
-
239
- お分かりの方がいらっしゃいましたら、ぜひお知恵をお貸しください。
173
+ 修正すべき点について、ご指摘いただける方がいらっしゃいましたら、どうぞよろしくお願いたします
240
-
241
-
242
-
243
- どうぞよろしくお願いいたします。
244
-
245
-
246
-
247
- ![イメージ説明](922483dda1676d9b2701368afa3bb057.png)

1

ソースコードの追加・質問を詳細に説明

2021/12/01 11:14

投稿

simatanuki
simatanuki

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,169 @@
1
+ 以下のコードで、データベースから読みだしたデータを一レコードずつ表示させる機能を実現したいと思っています。
2
+
3
+ ここで、Sqliteのfetchoneを使ってプラス方向で一枚ずつめくっていくことはできるのですが、、、
4
+
5
+ sqliteには戻る機能がないということで、webで「戻る機能を疑似的に実現するコード」を探してきて、実装しようとしました。
6
+
7
+ が、、、動いてくれませんで。。。
8
+
9
+
10
+
11
+ どうすれば、sqlite「一枚ずつ戻る」機能を実現できるのか、お分かりの方がいらっしゃいましたらお願いします。
12
+
13
+
14
+
15
+ import tkinter
16
+
17
+ import sqlite3
18
+
19
+
20
+
21
+ class MainWindow(tkinter.Frame):
22
+
23
+ def __init__(self,parent):
24
+
25
+ super(MainWindow, self).__init__(parent)
26
+
27
+ self.parent = parent
28
+
29
+ self.grid(row=0, column=0)
30
+
31
+
32
+
33
+ self.lbl1=tkinter.Label(self, text="ID", width=23, relief=tkinter.SUNKEN)
34
+
35
+ self.lbl2=tkinter.Label(self, text="品名", width=23, relief=tkinter.SUNKEN)
36
+
37
+ self.lbl3=tkinter.Label(self, text="価格", width=23, relief=tkinter.SUNKEN)
38
+
39
+
40
+
41
+
42
+
43
+ self.btn1=tkinter.Button(self, text='次のレコード', command=self.btn_click1)
44
+
45
+ self.btn2=tkinter.Button(self, text='前のレコード', command=self.btn_click2)
46
+
47
+ self.lblStatus=tkinter.Label(self, text="", width=23, relief=tkinter.SUNKEN)
48
+
49
+
50
+
51
+ self.lbl1.pack(padx=2, pady=2)
52
+
53
+ self.lbl2.pack(padx=2, pady=2)
54
+
55
+ self.lbl3.pack(padx=2, pady=2)
56
+
57
+
58
+
59
+ self.btn1.pack(padx=2, pady=2)
60
+
61
+ self.btn2.pack(padx=0, pady=4)
62
+
63
+
64
+
65
+ self.lblStatus.pack(padx=2, pady=2)
66
+
67
+
68
+
69
+ self.conn=sqlite3.connect("Sample.db")
70
+
71
+ self.lblStatus.configure(text="Sample.dbを開きました。")
72
+
73
+ self.c=self.conn.execute("select * from Fruit")
74
+
75
+ self.btn1.focus_set()
76
+
77
+ self.btn2.focus_set()
78
+
79
+
80
+
81
+ def btn_click1(self):
82
+
83
+ try:
84
+
85
+ row=self.c.fetchone()
86
+
87
+ except LookupError:
88
+
89
+ self.lblStatus.configure(text="データはありません。")
90
+
91
+ return
92
+
93
+
94
+
95
+ if row != None:
96
+
97
+ self.lbl1.configure(text="ID:"+str(row[0]))
98
+
99
+ self.lbl2.configure(text="品名:"+row[1])
100
+
101
+ self.lbl3.configure(text="価格:"+str(row[2]))
102
+
103
+ else:
104
+
105
+ self.lblStatus.configure(text="データはありません。")
106
+
107
+ #---------------------------------------------------------------
108
+
109
+ def btn_click2(self):# print="Display pre Data
110
+
111
+ try:
112
+
113
+ row=scroll(-2, mode='relative'); self.c.fetchone()
114
+
115
+ except LookupError:
116
+
117
+ self.lblStatus.configure(text="データはありません。")
118
+
119
+ return
120
+
121
+
122
+
123
+ if row != None:
124
+
125
+ self.lbl1.configure(text="ID:"+str(row[0]))
126
+
127
+ self.lbl2.configure(text="品名:"+str(row[1]))
128
+
129
+ self.lbl3.configure(text="価格:"+str(row[2]))
130
+
131
+ else:
132
+
133
+ self.lblStatus.configure(text="データはありません。")
134
+
135
+
136
+
137
+ #---------------------------------------------------------------
138
+
139
+ def quit(self,event=None):
140
+
141
+ self.conn.close()
142
+
143
+ self.parent.destroy()
144
+
145
+
146
+
147
+ application = tkinter.Tk()
148
+
149
+ application.title('dispFruit')
150
+
151
+ window = MainWindow(application)
152
+
153
+
154
+
155
+ application.protocol('WM_DELETE_WINDOW, window.quit')
156
+
157
+
158
+
159
+ application.mainloop()
160
+
161
+
162
+
163
+
164
+
165
+
166
+
1
167
  Sqliteのデータベースの内容を、一枚ずつ表示させる機能で、、、
2
168
 
3
169