Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
2-1246624890
Художник
2009-07-03 16:41
2009.08.30
Сброс размера динамического массива


2-1246696231
Gray
2009-07-04 12:30
2009.08.30
Ккак узнать номер выделенной строки в DBGrid?


2-1246353205
worldmen
2009-06-30 13:13
2009.08.30
Алгоритм перемещения курсора мыши


2-1246427745
lewka
2009-07-01 09:55
2009.08.30
Отправка электроной почты


15-1246337441
desc
2009-06-30 08:50
2009.08.30
Общий вопрос по базам данных





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский