Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2015, 17:30   #1
Daivel
Пользователь
 
Регистрация: 14.12.2014
Сообщений: 22
По умолчанию Значение ячейки.

Доброго времени суток. Есть такой вопрос. Клиент-Серверна БД.
Есть возможность регистрации.
Каждый пользователь может отправить файл другому зарегистрированному пользователю.
Код:
var
  fn, fe: string;
begin
  if OpenDialog1.Execute then
  begin
    fn:=ExtractFileName(OpenDialog1.FileName);
    fe:=ExtractFileExt(OpenDialog1.FileName);
    datamodule2.ClientDataSetOutbox.Insert;
    datamodule2.ClientDataSetOutbox.FieldByName('название').AsString:=fn;
    datamodule2.ClientDataSetOutbox.FieldByName('расширение').AsString:=fe;
    datamodule2.ClientDataSetOutbox.FieldByName('ид_от').AsInteger:=datamodule2.ID_User;

    datamodule2.ClientDataSetOutbox.FieldByName('ид_кому').AsInteger:=DBLookupComboBox1.KeyValue;

    datamodule2.ClientDataSetOutbox.FieldByName('дата').AsDateTime:=now;
    tblobfield(datamodule2.ClientDataSetOutbox.FieldByName('файл')).LoadFromFile(OpenDialog1.FileName);
    datamodule2.ClientDataSetOutbox.Post;
  end;
В таблице есть поля "ид_от" и "ид_кому" в них заноситься информация кто и кому отправил файл. Хотелось бы спросить. Как сделать так что бы в компоненте DBgrid вместо ид пользователя занесённого в эти столбцы выводились логины пользователей которые отправили и получи этот файл?
Daivel вне форума Ответить с цитированием
Старый 29.06.2015, 17:52   #2
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Код:
datamodule2.ClientDataSetOutbox.FieldByName('id').OnGetText = ФУНКЦИЯ_ХХХ;
.....
procedure ФУНКЦИЯ_ХХХ(sender : TField; var text : string);
begin
  text := sender.DataSet.FieldByName('аккаунт_юзера').AsString;
end;
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 29.06.2015, 18:46   #3
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Есть возможность регистрации.
1) Если есть возможносты регистраций , Тогда должен таблица для этого . на пример User_Tab ,
2) А для отправки файлов и переписки второе таблица , на пример history_Tab и между нимы связь один ко многим

Цитата:
Как сделать так что бы в компоненте DBgrid вместо ид пользователя занесённого в эти столбцы выводились логины пользователей
3) Писать простой inner join и отбрасывать ненужные полей и оставлять что нужно .
4) Резултать запроса отображаем в DBgrid

JUDAS скажите пожалуйста что это дасть ??? задача решаетсия SQL надо резултать запроса отобрашать Gride , причем тут функция ? и еще procedure ФУНКЦИЯ_ХХХ процедура и функция 2 разные вещи

Последний раз редактировалось xxbesoxx; 29.06.2015 в 18:54.
xxbesoxx вне форума Ответить с цитированием
Старый 29.06.2015, 19:46   #4
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
скажите пожалуйста что это дасть ???
рекомендую прочитать про свойства и методы класса TField в частности OnGetText что он даёт и зачем его вообще написали.

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

по поводу функций и процедур.
Для информации, в С++ например вообще нет процедур (это вам для общего развития)
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 29.06.2015, 19:49   #5
Daivel
Пользователь
 
Регистрация: 14.12.2014
Сообщений: 22
По умолчанию

to xxbesoxx Да есть таблица для пользователей "users" и есть таблица "box" в которой и хранятся переданные файлы, ид тех кто передал и кому передавали.
При авторизации в DBGrid выводится таблица Inbox для пользователя который сейчас залогине, при нажатии клавиши загружается таблица переданных файлов этого пользователя. И вот тут начинается мой вопрос. Мне нужно что бы в столбце с ид пользователей были не их порядковый номер, а имя. Можно подробней как реализовать что вы предложили. Я использую Access и ADO.
Daivel вне форума Ответить с цитированием
Старый 29.06.2015, 20:23   #6
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
To JUDAS Вопрос был задан - оторажать вместо id аккаунт, а не отобразить поле с запроса
Да, вот #1 такой
Цитата:
Как сделать так что бы в компоненте DBgrid вместо ид пользователя занесённого в эти столбцы выводились логины пользователей
xxbesoxx вне форума Ответить с цитированием
Старый 29.06.2015, 20:45   #7
Daivel
Пользователь
 
Регистрация: 14.12.2014
Сообщений: 22
По умолчанию

to JUDAS вот запрос который внутри ClientDatsSetOutbox
Код:
SELECT * FROM [box]
А это запрос на вывод данных в DBGrid
Код:
    DataModule2.ClientDataSetOutbox.CommandText:='SELECT * FROM [box] WHERE [ид_от]='+inttostr(datamodule2.ID_User);
    DataModule2.ClientDataSetOutbox.Open;
Daivel вне форума Ответить с цитированием
Старый 29.06.2015, 20:57   #8
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
To JUDAS Вопрос был задан - оторажать вместо id аккаунт, а не отобразить поле с запроса
Да, вот на #1
Цитата:
Как сделать так что бы в компоненте DBgrid вместо ид пользователя занесённого в эти столбцы выводились логины пользователей
Цитата:
Для информации, в С++ например вообще нет процедур
Здравствуйте причем тут C++ ? Тема разделе БД в Delphi и задача решается в SQL ! А программа можно писать на Delphi и на C++ Но, на данный момент задача они не реашаеть
Цитата:
to xxbesoxx Да есть таблица для пользователей "users" и есть таблица "box" в которой и хранятся переданные файлы, ид тех кто передал и кому передавали
Ладно приступаем
1)
Код:
create table Users
(
 u_id int identity(1,1) primary key,
 u_FIO  nvarchar(30),
 u_Login nvarchar(20),
 u_Password nvarchar(30) 
)
2) На пример добавим несколько пользовател
Код:
insert into Users
           ( u_FIO ,
             u_Login ,
             u_Password
            )
       values
       ( N'Васия пупкин',
         N'Vasia',
         N'1111'
       
       ),
       ( N'Иване Иванов',
         N'ivane',
         N'0000'
       ),
       ( N'Какой то пользовател',
         N'xxxx',
         N'2222'
       )

select * from Users
3) Таблица box
Код:
create table box
(
 d_id int identity,
 d_date datetime default getdate(),
 d_Text nvarchar(max),
 d_userID int not null,
 constraint FK_Box foreign key ( d_userID) references users(u_id) on delete cascade
);
4) Начинается переписка между пользователи
Код:
insert into box ( 
                 d_Text ,
                 d_userID
                 )
        values
        (
         N'Привет как дела', 1
        ),
        (
         N'Нормально, Вы как', 2
        ),
        (
         N'Сегодня будите на работу', 1
        ),
        (
         N'Да буду ;)', 1 -- Здесь надо было 2 это же id  Иване Иванов
        )
  select * from box
5) Начинаю собрать данных через inner join
Код:
  select *
  from Users U INNER JOIN box B
  on u.u_id = b.d_userID
6) Отбрасываю не нужны полей
Код:
  select u.u_FIO, b.d_date, b.d_Text, u.u_Login
  from Users U INNER JOIN box B
  on u.u_id = b.d_userID
Резултат запроса можно отображать Gride да ? так понятно ?
Код:
 (это вам для общего развития)
А C++ это мода чтоли если C++ думайте, что всё будеть ++
О_оо это разговор уже выходить из рамкы даного темы который создал "автор" Я не выжу вопрос про C++
Изображения
Тип файла: jpg 1.jpg (58.3 Кб, 58 просмотров)
Тип файла: jpg 2.jpg (51.7 Кб, 58 просмотров)

Последний раз редактировалось xxbesoxx; 29.06.2015 в 21:48.
xxbesoxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти значение на другом листе и подставить значение следующей ячейки ElenaNTro Microsoft Office Excel 12 11.02.2019 12:44
Значение ячейки на пересечении столбца и активной ячейки Lamo Microsoft Office Excel 2 27.07.2013 20:55
Как просуммировать ячейки в которых значение более трех и значение болеетрех ячеек подряд? maruk Microsoft Office Excel 9 30.04.2011 00:07
Значение предыдущей ячейки Lvenok1987 Microsoft Office Excel 8 29.12.2010 01:08
Условие на значение ячейки AnnNet Microsoft Office Excel 2 22.01.2010 11:16