Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DBLookupComboBox, Вопрос про запись значения в таблицу 
:(
    Опции темы
Cashey
Дата 29.4.2004, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Если тебе надо добавить только идентификатор (значение поля DM.Pod['PKodRuk']), то можешь либо просто написать
Код
DM.Pod.FieldByName('PKodRuk').AsInteger := Справочник.FieldByName('RKod').AsInteger

или используй KeyValue, как ты и делал раньше, только тогда KeyField присвой значение RKod


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
x77
Дата 29.4.2004, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



Cashey, AppendRecord сам сделает Post smile.gif

mambo, убей последнюю строчку.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
mambo
Дата 29.4.2004, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.4.2004

Репутация: нет
Всего: нет



Попробовал старые варианты и выяснил, что ко всему прочему в таблицу подразделений записывается не код руководителя, а должность.
И кол-во записей всё такое же. bored.gif
PM MAIL   Вверх
Cashey
Дата 29.4.2004, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(x77 @ 29.4.2004, 09:38)
Cashey, AppendRecord сам сделает Post smile.gif

mambo, убей последнюю строчку.

Да, если база не буферизированная, но я на всякий случай посоветую сделать так:
Код
if DM.Pod.Modified = true then
if MessageDlg('Данные были изменены. Сохранить данные?',
   mtConfirmation, [mbYes, mbNo], 0) = mrYes then  begin
DM.Pod.Post;
DM.Pod.FlushBuffers;
end;

Добавлено @ 09:48
mambo
AppendRecord, может добавить больше одной записи только в цикле smile.gif. Значит у тебя DataSource не пустое


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
x77
Дата 29.4.2004, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



Cashey, да при чём здесь буферизация. после AppendRecord таблице ляжет в State=dsBrowse и последующий вызов Post всегда будет валить её в эксепшн. ты определись, либо AppendRecord, либо Insert|Edit .. Post.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
mambo
Дата 29.4.2004, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.4.2004

Репутация: нет
Всего: нет



mad.gif Ничего не выходит...

Вернулся к такому варианту:

procedure TForm6.Button1Click(Sender: TObject);
begin
DM.Pod.Append;
DM.Pod['PKod'] := Edit1.Text;
DM.Pod['PPod'] := Edit2.Text;
DM.Pod.Post;
DM.Pod_Adm.Active := False;
DM.Pod_Adm.Active := True;
Close;
end;

У DBLookupComboBox настройки такие:

ListSource=DM.DataSource1, ListField=RDolj, KeyField=RKod.

Запись в таблицу подразделений выполняется, но снова вместо одной по выбранной должности из DBLookupComboBox получается столько, сколько всего руководителей.
PM MAIL   Вверх
x77
Дата 29.4.2004, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



мда.... шаман, однако. первый раз слышу, чтобы один аппенд приводил к вставке кучи записей. может, я не догоняю чего? это же физически невозможно.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
mambo
Дата 29.4.2004, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.4.2004

Репутация: нет
Всего: нет



Вот в этом и вопрос.
Причем получается так:
Количество записей столько, сколько руководителей. В каждой записи наименование подразделения одинаковое, которое вводил в Edit. Код подразделения у всех одинаковый 1. А код руководителя разный...

Что за баг?.. wow.gif
PM MAIL   Вверх
x77
Дата 29.4.2004, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



чудес не бывает. у тебя где-то что-то ещё прописано. в AfterInsert, BeforeInsert, AfterPost, BeforePost, AfterScroll какие-нить обработчики есть?
Добавлено @ 10:24
выложи весь код модуля, если не сложно.

мне аж интиресно стало smile.gif


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
mambo
Дата 29.4.2004, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.4.2004

Репутация: нет
Всего: нет



Пожалуйста, вот он:

unit Unit6;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, ExtCtrls, DB, DBTables;

type
TForm6 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
DBLookupComboBox1: TDBLookupComboBox;
DBComboBox1: TDBComboBox;
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form6: TForm6;

implementation

uses Data_U;

{$R *.dfm}

procedure TForm6.Button2Click(Sender: TObject);
begin
Close;
end;

procedure TForm6.FormCreate(Sender: TObject);
var
CountRowsP, NP: Integer;
SP: String;
begin
if DM.Pod.RecordCount = 0 then
begin
NP := 1;
SP := IntToStr(NP);
Edit1.Text := SP;
end
else
begin
DM.Pod.Last;
CountRowsP := DM.Pod['PKod'];
NP := CountRowsP + 1;
SP := IntToStr(NP);
Edit1.Text := SP;
while not DM.Ruk.Eof do begin
DBComboBox1.Items.Add(DM.Ruk.FieldByName('RDolj').AsString);
DM.Ruk.Next;
end;

end;
end;

procedure TForm6.Button1Click(Sender: TObject);
begin
DM.Pod.Append;
DM.Pod['PKod'] := Edit1.Text;
DM.Pod['PPod'] := Edit2.Text;
DM.Pod.Post;
DM.Pod_Adm.Active := False;
DM.Pod_Adm.Active := True;
Close;
end;



end.


Млин, другой модуль (ранее рабочий) чё-то заглючил... butbut.gif
А тут еще рабочий день закончился hmmm.gif

Пишите, люди добрые!
Буду ждать с нетерпением, завтра посмотрю.
Всем привет и большое спасибо!
До встречи.
PM MAIL   Вверх
x77
Дата 29.4.2004, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



здесь всё относительно нормально. нормально в том плане, что глючить тут нечему.

меня терзают смутные сомнения, что все чудеса творятся в модуле DM. его можно поглядеть?


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
mambo
Дата 30.4.2004, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.4.2004

Репутация: нет
Всего: нет



канешна можно вот:

unit Data_U;

interface

uses
SysUtils, Classes, DB, DBTables;

type
TDM = class(TDataModule)
Database1: TDatabase;
Ruk: TTable;
DataSource1: TDataSource;
Pod: TTable;
DataSource2: TDataSource;
Pz: TTable;
DataSource3: TDataSource;
Sot: TTable;
DataSource4: TDataSource;
Zad: TTable;
DataSource5: TDataSource;
Vp: TTable;
DataSource6: TDataSource;
Wp: TTable;
DataSource7: TDataSource;
Pr: TTable;
DataSource8: TDataSource;
Ruk_Adm: TQuery;
DS_Ruk_Adm: TDataSource;
Ruk_AdmRDolj: TStringField;
Ruk_AdmRRuk: TStringField;
Ruk_AdmRName: TStringField;
Ruk_AdmRPasw: TStringField;
Pod_Adm: TQuery;
DS_Pod_Adm: TDataSource;
Pod_Admrdolj: TStringField;
Pod_Admppod: TStringField;
PZ_Adm: TQuery;
DataSource9: TDataSource;
PZ_AdmPzName: TStringField;
PZ_AdmPzPasw: TStringField;
PZ_AdmPPod: TStringField;
Sot_Adm: TQuery;
Sot_A: TDataSource;
Sot_AdmSSot: TStringField;
Sot_AdmPPod: TStringField;
Sot_AdmSDolj: TStringField;
private
{ Private declarations }
public
{ Public declarations }
end;

var
DM: TDM;

implementation

uses Admin_U, Unit2;

{$R *.dfm}

end.
PM MAIL   Вверх
mambo
Дата 30.4.2004, 04:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.4.2004

Репутация: нет
Всего: нет



rolleyes.gif Ура!!
Я разобрался.
Причина была вообще в другом: в неправильном SQL-запросе в Query, через который отображаются данные в сетке.
А DBLookupComboBox оказывается прекрасно работает, в нем главное правильно настроить свойства ListSource, ListField, KeyField.

ВСЕМ БОЛЬШОЕ СПАСИБО! smile.gif

Вопрос снимаю, чао-какао...

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.