Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
 Аватар для крутой малай
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 71

Перенос базы данных Sql на MS access

29.05.2017, 15:54. Показов 4740. Ответов 64
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте ребят.Такая проблемка после экспорта базы данных с sql на акссес программа на (Delphi) выдает ошибки .Подскажите как быть.Вот непосредственно сам архив.проект.7z
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.05.2017, 15:54
Ответы с готовыми решениями:

Перенос БД Access 2k3 на MS SQL SERVER
Суть в том, что имеется программа, написанная на Delphi 7, использующая БД Access. Необходимо перенести ее на MSSQL Server. Вопрос -...

Перенос данных из одной базы данных в другую
Здравствуйте, форумчане! Есть одна БД (Absolute Database *.abs), подключил её к Delphi с помощью специальный инструментов ABSQurey...

Перенос данных из Excel в две таблицы баз данных SQL-Server
Люди добрые помогите пожалуйста. Есть таблица Excel, я сделал перенос всех данных из нее в таблицу SQL-Server. Нужно, чтобы паралельно...

64
 Аватар для крутой малай
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 71
30.05.2017, 23:29  [ТС]
Студворк — интернет-сервис помощи студентам
YuryK, что скажете?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
31.05.2017, 00:39
похоже это и впрямь из-за resolution, т.к. после переоткрытия peopds
Delphi
1
2
   peopds.Active:=false;
   peopds.Active:=true;
RecordCount c 1 сбрасывается в 0

Значит не стоит при вставке в счетчик ставить 0, а надо перечислить поля записи без счетчика, о чем я сказал ещё в #16
0
 Аватар для крутой малай
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 71
31.05.2017, 08:40  [ТС]
Цитата Сообщение от YuryK Посмотреть сообщение
у вас же в cities наверняка не одно поле, укажите имя того поля, чьё значение стоит в VALUES
SQLВыделить код
1
INSERT INTO cities(<имя поля>) VALUES(...)
YuryK, то есть ? Направьте меня на правильный путь
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
31.05.2017, 08:49
В cities 2 поля, 1-ое счетчик, поэтому при вставке нельзя указывать, ибо с нулем не получилось, поэтому вместо
SQL
1
INSERT INTO cities VALUES(0, <название города>)
нужно использовать
SQL
1
INSERT INTO cities (cname) VALUES(<название города>)
так же и при вставке в другие таблицы с полем счетчиком

Добавлено через 3 минуты
И все-таки расставьте в базе ключи и организуйте связи, это по-крайней мере, должно обеспечить целостность данных и не позволит появиться в resolution кучи записей с 0-м Id-ом
0
 Аватар для крутой малай
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 71
31.05.2017, 09:26  [ТС]
YuryK,
Цитата Сообщение от YuryK Посмотреть сообщение
SQLВыделить код
1
INSERT INTO cities (cname) VALUES(<название города>)
вот я туплю .Не могу найти где это
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
31.05.2017, 10:53
строка 420
тоже касается и других INSERT

Search > Find in files [INSERT] X search in all files of proect
0
 Аватар для крутой малай
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 71
31.05.2017, 11:00  [ТС]
YuryK, Это получается на 1 Форме?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
procedure TForm1.FormShow(Sender: TObject);
var i:integer; t:systemtime; sdate:string;
begin
 art.Text:='';
 regnum.Text:='';
 getsystemtime(t);
 sdate:=inttostr(t.wDay)+'.'+inttostr(t.wMonth)+'.'+inttostr(t.wYear);
 regdate.Date:=strtodate(sdate);
 date.Date:=strtodate(sdate);
 todate.Date:=strtodate(sdate);
 pcity.Items.Clear;
 peoples.cur:=1;
 peoples.count:=0;
 pfname.Items.Clear;
 pfname.Text:='';
 pnname.Items.Clear;
 pnname.Text:='';
 poname.Items.Clear;
 poname.Text:='';
 pwb.Text:='';
 pcity.Text:='';
 padr.Text:='';
 rgfname.Items.Clear;
 rgfname.Text:='';
 rgnoname.Items.Clear;
 rgnoname.Text:='';
 orgadr.Text:='';
 orgname.Items.Clear;
 orgname.Text:='';
 stat.Items.Clear;
 stat.Text:='';
 kind.Active:=false;
 kind.Active:=true;
 
 peopds.Filtered:=false;
 peopds.Active:=false;
 peopds.CommandText:='select * from peoples';//, cities where peoples.pcid=cities.cid and cities.cname='+quotedstr(pcity.Text);
 peopds.Active:=true;
 for i:=1 to peopds.RecordCount do
  begin
   pfname.Items.Add(peopds.Recordset.Fields[1].get_value());
   peopds.Next
  end;
 
 for i:=1 to kind.RecordCount do
  begin
   stat.Items.Add(kind.Recordset.Fields[1].get_value());
   kind.Next
  end;
 adtorg.Active:=false;
 adtorg.Active:=true;
 adtorg.Filter:='otype='+quotedstr(inttostr(form2.kind.ItemIndex));
 adtorg.Filtered:=true;
 for i:=1 to adtorg.RecordCount do
  begin
   orgname.Items.Add(adtorg.Recordset.fields[1].get_value());
   adtorg.Next
  end;
 adtc.Active:=false;
 adtc.Active:=true;
 for i:=1 to adtc.RecordCount do
  begin
   pcity.Items.Add(adtc.Recordset.Fields[1].get_value());
   adtc.Next
  end
end;
 
procedure TForm1.orgnameChange(Sender: TObject);
var i:integer;
begin
 rgfname.Items.Clear;
 rgfname.Text:='';
 rgnoname.Items.Clear;
 rgnoname.Text:='';
 orgadr.Text:='';
 adtorg.Filtered:=false;
 adtorg.Filter:='otype='+quotedstr(inttostr(form2.kind.ItemIndex))+' and oname='+quotedstr(orgname.Text);
 adtorg.Filtered:=true;
 if adtorg.RecordCount>0 then orgadr.Text:=adtorg.Recordset.Fields[3].get_value();
 rgds.Active:=false;
 rgds.CommandText:='select res_givers.rgfname, res_givers.rgnoname from res_givers, organs where res_givers.rgorg=organs.oid and organs.oname='+quotedstr(orgname.Text);
 rgds.Active:=true;
 if rgds.RecordCount>0 then
  begin
{   rgfname.Text:=rgds.Recordset.Fields[0].get_value();
   rgnoname.Text:=rgds.Recordset.Fields[1].get_value();}
   for i:=1 to rgds.RecordCount do
    begin
     rgfname.Items.Add(rgds.Recordset.Fields[0].get_value());
     rgnoname.Items.Add(rgds.Recordset.Fields[1].get_value());
     rgds.Next
    end
  end
end;
 
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
 if peoples.cur=1 then //messagedlg('Ïîçàäè Ìîñêâà!',mtwarning,[mbok],0)
  else
   begin
    peoples.cur:=peoples.cur-1;
    pfname.Text:=peoples.p[peoples.cur].fname;
    pnname.Text:=peoples.p[peoples.cur].nname;
    poname.Text:=peoples.p[peoples.cur].oname;
    pwb.Text:=inttostr(peoples.p[peoples.cur].ywb);
    pcity.Text:=peoples.p[peoples.cur].city;
    padr.Text:=peoples.p[peoples.cur].adress;
    stat.Text:=peoples.p[peoples.cur].stat
   end
end;
 
procedure TForm1.ToolButton2Click(Sender: TObject);
begin
 if peoples.cur=peoples.count+1 then //messagedlg('Âïåðåäè òóìàí, êàïèòàí!',mtwarning,[mbok],0)
  else
   begin
    peoples.cur:=peoples.cur+1;
    pfname.Text:=peoples.p[peoples.cur].fname;
    pnname.Text:=peoples.p[peoples.cur].nname;
    poname.Text:=peoples.p[peoples.cur].oname;
    pwb.Text:=inttostr(peoples.p[peoples.cur].ywb);
    pcity.Text:=peoples.p[peoples.cur].city;
    padr.Text:=peoples.p[peoples.cur].adress;
    stat.Text:=peoples.p[peoples.cur].stat    
   end
end;
 
procedure TForm1.ToolButton3Click(Sender: TObject);
begin
 if (pfname.Text<>'') and (pnname.Text<>'') and (poname.Text<>'') and (pwb.Text<>'') and (pcity.Text<>'') and (padr.Text<>'') then
  begin
   peoples.cur:=peoples.count+1;
   peoples.count:=peoples.count+1;
   peoples.p[peoples.cur].fname:=pfname.Text;
   peoples.p[peoples.cur].nname:=pnname.Text;
   peoples.p[peoples.cur].oname:=poname.Text;
   peoples.p[peoples.cur].ywb:=strtoint(pwb.Text);
   peoples.p[peoples.cur].city:=pcity.Text;
   peoples.p[peoples.cur].adress:=padr.Text;
   peoples.p[peoples.cur].stat:=stat.Text;
   pfname.Text:='';
   pnname.Text:='';
   poname.Text:='';
   pwb.Text:='';
   pcity.Text:='';
   padr.Text:='';
   stat.Text:='';
   peoples.cur:=peoples.cur+1
  end
  else messagedlg('Çàïîëíåíû íå âñå ïîëÿ. Ñîõðàíåíèå íåâîçìîæíî.',mterror,[mbok],0)
end;
 
procedure TForm1.ToolButton4Click(Sender: TObject);
var i:integer;
begin
 if peoples.count=0 then
  begin
   messagedlg('',mterror,[mbok],0);
   exit
  end;
 for i:=peoples.cur to peoples.count do
  peoples.p[i]:=peoples.p[i+1];
 peoples.count:=peoples.count-1;
 pfname.Text:=peoples.p[peoples.cur].fname;
 pnname.Text:=peoples.p[peoples.cur].nname;
 poname.Text:=peoples.p[peoples.cur].oname;
 pwb.Text:=inttostr(peoples.p[peoples.cur].ywb);
 pcity.Text:=peoples.p[peoples.cur].city;
 padr.Text:=peoples.p[peoples.cur].adress;
 stat.Text:=peoples.p[peoples.cur].stat 
end;
 
procedure TForm1.pcityChange(Sender: TObject);
var i:integer;
begin
{ pfname.Text:='';
 pnname.Text:='';
 poname.Text:='';
 pwb.Text:='';
 padr.Text:='';}
 peopds.Filtered:=false;
 peopds.Active:=false;
 peopds.CommandText:='select * from peoples';//, cities where peoples.pcid=cities.cid and cities.cname='+quotedstr(pcity.Text);
 peopds.Active:=true;
 for i:=1 to peopds.RecordCount do
  begin
   pfname.Items.Add(peopds.Recordset.Fields[1].get_value());
   peopds.Next
  end
end;
 
procedure TForm1.pfnameChange(Sender: TObject);
var i:integer;
begin
{ if pcity.Text='' then
  begin
   messagedlg('',mterror,[mbok],0);
   exit
  end;
 pnname.Items.Clear;
 pnname.Text:='';
 poname.Items.Clear;
 poname.Text:='';
 pwb.Text:='';
 padr.Text:='';}
 peopds.Filtered:=false;
 peopds.Filter:='pfname='+quotedstr(pfname.Text);
 peopds.Filtered:=true;
 peopds.First;
 if peopds.RecordCount>0 then
  begin
   pnname.Text:=peopds.Recordset.Fields[2].get_value();
   poname.Text:=peopds.Recordset.Fields[3].get_value();
   pwb.Text:=inttostr(peopds.Recordset.Fields[4].get_value());
   padr.Text:=VarToStr(peopds.Recordset.Fields[6].get_value());
  end;
 for i:=1 to peopds.RecordCount do
  begin
   pnname.Items.Add(peopds.Recordset.Fields[2].get_value());
   poname.Items.Add(peopds.Recordset.Fields[3].get_value());
   peopds.Next
  end
end;
 
procedure TForm1.BitBtn2Click(Sender: TObject);
var i:integer;
begin
 if orgname.Text='' then
  begin
   messagedlg('Íå âñå ïîëÿ çàïîëíåíû. Ñîõðàíåíèå íåâîçìîæíî',mterror,[mbok],0);
   exit
  end;
 if rgfname.Text='' then
  begin
   messagedlg('Íå âñå ïîëÿ çàïîëíåíû. Ñîõðàíåíèå íåâîçìîæíî',mterror,[mbok],0);
   exit
  end;
 if rgnoname.Text='' then
  begin
   messagedlg('Íå âñå ïîëÿ çàïîëíåíû. Ñîõðàíåíèå íåâîçìîæíî',mterror,[mbok],0);
   exit
  end;
 if orgadr.Text='' then
  begin
   messagedlg('Íå âñå ïîëÿ çàïîëíåíû. Ñîõðàíåíèå íåâîçìîæíî',mterror,[mbok],0);
   exit
  end;
 if regnum.Text='' then
  begin
   messagedlg('Íå âñå ïîëÿ çàïîëíåíû. Ñîõðàíåíèå íåâîçìîæíî',mterror,[mbok],0);
   exit
  end;
 if peoples.count=0 then
  begin
   messagedlg('Íå âñå ïîëÿ çàïîëíåíû. Ñîõðàíåíèå íåâîçìîæíî',mterror,[mbok],0);
   exit
  end;
 if art.Text='' then
  begin
   messagedlg('Íå âñå ïîëÿ çàïîëíåíû. Ñîõðàíåíèå íåâîçìîæíî',mterror,[mbok],0);
   exit
  end;
 
 ads.Active:=false;
 ads.CommandText:='select * from organs where organs.oname='+quotedstr(orgname.Text);
 ads.Active:=true;
 if ads.RecordCount=0 then
  begin
   form3.eoname.Text:=orgname.Text;
   form3.showmodal
  end;
 ads.Active:=false;
 ads.CommandText:='select * from res_givers, organs where res_givers.rgfname='+quotedstr(rgfname.Text)+' and res_givers.rgnoname='+quotedstr(rgnoname.Text)+' and res_givers.rgorg=organs.oid and organs.oname='+quotedstr(orgname.Text);
 ads.Active:=true;
 if ads.RecordCount=0 then
  begin
   ads.Active:=false;
   ads.CommandText:='select * from organs where organs.oname='+quotedstr(orgname.Text);
   ads.Active:=true;
   adc.CommandText:='insert into res_givers values('+quotedstr(ads.Recordset.Fields[0].get_value)+', '+quotedstr(rgfname.Text)+', '+quotedstr(rgnoname.Text)+')';
   adc.Execute
  end;
 peopds.Active:=false;
 peopds.Filtered:=false;
 peopds.CommandText:='select * from resolution where rregnum='+quotedstr(regnum.Text)+' and rregdate>=:date';
peopds.Parameters.ParamByName('date').DataType := ftDate;
peopds.Parameters.ParamByName('date').Value := regdate.Date;
peopds.Active:=true;
 if peopds.RecordCount=0 then
  begin
   ads.Active:=false;
   ads.CommandText:='select * from res_givers, organs where res_givers.rgfname='+quotedstr(rgfname.Text)+' and res_givers.rgnoname='+quotedstr(rgnoname.Text)+' and res_givers.rgorg=organs.oid and organs.oname='+quotedstr(orgname.Text);
   ads.Active:=true;
   adc.CommandText:='insert into resolution values(' + quotedstr(ads.Recordset.Fields[0].get_value())+', '+quotedstr(art.Text)+', '+quotedstr(regnum.Text)+', :date1, :date2, :date3, :time, ' + quotedstr(floattostr(0))+')';
   adc.Parameters.ParamByName('date1').DataType := ftDate;
   adc.Parameters.ParamByName('date1').Value := regdate.Date;
   adc.Parameters.ParamByName('date2').DataType := ftDate;
   adc.Parameters.ParamByName('date2').Value := date.Date;
   adc.Parameters.ParamByName('date3').DataType := ftDate;
   adc.Parameters.ParamByName('date3').Value := todate.Date;
   adc.Parameters.ParamByName('time').DataType := ftTime;
   adc.Parameters.ParamByName('time').Value := totime.Time;
   adc.Execute
  end;
 for i:=1 to peoples.count do
  begin
   rgds.Active:=false;
   rgds.CommandText:='select * from cities where cname='+quotedstr(peoples.p[i].city);
   rgds.Active:=true;
   if rgds.RecordCount=0 then
    begin
     adc.CommandText:='insert into cities values('+quotedstr(peoples.p[i].city)+')';
     adc.Execute;
     rgds.Active:=false;
     rgds.Active:=true
    end;
   ads.active:=false;
   ads.CommandText:='select * from peoples where pfname='+quotedstr(peoples.p[i].fname)+' and pnname='+quotedstr(peoples.p[i].nname)+' and poname='+quotedstr(peoples.p[i].oname)+' and pwasborn='+inttostr(peoples.p[i].ywb);
   ads.active:=true;
   if ads.RecordCount=0 then
    begin
     adc.CommandText:='insert into peoples values('+quotedstr(peoples.p[i].fname)+', '+quotedstr(peoples.p[i].nname)+', '+quotedstr(peoples.p[i].oname)+', '+inttostr(peoples.p[i].ywb)+', '+quotedstr(rgds.Recordset.Fields[0].get_value())+', '+quotedstr(peoples.p[i].adress)+')';
     adc.Execute;
     ads.Active:=false;
     ads.Active:=true
    end;
   kind.Filter:='sname='+quotedstr(peoples.p[i].stat);
   kind.Filtered:=true;
   if kind.RecordCount=0 then
    begin
     adc.CommandText:='insert into stat values('+quotedstr(peoples.p[i].stat)+')';
     adc.Execute;
     kind.Active:=false;
     kind.Active:=true
    end;
   peopds.Active:=false;
   peopds.Active:=true;
   adc.CommandText:='insert into who_why values('+quotedstr(peopds.Recordset.Fields[0].get_value())+', '+quotedstr(ads.Recordset.Fields[0].get_value())+', '+quotedstr(kind.Recordset.Fields[0].get_value())+')';
   adc.Execute;
   kind.Filtered:=false
  end;
 form1.Close
end;
 
procedure TForm1.rgfnameChange(Sender: TObject);
begin
 rgds.Filter:='rgfname='+quotedstr(rgfname.Text);
 rgds.Filtered:=true;
 if rgds.RecordCount=1 then rgnoname.Text:=rgds.Recordset.Fields[1].get_value();
 rgds.Filtered:=false
end;
 
end.
.тыкните мне пожалуйста в то место
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
31.05.2017, 11:07
на первой
Миниатюры
Перенос базы данных Sql  на MS access  
0
 Аватар для крутой малай
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 71
31.05.2017, 11:54  [ТС]
YuryK,
Delphi
1
2
3
4
adc.CommandText:='insert into cities values('+quotedstr(peoples.p[i].city)+')';
     adc.Execute;
     rgds.Active:=false;
     rgds.Active:=true
то есть нужно
Delphi
1
2
adc.CommandText:='insert into cities (cname) values('+quotedstr(peoples.p[i].city)+')';
     adc.Execute;
или?
Delphi
1
2
adc.CommandText:='insert into cities (cname) VALUES(<название города>); 
     adc.Execute;
?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
31.05.2017, 11:58
второе. третье как схема. а первое просто не пройдет.

P.S. Если такие сложности вызывает портирование а аксесс, может лучше на MS SQL остаться?
0
 Аватар для крутой малай
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 71
31.05.2017, 12:00  [ТС]
YuryK, Мне препод сказал переписать на акссес .(.Ну подскажите вот одну как прописать .остальное пходу разберусь
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
31.05.2017, 14:14
Цитата Сообщение от крутой малай Посмотреть сообщение
adc.CommandText:='insert into cities (cname) values('+quotedstr(peoples.p[i].city)+')';
* * *adc.Execute;
так

Добавлено через 15 секунд
Цитата Сообщение от крутой малай Посмотреть сообщение
adc.CommandText:='insert into cities (cname) values('+quotedstr(peoples.p[i].city)+')';
* * *adc.Execute;
так
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
31.05.2017, 21:07
О, как много тут понаписали
Да, насчет подсовывания 0 вместо значения счетчика - был не прав, не проверил. Я как-то был уверен, что извне значение счетчика менять просто нельзя, оказывается запросто. Покопался в инете по этой темке и в общем-то не нашел ни одного нормального решения без перечисления полей. Так-что придется все запросы на добавление переписать, как советует YuryK.
0
 Аватар для крутой малай
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 71
31.05.2017, 21:18  [ТС]
Пытливый, я тут тоже что то нашел .В бд все добавляется в таблицу resolution ,вполе rid все по счетчику .но в итоге все равно ошибку кидает
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
01.06.2017, 01:02
залей свежую версию проекта и базы
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
01.06.2017, 04:22
Ошибки у вас разные, а вы пытаетесь одно лекарство применить везде - пациент скорее помрет, чем выживет при таком подходе.
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
01.06.2017, 06:12
Цитата Сообщение от Пытливый Посмотреть сообщение
Ошибки у вас разные
где? Все выявленные ошибки были со вставкой новых записей в таблицу. Понятно, что все приложение - большая ошибка, но на то была воля божья. Аминь!
0
 Аватар для крутой малай
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 71
01.06.2017, 16:04  [ТС]
YuryK, Со всем этим я разобрался .Теперь проблемка на 5 форме .Программа не видит записи в бд
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
procedure tform5.getinfo;
var str:string; i,j,q:integer;
begin
{ cr.CommandText:='drop table tmp';
 cr.Execute;
 cr.CommandText:='create table tmp (num int not null, t datetime not null, org varchar(30) not null, rg varchar(30) not null, col int not null, ex varchar(100) not null)';
 cr.Execute;}
 post.Active:=false;
 post.Filtered:=false;
 str:='';
 str:=datetostr(curdat.date);
 post.CommandText:='select resolution.rid, resolution.rregnum, resolution.rtotime, organs.oname, res_givers.rgfname from resolution, organs, res_givers where resolution.rtodate=:date'+
                   ' and resolution.rrgid=res_givers.rgid and res_givers.rgorg=organs.oid order by rtotime';
 post.Parameters.ParamByName('date').DataType := ftDate;
 post.Parameters.ParamByName('date').Value := curdat.date;
 post.Active:=true;       // âñå ïîñòàíîâëåíèÿ ñ òåêóùåé äàòîé èñïîëíåíèÿ
 if post.RecordCount>0 then data.RowCount:=post.RecordCount+1
  else data.RowCount:=post.RecordCount+2;
 for i:=1 to data.RowCount do
  data.Rows[i].Clear;
 data.Cells[0,0]:='Íîìåð';
 data.Cells[1,0]:='Âðåìÿ';
 data.Cells[2,0]:='Êóäà';
 data.Cells[3,0]:='Êîìó';
 data.Cells[4,0]:='Ñêîëüêî';
 data.Cells[5,0]:='Èñïîëíèòåëü';
 qpriv.Caption:=inttostr(post.RecordCount);
   oupdsniki.Active:=false;
   oupdsniki.CommandText:='select soldiers.sfname, resolution.rid from soldiers, who_whom_why, resolution where resolution.rid=who_whom_why.wwwrid and who_whom_why.wwwsid=soldiers.sid';
   oupdsniki.Active:=true;
   bludi.Active:=false;
   bludi.CommandText:='select peoples.pfname, resolution.rid from peoples, who_why, resolution where peoples.pid=who_why.wwpid and who_why.wwrid=resolution.rid';
   bludi.Active:=true;
 
 for i:=1 to post.RecordCount do
  begin
   bludi.Filtered:=false;
   bludi.Filter:='rid='+quotedstr(post.Recordset.Fields[0].get_value());
   bludi.Filtered:=true;
   q:=bludi.RecordCount;
   oupdsniki.Filtered:=false;
   oupdsniki.Filter:='rid='+quotedstr(post.Recordset.Fields[0].get_value());
   oupdsniki.Filtered:=true;
   str:='';
   for j:=1 to oupdsniki.RecordCount do
    begin
     str:=str+oupdsniki.Recordset.Fields[0].get_value()+' ';
     oupdsniki.Next
    end;
 
 
//
//   cr.CommandText:='insert into tmp values('+quotedstr(post.Recordset.Fields[1].get_value())+', '+quotedstr(post.Recordset.Fields[2].get_value())+', '+quotedstr(post.Recordset.Fields[3].get_value())+', '+quotedstr(post.Recordset.Fields[4].get_value())+', '+quotedstr(inttostr(q))+', '+quotedstr(str)+')';
//   cr.Execute;
 
   data.Cells[0,i]:=post.Recordset.Fields[1].get_value();
//   dtp.date:=post.Recordset.Fields[2].get_value();
   data.Cells[1,i]:=timetostr(post.Recordset.Fields[2].get_value());
   data.Cells[2,i]:=post.Recordset.Fields[3].get_value();
   data.Cells[3,i]:=post.Recordset.Fields[4].get_value();
   data.Cells[4,i]:=inttostr(q);
   data.Cells[5,i]:=str;
 
 
   post.Next
  end;
// adt.Active:=false;
// adt.Active:=true;
 
end;
 
procedure TForm5.FormShow(Sender: TObject);
var t:systemtime; str:string; i:integer;
begin
 adt.Active:=false;
 adt.filtered:=false;
 adt.Active:=true;
 bdol.Clear;
 for i:=1 to adt.RecordCount do
  begin
   bdol.Items.Add(adt.Recordset.Fields[1].get_value());
   adt.Next
  end;
 bfname.Clear;
 bnname.Clear;
 boname.Clear;
 sol.Active:=false;
 sol.filtered:=false;
 sol.CommandText:='select * from soldiers';
 sol.Active:=true;
 for i:=1 to sol.RecordCount do
  begin
   bfname.Items.Add(sol.Recordset.Fields[1].get_value());
   sol.Next
  end;
 getsystemtime(t);
 str:='';
 str:=inttostr(t.wDay)+'.'+inttostr(t.wMonth)+'.'+inttostr(t.wYear);
 curdat.Date:=strtodate(str);
 getinfo
end;
 
procedure TForm5.curdatChange(Sender: TObject);
begin
 getinfo
end;
 
procedure TForm5.bfnameChange(Sender: TObject);
var i:integer;
begin
 bdol.Text:='';
 bnname.Clear;
 boname.Clear;
 sol.Filtered:=false;
 sol.Filter:='sfname='+quotedstr(bfname.Text);
 sol.Filtered:=true;
 if sol.RecordCount=1 then
  begin
   bnname.Text:=sol.Recordset.Fields[2].get_value();
   boname.Text:=sol.Recordset.Fields[3].get_value()
  end;
 for i:=1 to sol.RecordCount do
  begin
   bnname.Items.Add(sol.Recordset.Fields[2].get_value());
   sol.Next
  end;
 sol.Filtered:=false
end;
 
procedure TForm5.bnnameChange(Sender: TObject);
begin
 boname.Clear;
 bdol.Text:='';
 sol.Filtered:=false;
 sol.Filter:='sfname='+quotedstr(bfname.Text)+' and snname='+quotedstr(bnname.Text);
 sol.Filtered:=true;
 if sol.RecordCount=1 then boname.Text:=sol.Recordset.Fields[3].get_value();
 sol.Filtered:=false
end;
 
procedure TForm5.ToolButton1Click(Sender: TObject);
begin
 if bfname.Text='' then
  begin
   messagedlg('Íå âñå ïîëÿ çàïîëíåíû. Ñîõðàíåíèå íåâîçìîæíî.',mterror,[mbok],0);
   exit
  end;
 if bnname.Text='' then
  begin
   messagedlg('Íå âñå ïîëÿ çàïîëíåíû. Ñîõðàíåíèå íåâîçìîæíî.',mterror,[mbok],0);
   exit
  end;
 if boname.Text='' then
  begin
   messagedlg('Íå âñå ïîëÿ çàïîëíåíû. Ñîõðàíåíèå íåâîçìîæíî.',mterror,[mbok],0);
   exit
  end;
 if bdol.Text='' then
  begin
   messagedlg('Íå âñå ïîëÿ çàïîëíåíû. Ñîõðàíåíèå íåâîçìîæíî.',mterror,[mbok],0);
   exit
  end;
 
 post.Filtered:=false;
 post.Filter:='rregnum='+quotedstr(data.Cells[0,data.Row]);
 post.Filtered:=true;
 adt.Filtered:=false;
 adt.Filter:='dtype='+quotedstr(bdol.Text);
 adt.Filtered:=true;
 if adt.RecordCount=0 then
  begin
   cr.CommandText:='insert into dol (dtype) values('+quotedstr(bdol.Text)+')';
   cr.Execute;
   adt.Active:=false;
   adt.Active:=true;
  end;
 sol.Filtered:=true;
 if sol.RecordCount=0 then
  begin
   cr.CommandText:='insert into soldiers (sfname,snname,soname) values('+quotedstr(bfname.Text)+', '+quotedstr(bnname.Text)+', '+quotedstr(boname.Text)+')';
   cr.Execute;
   sol.Active:=false;
   sol.Active:=true
  end;
 bludi.Active:=false;
 bludi.Filtered:=false;
 bludi.CommandText:='select * from who_whom_why where wwwsid='+quotedstr(sol.Recordset.Fields[0].get_value())+' and wwwdid='+quotedstr(adt.Recordset.Fields[0].get_value())+' and wwwrid='+quotedstr(post.Recordset.Fields[0].get_value());
 bludi.Active:=true;
 if bludi.RecordCount=0 then
  begin
 
  end;
 data.Cells[5,data.Row]:=data.Cells[5,data.Row]+bfname.Text+' ';
 bfname.Text:='';
 bnname.Clear;
 boname.Clear;
 bdol.Text:=''
end;
 
procedure TForm5.ToolButton2Click(Sender: TObject);
begin
 bfname.Text:='';
 bnname.Clear;
 boname.Clear;
 bdol.Text:=''
end;
 
procedure TForm5.ToolButton3Click(Sender: TObject);
begin
 post.Filtered:=false;
 post.Filter:='rregnum='+quotedstr(data.Cells[0,data.Row]);
 post.Filtered:=true;
 cr.CommandText:='delete from who_whom_why where wwwrid='+quotedstr(post.Recordset.Fields[0].get_value());
 cr.Execute;
 data.Cells[5,data.Row]:='';
 bfname.Text:='';
 bnname.Clear;
 boname.Clear;
 bdol.Text:=''
end;
0
 Аватар для крутой малай
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 71
01.06.2017, 23:55  [ТС]
Что это может быть?

Добавлено через 32 минуты
YuryK, Проблема разрешилась .всем спасибо)

Добавлено через 7 часов 18 минут
YuryK,Можете базу глянуть?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
02.06.2017, 00:03
Цитата Сообщение от крутой малай Посмотреть сообщение
Можете базу глянуть?
Странная проблема. С нею любой справится
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.06.2017, 00:03

Перенос базы данных Firebird
Здравствуйте, уважаемые форумчане! Помогите пожалуйста с решением следующей проблемы. На своём компьютере разработал программу для работы...

Перенос данных из базы ClientDataSet в Table
Помогите новичку перенести данные из базы ClientDataSet в Table также подскажите каким образом узнать количество записей в ClientDataSet

Перенос данных из одной базы в другую
Всем салам! Проблема такая, надо чтобы при нажатии на кнопку удаление из dbgrida удалялся нужный пункт и сразу заносился в другой, как...

Перенос базы из Access на SQL Server
кто может помочь переместить базу с Access на SQL Server 2008? а то я пробую и вечно пишет что у меня версия якобы ниже 2006 или вообще не...

Перенос базы Access в SQL Server
начало здесь https://www.cyberforum.ru/ms-access/thread87179-page2.html Сергей1980, ты как я понимаю знаешь как делать перенос базы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru