![]() |
|
|
![]()
|
|
| Иван09 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.6.2011 Репутация: нет Всего: нет |
Пожалуйста, помогите, 2 процедуры, одна должна редактировать строку,а вторая добавлять строку.
в таблице 3 строки, к примеру в 1 строке записываю "11111", во 2 строке "222222",а в 3 строке записываю "333333".При просмотре показывает в 1 строке "2222222", во 2 строке "333333",а в 3 строке тоже "333333". Я недавно занялся изучением Delphi 7, что то в коде не так наверно, пробовал First, Last не помогало.Поправьте пожалуйста КОД чтобы ZAPTAB-редактировал строку, а APPTAB-lописывал к DBF. За ранее Спасибо Вам все большое! 1 2 3 procedure TForm4.ZapTab; Var KStrOD:Integer; n:Integer; SKOD:String; begin KStrOD:=HalcyonDataSet1.RecordCount; for n:=1 to KStrOD do begin SKOD:=HalcyonDataSet1.FieldByName('K').AsString; HalcyonDataSet1.Next; If Form2.VKPac=SKOD then begin HalcyonDataSet1.Edit; HalcyonDataSet1.FieldByName('K').Value:=SKOD; if RadioButton1.Checked=True then HalcyonDataSet1.FieldByName('POL').Value:='1'; if RadioButton2.Checked=True then HalcyonDataSet1.FieldByName('POL').Value:='0'; HalcyonDataSet1.FieldByName('DATA').Value:=DateTimePicker1.Date; HalcyonDataSet1.FieldByName('RAION').Value:=Edit1.Text; HalcyonDataSet1.FieldByName('NPUNKT').Value:=Edit2.Text; HalcyonDataSet1.FieldByName('UL').Value:=Edit3.Text; HalcyonDataSet1.FieldByName('DOM').Value:=Edit4.Text; HalcyonDataSet1.FieldByName('KV').Value:=Edit5.Text; HalcyonDataSet1.FieldByName('TEL').Value:=Edit6.Text; HalcyonDataSet1.FieldByName('MRAB').Value:=Edit7.Text; HalcyonDataSet1.FieldByName('DOL').Value:=Edit8.Text; HalcyonDataSet1.FieldByName('OBRAZ').Value:=ComboBox1.Text; HalcyonDataSet1.FieldByName('SPOL').Value:=ComboBox2.Text; HalcyonDataSet1.FieldByName('FIOROD').Value:=Edit9.Text; If RadioButton3.Checked=True then HalcyonDataSet1.FieldByName('METSOOBR').Value:='1'; If RadioButton4.Checked=True then HalcyonDataSet1.FieldByName('METSOOBR').Value:='0'; HalcyonDataSet1.Post; Exit; end; end; end; procedure TForm4.AppTab; Var KStrOD:Integer; m:Integer; SKOD:String; begin HalcyonDataSet1.Last; KStrOD:=HalcyonDataSet1.RecordCount; for m:=1 to KStrOD do begin HalcyonDataSet1.Edit; SKOD:=HalcyonDataSet1.FieldByName('K').AsString; HalcyonDataSet1.Next; If Form2.VKPac<>SKOD then begin HalcyonDataSet1.Append; HalcyonDataSet1.FieldByName('K').Value:=form2.VKPac; If RadioButton1.Checked=True then HalcyonDataSet1.FieldByName('POL').Value:='1'; If RadioButton2.Checked=True then HalcyonDataSet1.FieldByName('POL').Value:='0'; HalcyonDataSet1.FieldByName('DATA').Value:=DateTimePicker1.Date; HalcyonDataSet1.FieldByName('RAION').Value:=Edit1.Text; HalcyonDataSet1.FieldByName('NPUNKT').Value:=Edit2.Text; HalcyonDataSet1.FieldByName('UL').Value:=Edit3.Text; HalcyonDataSet1.FieldByName('DOM').Value:=Edit4.Text; HalcyonDataSet1.FieldByName('KV').Value:=Edit5.Text; HalcyonDataSet1.FieldByName('TEL').Value:=Edit6.Text; HalcyonDataSet1.FieldByName('MRAB').Value:=Edit7.Text; HalcyonDataSet1.FieldByName('DOL').Value:=Edit8.Text; HalcyonDataSet1.FieldByName('OBRAZ').Value:=ComboBox1.Text; HalcyonDataSet1.FieldByName('SPOL').Value:=ComboBox2.Text; HalcyonDataSet1.FieldByName('FIOROD').Value:=Edit9.Text; If RadioButton3.Checked=True then HalcyonDataSet1.FieldByName('METSOOBR').Value:='1'; If RadioButton4.Checked=True then HalcyonDataSet1.FieldByName('METSOOBR').Value:='0'; HalcyonDataSet1.Post; end; end; end; |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Я что-то в коде этого не нашёл. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Antimol |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 28.7.2007 Где: Украина, Киев Репутация: 4 Всего: 4 |
Код нужно ОФОРМЛЯТЬ, для лучшего чтения и понимания
Алгоритм который я вижу в коде: 1.
2.
Если задача в том чтобы изменить конкретную запись и ты начинающий возьми DBGrid, DBNavigator, DBEdit свяжи их с соответствующими компонентами и наслаждайся. При этом не написав ни строчки кода. Я к примеру использую стандартные компоненты, но тогда пишу SQL запросы на вставку/редактирование/просмотр данных. В общем в блокноте что то накидал, может даже работает.
Могут быть ошибки потому что писал в блокноте, а так принцип где то такой. Да нужно было еще указать какие компоненты использовались. --------------------
Лучшее спасибо это "+" к репутации. Мой блог: ИНФОРМАТИЗАЦИЯ, и mirsovetov.net. Написание программ, исправление ошибок, статьи.... |
|||
|
||||
| Иван09 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.6.2011 Репутация: нет Всего: нет |
Спасибо все работает только в таблице так
![]() Добавлено через 9 минут и 52 секунды а при открытие и переносе данных с таблицы из найденой строки в текстовые окошки выдает не пойму что? http://s2.ipicture.ru/uploads/20110602/1GGYoCDE.jpg http://s2.ipicture.ru/uploads/20110602/xbcVsBJu.jpg http://s2.ipicture.ru/uploads/20110602/6S9QpW0u.jpg при выборе 1-это(Form2.VKPac) пациента выдает данные 2 пациента при выборе 2-это(Form2.VKPac) пациента выдает данные 2 пациента при выборе 3-это(Form2.VKPac) пациента выдает данные 1 пациента код заполнения такой procedure TForm4.ZPol; Var n:Integer; SKOD:String; begin Edit10.Text:=Form2.VKPac; Edit11.Text:=Form2.VFamPac; EdtClr; HalcyonDataSet1.First; KStrOD:=HalcyonDataSet1.RecordCount; for n:=0 to KStrOD do begin SKOD:=HalcyonDataSet1.FieldByName('K').AsString; HalcyonDataSet1.Next; If Form2.VKPac=SKOD then begin if HalcyonDataSet1.FieldByName('POL').AsString ='1' then RadioButton1.Checked:=True else RadioButton2.Checked:=True; DateTimePicker1.Date:=HalcyonDataSet1.FieldByName('DATA').AsDateTime; Edit1.Text:=HalcyonDataSet1.FieldByName('RAION').AsString; Edit2.Text:=HalcyonDataSet1.FieldByName('NPUNKT').AsString; Edit3.Text:=HalcyonDataSet1.FieldByName('UL').AsString; Edit4.Text:=HalcyonDataSet1.FieldByName('DOM').AsString; Edit5.Text:=HalcyonDataSet1.FieldByName('KV').AsString; Edit6.Text:=HalcyonDataSet1.FieldByName('TEL').AsString; Edit7.Text:=HalcyonDataSet1.FieldByName('MRAB').AsString; Edit8.Text:=HalcyonDataSet1.FieldByName('DOL').AsString; ComboBox1.Text:=HalcyonDataSet1.FieldByName('OBRAZ').AsString; ComboBox2.Text:=HalcyonDataSet1.FieldByName('SPOL').AsString; Edit9.Text:=HalcyonDataSet1.FieldByName('FIOROD').AsString; If HalcyonDataSet1.FieldByName('METSOOBR').AsString='1' then RadioButton3.Checked:=True else RadioButton4.Checked:=True; // exit; end; end; end; |
|||
|
||||
| Antimol |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 28.7.2007 Где: Украина, Киев Репутация: 4 Всего: 4 |
Попросил же код оформлять соответствующими тегами. В форме Ответа есть кнопка КОД - выбери Delphi и вставляй код.
те же грабли:
Если помог - репутация +1 --------------------
Лучшее спасибо это "+" к репутации. Мой блог: ИНФОРМАТИЗАЦИЯ, и mirsovetov.net. Написание программ, исправление ошибок, статьи.... |
|||
|
||||
| Иван09 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.6.2011 Репутация: нет Всего: нет |
Спасибо Извените!
Добавлено через 4 минуты и 32 секунды скопировал вставил Выдает такую ошибку [IMG]http://s1.ipicture.ru/uploads/20110602/5ODU9RZ5.jpg[IMG] |
|||
|
||||
| Antimol |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 28.7.2007 Где: Украина, Киев Репутация: 4 Всего: 4 |
Работает?
--------------------
Лучшее спасибо это "+" к репутации. Мой блог: ИНФОРМАТИЗАЦИЯ, и mirsovetov.net. Написание программ, исправление ошибок, статьи.... |
|||
|
||||
| Иван09 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.6.2011 Репутация: нет Всего: нет |
такую
|
|||
|
||||
| Antimol |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 28.7.2007 Где: Украина, Киев Репутация: 4 Всего: 4 |
На какой строке кода останавливается отладчик? Можно поставить точку преривания (F5) в начале кода, к примеру на Edit10.Text:=Form2.VKPac;, потом запустить программу(F9) и дальше пошагово отладить F7.
Скорее всего обращение идет к элементу списка, которого нет. К примеру:
Фактически нужно добавить не в Text, потому что это отображаемый текст со списка, а в Items, с присвоением ItemIndex если конечно нужно Это сообщение отредактировал(а) Antimol - 2.6.2011, 11:48 --------------------
Лучшее спасибо это "+" к репутации. Мой блог: ИНФОРМАТИЗАЦИЯ, и mirsovetov.net. Написание программ, исправление ошибок, статьи.... |
|||
|
||||
| Иван09 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.6.2011 Репутация: нет Всего: нет |
Ругается на строку if not HalcyonDataSet1.Locate('K',Form2.VKPac,[]) then
|
|||
|
||||
| Antimol |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 28.7.2007 Где: Украина, Киев Репутация: 4 Всего: 4 |
Интереснен тот факт что начало ругаться именно в этот момент, а в остальных случаях все нормально. Может быть HalcyonDataSet1 "отключен"
--------------------
Лучшее спасибо это "+" к репутации. Мой блог: ИНФОРМАТИЗАЦИЯ, и mirsovetov.net. Написание программ, исправление ошибок, статьи.... |
|||
|
||||
| kyzmi4741 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
Здравствуйте, помогите пожалуйста, столкнулся с такой проблемой(программирую не долгое время).
Вообщем у меня есть связь с базой данных с помощь компонентов DBGrid, ADOconnection, ADOquery, DataSource. Все выводит, и все бы хорошо если бы не то что мне для диплома нужна разработать так чтобы при нажатии на кнопку button происходило сложение(грубо говоря, на самом деле формула куда больше) двух ячеек и результат выводился в третьей ячейке. Никак ни могу сообразить как это сделать. |
|||
|
||||
| Иван09 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.6.2011 Репутация: нет Всего: нет |
procedure TForm1.Button1Click(Sender: TObject);
Var Sum, s1, s2:Integer; begin ADOQuery1.Edit; //редактирование таблицы s1:=ADOQuery1.FieldByName('Имя столбца').AsInteger; s2:=ADOQuery1.FieldByName('Имя столбца').AsInteger; Sum:=s1+s2; ADOQuery1.Cancel; ADOQuery1.FieldByName('Имя столбца').Value:=Sum; end; |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Иван09, забыл
Только проделывать сиё в Query как-то ИМХО некрасиво. Уж в AdoTable лучше. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| kyzmi4741 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
Спасибо большое. а никак нельзя обратиться именно к ячейке?? просто если у меня например в одной строке происходит сложение с одними постоянными то в следующей другие
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |