Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.13;
Скачать: CL | DM;

Вниз

Как передать данный из DLL в exe?   Найти похожие ветки 

 
Киря   (2005-02-10 09:14) [0]

Моё приложение состоит из основного файла exe и нескольких DLL. Одна из этих DLL подключается к базе MS SQL и запускает хранимую процедуру и в результате получает таблицу. Мне нужно передать эту таблицу в моё приложение


 
stone ©   (2005-02-10 09:30) [1]

Если работаешь через ADO, то передавай _Recordset как возвращаемый параметр.


 
Киря   (2005-02-10 09:48) [2]

А ка потом мне отобразить результат в DBGrid"е в приложении?


 
Ega23 ©   (2005-02-10 09:49) [3]

Через TDataSource


 
Киря   (2005-02-10 09:56) [4]

to Ega23
А можно кусочек кода?


 
Ega23 ©   (2005-02-10 10:04) [5]

2 Киря   (10.02.05 09:56) [4]

А можно немножко денег?


 
Киря   (2005-02-10 10:09) [6]

А прошу подсказать мне всего одну строку кода в которой TDataSource получает _recordSet


 
Danilka ©   (2005-02-10 10:20) [7]

Почитай внимательно справку по TCustomADODataSet.RecordSet


 
sniknik ©   (2005-02-10 10:43) [8]

> Ю А прошу подсказать мне всего одну строку кода в которой TDataSource получает _recordSet

result:= AdoCommand.Execute;
(естественно рекордсет не в TDataSource присваивается а возвращается из функции, результат которой уже внужное место (жал план в 1 строчку не могу превысить ;о))))
p.s. придется всетаки хелп читать наверное.


 
Киря   (2005-02-12 05:10) [9]

Насколько я знаю это форум создан специально для того, что бы более опытные программисты помогали таким ламерам как я. И если на большинство вопросов писать Смотри HELP то как я понимаю нет смысла в этом форуме.
И если у вас нет желания помогать начинающим программистам то лучше тогда вообще не отвечать.
В Help"е я нашел всего 1 пример
ADODataSet1.Recordset := ADOCommand1.Execute;
Мне он не очень помог:
Когда я присваиваю ADODataSet.recordset _recordset полученный из DLL, а после активирую ADODataSet то получаю ошибку, что ADODataSet.connection пуст
Как мне исправить эту ошибку или какой другой компонент использовать?


 
sniknik ©   (2005-02-12 12:36) [10]

у каждого свое понимание "высшего смысла" форума, по мне так он для того чтобы общатся и решать сообща проблемы, которые в одиночку решить проблемно.

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

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


 
Киря   (2005-02-12 14:45) [11]

Я не считаю, что мне обязаны помогать. Я говорю о том, что не стоит обсерать и подкалывать тех кто знает меньше вас.

procedure TForm1.Button1Click(Sender: TObject);
var
rec: variant;
begin
rec:=getmess(); // здесь я получаю _recordSet из DLL
//Что мне сделать дальше, что бы отобразить этот recordset в DBgrid"e?

end;


 
Black ©   (2005-02-12 15:12) [12]

Исправление предыдущего поста

procedure TForm1.Button1Click(Sender: TObject);
var
rec: _recordset;
begin
rec:=getmess(); // здесь я получаю _recordSet из DLL
//Что мне сделать дальше, что бы отобразить этот recordset в DBgrid"e?

end;


 
Киря   (2005-02-12 15:16) [13]

наконец то исправил всё работает

function getmess:_recordset; external "dostup.dll";
procedure TForm1.Button1Click(Sender: TObject);
var
rec: _recordset;
begin
rec:=getmess();
ADOStoredProc1.Recordset:=rec;
ADOStoredProc1.Active:=true;
end;


 
sniknik ©   (2005-02-12 17:55) [14]

> наконец то исправил всё работает
сомнительно что все. ;о))

вот такой вариант (что ты его даже не присваиваеш), я не рассматривал... ранее то вроде писал что знаеш как -> [9] ADODataSet1.Recordset := ADOCommand1.Execute;
думал действительно "проблема".

кстати код неправильный...  который в -> Киря   (12.02.05 15:16) [13]
ADOStoredProc1.Active:=true;
лишнее, если передача работает, то простого присвоения рекордсета достаточно, а если оно передаст nil то активация просто откроет новый рекордсет который получит собственным запросом.
(дополнительная переменная тоже, но это не "криминал" в конце концов оптимизатор ее выкинет)



Страницы: 1 вся ветка

Текущий архив: 2005.03.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.024 c
14-1108640990
dr Tr0jan
2005-02-17 14:49
2005.03.13
Ремонт телевизора


8-1101130602
Axer
2004-11-22 16:36
2005.03.13
Ещё вопросик по BASS.DLL


10-1085233283
Cyber
2004-05-22 17:41
2005.03.13
Вставка даных в Word


14-1108729743
Adder
2005-02-18 15:29
2005.03.13
Надоело платить штрафы за превышение скорости?!


14-1109100368
Verg
2005-02-22 22:26
2005.03.13
С праздничком :)