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

Вниз

перенос текстовых данных с Дельфи формы в таблицу 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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.015 c
15-1246310150
Cerberus
2009-06-30 01:15
2009.08.30
Вопрос про OEM лицензию WIN.


15-1246132501
Loginov Dmitry
2009-06-27 23:55
2009.08.30
DBF


1-1213076858
Альф
2008-06-10 09:47
2009.08.30
Странное поведение Variant при импорте из Excel


1-1212768112
San1712
2008-06-06 20:01
2009.08.30
Как передать данные в процедуру ?


2-1246386849
AndrewG
2009-06-30 22:34
2009.08.30
Modal