0 / 0 / 0
Регистрация: 18.06.2015
Сообщений: 1
1

Сравнение всех значений поля в одной таблице со значением одного поля в другой

07.06.2016, 13:55. Показов 1847. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пожалуйста помогите! БД в Access. Две таблицы id и ip. Поле pn таблицы id связан с полем id таблицы ip связью один-к-одному. Нужно чтобы при нажатии кнопки (таблица id) сравнивались значение поля выделенной записи в DBGrid с значением полей таблицы ip.если в этой таблице нет полей с таким значением открывается форма для редактирования таблицы ip и значение pn копируется в поле id.Если есть, то копирования не должно происходить, выводится сообщение. у меня почему то форма все равно открывается и значение копируется. Я начинающая только. Пожалуйста помогите!

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure Tid.BitBtn1Click(Sender: TObject);
begin
if DataModule2.ipTable.FieldByName('id').Value=DBGrid1.DataSource.DataSet.Fields.Fields[0].Value
   then  begin
ShowMessage ('По данному документу уже заведено дело');
end
 else
  begin
 DataModule2.ipTable.Edit;
 DataModule2.ipTable.Insert;
DataModule2.ipTable.FieldByName('id').Value:=DBGrid1.DataSource.DataSet.Fields.Fields[0].Value;
Form14.showModal;
end;
 end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2016, 13:55
Ответы с готовыми решениями:

Обновление одного поля таблицы, при заполнении поля в другой таблице
Друзья помогите новичку! Есть две таблицы -продажа(id продажи, сумма продажи) -скидка(id скидки,...

Зависимые поля (список значений одного поля зависит от значения другого поля)
Здравствуйте, Уважаемые участники форума, изучив множество подобных вопросов на разных форумах,...

Как связать между собой два поля (список значений одного поля зависит от значения другого поля)
Есть таблица: предмет, КодТипаМатериала (список), КодМатериала (список) для примера: ...

Поиск записей в одной таблице, где значения ключевого поля не совпадают с полем в другой таблице
Имеется Access XP, надо создать запрос для поиска записей в таблице ТОВАРЫ,где значения ключевого...

4
5837 / 4569 / 1442
Регистрация: 14.04.2014
Сообщений: 20,296
Записей в блоге: 20
07.06.2016, 17:17 2
мы говорим поиск - подразумеваем SQL

Delphi
1
2
3
4
5
6
7
query.SQL.Text:='select count(*) as C from вашатаблица where вашеполе='+edit1.text;
query.Open;
found:=query.FieldByName('C').asinteger>0
query.Close;
 
if found then
  showmessage('Такое значение уже есть!');
0
0 / 0 / 0
Регистрация: 01.06.2016
Сообщений: 13
11.06.2016, 11:20 3
ДД! Можете помочь, никак не могу сделать фильтр и вывести значения.
Есть StringGrid. На первой колонне ячейки с разными значениями, которые могут повторятся.
пример:
а
б
а
а
а
в

Нужно сделать фильтр и вывести на второй колонне (не обезательно) список всех значении с первой колонны.
Результат должен быть таким:
а а
б б
а в
а
а
в

Сделал вот так, но так фильтрует только до второго значения.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
StringGrid1.Cells[1,1]:=StringGrid1.Cells[2,1];
 
 with StringGrid1 do //дальше добавляю строку сдвигом вниз
  begin
  RowCount:= RowCount+1; //Увеличиваем количество строк на 1
  for c:= 0 to RowCount-3 do  //Сдвигаем содержимое таблицы вниз
    for e:=0 to StringGrid1.ColCount-1 do // Переносим на одну строчку меньше
      Cells[e, RowCount-1-c]:= Cells[e, RowCount-2-c];
  for e:=0 to ColCount-1 do  Cells[e,1]:=''; //очищаем от содержимого первую (после фиксированной) строку
  end;
 
for e:=1 to StringGrid1.RowCount -1 do
while StringGrid1.Cells[1,1+e]<>StringGrid1.Cells[2,2] do
StringGrid1.Cells[1,1+e]:=StringGrid1.Cells[2,1];
0
5837 / 4569 / 1442
Регистрация: 14.04.2014
Сообщений: 20,296
Записей в блоге: 20
11.06.2016, 19:13 4
чтобы не путаться в i/j/k пользуйтесь естественным языком
тогда
для каждого значения из колонки 0
если в колонке 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
for i:=grid.FixedRows + grid.RowCount-1 do
begin
  if not ValueFound(grid.cells[0,i]) then
     ValueAdd(grid.cells[0,i]);
end;
.....
 
 
function TForm1.ValueFound(s:string);
var i:integer;
begin
 result := false;
 for i:=grid.FixedRows to grid.RowCount-1 do
 begin
    result:=grid.Cells[1,i]=s;
    if result then 
       exit;
 end;
end;
 
procedure TForm1.AddValue(s:string);
var i:integer;
begin
  for i:=grid.FixedRows to grid.RowCount-1 do
  begin
    if (grid.cells[1,i]='') then
    begin
      grid.cells[1,i]:=s;
      exit;
    end;
  end;
end;
1
0 / 0 / 0
Регистрация: 01.06.2016
Сообщений: 13
12.06.2016, 18:12 5
krapotkin, Огромное спасибо за ответ. Там были некоторые ошибки
Вот рабочий код
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
procedure AddValue(s:string);
function ValueFound(s:string): Boolean;
...
 
 for e:=StringGrid1.FixedRows to StringGrid1.RowCount-1 do
begin
  if not ValueFound(StringGrid1.cells[4,e]) then
      AddValue(StringGrid1.cells[4,e]);
...
 
function TForm1.ValueFound(s:string):Boolean;
var e:integer;
begin
 result := false;
 for e:=1 to StringGrid1.RowCount-1 do
 begin
    result:=StringGrid1.Cells[5,e]=s;
    if result then
       exit;
 end;
end;
 
procedure TForm1.AddValue(s:string);
var e:integer;
begin
  for e:=StringGrid1.FixedRows to StringGrid1.RowCount-1 do
  begin
    if (StringGrid1.cells[5,e]='') then
    begin
      StringGrid1.cells[5,e]:=s;
      exit;
    end;
  end;
Только единственное, он выдает один лишний повторяющиеся значение - самое первое. Но это не так важно, можно просто удалить его.
0
12.06.2016, 18:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2016, 18:12
Помогаю со студенческими работами здесь

Данные в combobox одного поля, заменить значением другого поля при сохранении в файл базы
Здравствуйте! суть вопроса - беру данные из файла базы ssldb, таблица sites, поле site отображаю...

Обновление поля одной таблице полем другой
Хочу обновить поле ValueBefore таблицы А значением поля Value из таблицы Б, т.е. А имеет поле...

Суммирования значений одного поля из одной таблицы
Извиняюсь, что обращаюсь возможно с элементарным вопросом, но нет время перерывать кучу литературы....

Перенос информации из одного поля в другой в одной форме
вопрос такой: есть выпадающее меню и поле ввода текста, как сделать так что бы при выборе значения...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru