Форум: "Базы";
Текущий архив: 2009.08.30;
Скачать: [xml.tar.bz2];
Внизперенос текстовых данных с Дельфи формы в таблицу Oracle Найти похожие ветки
← →
ssa (2008-11-10 14:37) [0]Доброе время суток!
Помогите с кодом переноса текстовых данных с Дельфи формы в таблицу Oracle. Таблица создана. Данные на форме заполняются. Необходимо их записывать нажатием кнопки в таблицу.Одно нажатие - одна запись в таблице.
с помощью каких компонентов Д7 можно это сделать.
← →
GRAND © (2008-11-10 14:42) [1]Данные на форме в какие компоненты заполняются? Если, например, имеем текст в TMemo, то для непосредственной работы с текстом в БД нужно использовать TDBMemo. TEdit - TDBEdit и т.п. Только надо не забыть, что DB-компоненты требуют привязки к конкретным таблицам и полям в базе: пропертя DataSource и DataField.
← →
Sergey13 © (2008-11-10 14:46) [2]> [0] ssa (10.11.08 14:37)
Достаточно прочитать хотя бы одну статейку в стиле "Делфи за 21 день".
← →
ssa (2008-11-10 14:56) [3]Даннае на форме - Edit.text или Combobox.text
в девелопере могу написать прцедуру (где входные параметры будут тексты с дельфи формы) вставки данных в таблицу Оракла
какие лучше компоненты использовать для передачи в процедуру и какой код при этом выполнить
← →
Поросенок Винни-Пух © (2008-11-10 15:02) [4]А какие у тебя есть?
← →
Сергей М. © (2008-11-10 15:04) [5]
> какие лучше компоненты использовать для передачи в процедуру
Когда нет четко обозначенных критериев оценки на "лучше-хуже" и нет желания читать буквари, можно смело использовать первые попавшиеся или никакие не использовать.
← →
ssa (2008-11-10 15:14) [6]У меня D7 и хотел через хранимую процедуру StoreProc - (stpParus)
with stpParus do
begin
ParamByName("sDOCNUMB").AsString := edtNumber.Text;
ParamByName("sAGN").AsString := sAGN;
ParamByName("sTRANSPORT").AsString := edtTransp.Text;
ParamByName("sNOMEN").AsString := sNM;
....
Prepare;
ExecProc;
end;
а в девелопере такая процедура
create or replace procedure P_ZL_GRAIN_WEIGHT
(
sDOCNUMB in varchar2,
nWEIGHT_TARE in number,
nWEIGHT_BRUTTO in number,
dTARE_DATE in date,
dBRUTTO_DATE in date,
sTARE_USER in varchar2,
-- sBRUTTO_USER in varchar2,
sWEIGHTMECH in varchar2,
sAGN in varchar2,
sTRANSPORT in varchar2,
sNOMEN in varchar2
) is
nRN1 ZL_SSA_GRAIN_WEIGHT.RN%TYPE;
nAGN_RN ZL_SSA_GRAIN_WEIGHT.AGN_RN%TYPE;
begin
nRN1 := gen_id;
SELECT A.RN into nAGN_RN FROM AGNLIST A WHERE TRIM(A.AGNABBR)=TRIM(sAGN);
insert into ZL_SSA_GRAIN_WEIGHT
(
RN,
COMPANY,
DOCPREF,
DOCNUMB,
WEIGHT_TARE,
WEIGHT_BRUTTO,
TARE_DATE,
BRUTTO_DATE,
TARE_USER,
BRUTTO_USER,
WEIGHTMECH,
AGN_RN,
TRANSPORT,
NOMEN
)
values (
nRN1,
1710001,
"08",
sDOCNUMB,
nWEIGHT_TARE,
nWEIGHT_BRUTTO,
dTARE_DATE,
dBRUTTO_DATE,
sTARE_USER,
sTARE_USER,
--sBRUTTO_USER,
sWEIGHTMECH,
nAGN_RN,
sTRANSPORT,
sNOMEN
);
commit;
end P_ZL_GRAIN_WEIGHT;
← →
ssa (2008-11-10 15:21) [7]во первых не спрашивает логин и пароль
хотя в LoginPromt - true и Params - указан логин и пароль
← →
ssa (2008-11-10 15:23) [8]при выполнении sp возникает ошибка no logon on
где неправильно у меня
← →
Сергей М. © (2008-11-10 15:38) [9]для начала настрой правильно BDE-алиас
← →
ssa (2008-11-10 15:55) [10]бде настроил, указал имя процедуры увидел параметры
создал кнопку где прописал
procedure TForm1.Button3Click(Sender: TObject);
begin
with sP1 do
begin
ParamByName("SDOCNUMB").AsString:=Edit2.Text;
ParamByName("NWEIGHT_TARE").Value:=strtofloat(Edit6.Text);
ParamByName("NWEIGHT_BRUTTO").Value:=strtofloat(Edit7.Text);
ParamByName("DTARE_DATE").AsDateTime:=now;
ParamByName("DBRUTTO_DATE").AsDateTime:=now;
ParamByName("STARE_USER").AsString:=Edit2.Text;
ParamByName("SWEIGHTMECH").AsString:=Edit2.Text;
ParamByName("SAGN").AsString:=Edit3.Text;
ParamByName("STRANSPORT").AsString:=Edit4.Text;
ParamByName("SNOMEN").AsString:=Edit5.Text;
Prepare;
Execute;
end;
end;
при компиляции
ошибка [Fatal Error] PrTest.dpr(2): Read error on "c:\program files\borland\delphi7\Lib\System.dcu"
← →
MsGuns © (2008-11-10 15:56) [11]Через какие компоненты работаете ?
Очевидно, запрос даже не доходит до сервера.
← →
ssa (2008-11-10 15:57) [12]Database1: TDatabase;
SP1: TStoredProc;
← →
Поросенок Винни-Пух © (2008-11-10 16:00) [13]ошибка [Fatal Error] PrTest.dpr(2): Read error on "c:\program files\borland\delphi7\Lib\System.dcu"
У тебя компьютер плохой. менять надо.
← →
ssa (2008-11-10 16:19) [14]эту ошибку я победил
не могу not logged on Alias ZLAK - ora 01012
← →
ssa (2008-11-10 16:23) [15]для
Database1: TDatabase;
SP1: TStoredProc;
как свойства изначально выставить
(типа Active, SessionName, Connected,KeepConnection...
← →
ssa (2008-11-10 16:25) [16]ORA-01012 not logged on
Cause: A host language program issued an Oracle call, other than OLON or OLOGON, without being logged on to Oracle. This can occur when a user process attempts to access the database after the instance it is connected to terminates, forcing the process to disconnect.
← →
ANB (2008-11-11 18:49) [17]
> ssa (10.11.08 16:23) [15]
> для
> Database1: TDatabase;
> SP1: TStoredProc;
> как свойства изначально выставить
> (типа Active, SessionName, Connected,KeepConnection...
Тебе оракл честно говорит - законнектся сначала, потом дергай хранимки.
ODAC поставь - на седняшний момент одна из самых удобных библиотек.
← →
MsGuns © (2008-11-11 22:35) [18]Если работаете через BDE, то ей нужен алиас. Создайте и настройте его например в BDE администраторе, а затем подключите TDataBase к этому алиасу. Которче, справка по TDataBase + TSession Вам все подробно расскажет
← →
Petr V. Abramov © (2008-11-11 23:17) [19]
> Cause: A host language program issued an Oracle call, other
> than OLON or OLOGON
похоже, пытаются работать в режиме совместимости с Oracle7
Автор, скажи, какие компоненты используешь, версию Oracle, и как пытаешься коннектиться.
← →
ssa (2008-11-12 15:54) [20]Connected to:
Oracle8i Release 8.1.7.4.1
через
DataSource1: TDataSource;
Query1: TQuery;
Table1: TTable;
если указываю альяс для таблиц Paradox35
все срабатывает - вот фрагмент программы:
...
procedure TForm1.QurPsk(TmpIn:String);
begin
if Query1.State <> dsInactive then
Query1.close;
Query1.SQL.Clear;
Query1.SQL.Add(TmpIn);
try
if not Query1.Prepared then
begin
Query1.Unidirectional:=True;
Query1.Prepare;
end;
Query1.ExecSQL;
showmessage("insert");
except
on EDBEngineError do
begin showmessage("Запрос не выполнен !"); end;
end ;
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
TmpIn:="INSERT INTO W_ALL.DB(RN,COMPANY,DOCPREF,DOCNUMB,"+
"W_T, W_B, D_T, D_B, U_T, U_B, WM, TR, NOMEN,AGN)"+
" VALUES(" +
"8"+Edit1.Text +","+ //RN
"17100001" +","+ //COMPANY
"""+ Edit2.Text +"""+","+ //DOCPREF
"""+ Edit1.Text +"""+","+ //DOCNUMB
Edit5.Text +","+ //W_T
Edit6.Text +","+ //W_B
"""+ DateToStr(now) +"""+","+ //D_T
"""+ DateToStr(now) +"""+","+ //D_T
"""+ "VESOVAYA3" +"""+","+ //U_T
"""+ "VESOVAYA3" +"""+","+ //U_B
"""+ "Автовесы №3" +"""+","+ //WM
"""+ Edit2.Text +"""+","+ //TR
"""+ ComboBox2.Text +"""+","+ //NOMEN
"""+ ComboBox1.Text +"""+")"; //AGN}
Form1.QurPsk(TmpIn);
end;
...
но хотелось скидывать эту информацию в БД Oracle8i Release 8.1.7.4.1
← →
MsGuns © (2008-11-12 16:01) [21]Какое отношение [20] имеет к сабжу ?
К тому же код ужасный как по форме, так и по содержанию
← →
ssa (2008-11-12 16:35) [22][20] - пример переноса текстовых данных с д7 в парадох 35 таблицы,
если указываю альяс оракловый и оракловую таблицу в Table1,
то не могу приконнектиться к БД Oracle - ошибка ORA-01012 not logged on
компоненты для соединения используются следующие
DataSource1: TDataSource;
Query1: TQuery;
Table1: TTable;
← →
MsGuns © (2008-11-12 22:35) [23]Попробуйте открыть БД через SQL Explorer, используя созданный оракловый алиас
← →
ssa (2008-11-13 06:15) [24]БД через SQL Explorer открывается нормально
← →
Sergey13 © (2008-11-13 08:19) [25]> [20] ssa (12.11.08 15:54)
> if Query1.State <> dsInactive then
> Query1.close;
> Query1.SQL.Clear;
> Query1.SQL.Add(TmpIn);
> try
> if not Query1.Prepared then
> begin
> Query1.Unidirectional:=True;
> Query1.Prepare;
> end;
> Query1.ExecSQL;
Попробуй сократить до
Query1.SQL.Text=TmpIn;
try
Query1.ExecSQL;
← →
Petr V. Abramov © (2008-11-13 10:58) [26]
> ssa (12.11.08 16:35) [22]
> компоненты для соединения используются следующие
> DataSource1: TDataSource;
> Query1: TQuery;
> Table1: TTable;
попробуй Query8, должно сработать.
коннектишься через BDE? dbExpress?
← →
ssa (2008-11-13 15:01) [27]через BDE
← →
ssa (2008-11-13 15:04) [28]попробуй Query8, должно сработать.
коннектишься через BDE? dbExpress?
<Цитата>
Query8 ?
D8 - восьмая версия Делфи или?
← →
ssa (2008-11-13 15:09) [29]Может быть вставка не срабатывает, тк в оракловой таблице , если смотреть в девелопере есть последний столбик t.rowid ,не относящийся к структуре таблицы zl_weight_all (select t.*, t.rowid from zl_weight_all t)
???
← →
ssa (2008-11-13 15:15) [30]procedure TForm1.Button3Click(Sender: TObject);
begin
TmpIn:="DELETE FROM PARUS.ZL_WEIGHT_ALL";
Form1.QurPsk(TmpIn);
end;
не срабатывает даже при
procedure TForm1.QurPsk(TmpIn:String);
begin
showmessage(TmpIn);
Query1.SQL.Text:=TmpIn;
try
Query1.ExecSQL;
except
on EDBEngineError do
begin showmessage("Запрос не выполнен !"); end;
end ;
end;
а в экплоеере DELETE FROM PARUS.ZL_WEIGHT_ALL работает
← →
Petr V. Abramov © (2008-11-13 23:54) [31]
> через BDE
коннекться не через BDE, я этот глюкавнике не разбираюсь
← →
Petr V. Abramov © (2008-11-13 23:56) [32]
> Petr V. Abramov © (13.11.08 23:54) [31]
хотя твое "неработанье" с глюками BDE не связано (скорее всего), читай внимательно про TDatabase, TDataset, какие у них есть св-ва и нафих они нужны
← →
ssa (2008-11-14 08:44) [33]меняю оракловый альяс на альяс БД PDX35 - все начинает работать
сам оракл без бде работает (ODBC)
соединения через оракловые службы, tns listener и тд
но у базы есть альяс в бде
← →
ssa (2008-11-17 11:51) [34]Petr V. Abramov © (13.11.08 23:54) [31]
> через BDE
коннекться не через BDE, я этот глюкавнике не разбираюсь
<Цитата>
BDE точно глюкавник
получилось соединиться с СУБД Oracle 8.1.7.4 через ADO !!!
типа:
procedure TForm1.Button4Click(Sender: TObject);
begin
with ADOQuery1 do begin
Open;
Append;
try SimpleDataSet1.Active := false;
SimpleDataSet1.DataSet.Active := false;
SimpleDataSet1.DataSet.CommandText :=
"insert into parus.ssa_books2(NDOC,AGN,TR,NOMEN,WT,WB) values ( " +
"""" + Edit2.Text + """, " +
"""" + Edit3.Text + """, " +
"""" + Edit4.Text + """, " +
"""" + Edit5.Text + """, " +
"""" + Edit6.Text + """, " +
"""" + Edit7.Text + """)";
SimpleDataSet1.Active := true;
SimpleDataSet1.DataSet.Active := true;
except
end;
end;
использовались компоненты
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
SimpleDataSet1: TSimpleDataSet;
в ADOConnection1: TADOConnection;
правильно надо выбрать провайдера , а строка подключения у меня-
Provider=MSDAORA.1;Password=****;User ID=PARUS;Data Source=ZLAK
спасибо всем !!!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2009.08.30;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.005 c