全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:7071
推到 Plurk!
推到 Facebook!

Insufficient memory for this operation

 
kan0515
中階會員


發表:56
回覆:120
積分:50
註冊:2002-06-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-07-30 17:11:50 IP:211.23.xxx.xxx 未訂閱
我想將excel中的資料讀出 寫入access中 但是不知道為何出現此問題 麻煩大家幫我看看,謝謝
附加檔案:00019947_excel.zip
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-07-30 19:55:57 IP:203.217.xxx.xxx 未訂閱
1. 內含一TCoolForm未附上忽略此元件    2. 紅色部分不正確,原Comment之部分才對    3. 雙引號改為單引號後可執行    //   sql:='Insert INTO file(DirId,FileId,File) Values';// (:filed[1], :filed[2],:filed[3],:filed[4],:filed[5],:filed[6]'; sql:='Insert INTO file(DirId,FileId,File,KeyWord,Script,Fav) Values';// (:filed[1], :filed[2],:filed[3],:filed[4],:filed[5],:filed[6]'; //將資料寫入access中 sql:=sql '(''' field[1]; sql:=sql ''',''' field[2]; sql:=sql ''',''' field[3]; sql:=sql ''',''' field[4]; sql:=sql ''',''' field[5]; sql:=sql ''',''' field[6] ''')'; Query1.Sql.Add(sql);
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-07-30 19:57:41 IP:203.217.xxx.xxx 未訂閱
引言: 1. 內含一TCoolForm未附上忽略此元件, 刪除之 2. 紅色部分不正確,原Comment之部分才對 3. 雙引號改為單引號後可執行,看不到你說的問題 4. 是否為TCoolForm造成? // sql:='Insert INTO file(DirId,FileId,File) Values';// (:filed[1], :filed[2],:filed[3],:filed[4],:filed[5],:filed[6]'; sql:='Insert INTO file(DirId,FileId,File,KeyWord,Script,Fav) Values';// (:filed[1], :filed[2],:filed[3],:filed[4],:filed[5],:filed[6]'; //將資料寫入access中 sql:=sql '(''' field[1]; sql:=sql ''',''' field[2]; sql:=sql ''',''' field[3]; sql:=sql ''',''' field[4]; sql:=sql ''',''' field[5]; sql:=sql ''',''' field[6] ''')'; Query1.Sql.Add(sql);
kan0515
中階會員


發表:56
回覆:120
積分:50
註冊:2002-06-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-07-31 09:56:06 IP:211.23.xxx.xxx 未訂閱
謝謝…原來就是單引號的問題 感激再感激 再請問一下 那如何可以讓開啟資料庫時 那username及password 不要出現 因為我沒有用到Tdatabase這個元件 那該如何設定呢 謝謝
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-07-31 10:53:58 IP:61.219.xxx.xxx 未訂閱
引言: 謝謝…原來就是單引號的問題 感激再感激 再請問一下 那如何可以讓開啟資料庫時 那username及password 不要出現 因為我沒有用到Tdatabase這個元件 那該如何設定呢 謝謝
TDatabase元件之LoginPrompt設為False, params填入Login所須資料
kan0515
中階會員


發表:56
回覆:120
積分:50
註冊:2002-06-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-07-31 15:22:51 IP:211.23.xxx.xxx 未訂閱
可是我的odbc是在程式設定的 所以就沒有使用到tdatabase這個元件 能不能在odbc宣告時就設定或是寫在程式中呢
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-08-01 11:15:46 IP:61.219.xxx.xxx 未訂閱
引言: 可是我的odbc是在程式設定的 所以就沒有使用到tdatabase這個元件 能不能在odbc宣告時就設定或是寫在程式中呢
還是可以使用TDatabase元件, 放一個DataBase元件, aliasName=MS Access 97 Database 任意設一個DataBaseName, query之databasename填入此database.databasename
procedure TForm1.SetupODBC;
var
  Driver,Attributes:string;
begin
 // 建立一個 ODBC_NAME 指向 Access的 dream.mdb
 Driver := 'Microsoft Access Driver (*.mdb)';
 Attributes := 'DSN=ODBC_NAME;'   'dbq=dream.mdb';
 if SQLConfigDataSource(0, 4, PChar(Driver), PChar(Attributes)) then

   with database1 do begin
     CLOSE;
     params.Clear;
     params.Add('ODBC DSN=ODBC_NAME');
     loginprompt:=false;
     try
       open;
     except
       on E:Exception do showmessage(E.message);
     end;
   end      //howmessage('資料庫設定成功')
 else
  showmessage('資料庫設定失敗');
end;
[NOTE]為何不改用ADO, Excel, .mdb均用ADO連, 效率好太多了
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-08-01 14:12:22 IP:61.219.xxx.xxx 未訂閱
提供使用ADO之方式供你參考, 不須open Excel, 不須Runtime Create ODBC DesignTime加入一TADOQuery (用來連.mdb) 連Excel之ADOQuery Runtime create
...    var form1:TForm1;
  ExcelConnectStr : string; //用來連Excel檔之字串    implementation    {$R *.DFM}
//輸入Excel之檔, Create一ADOQuery
function OpenXlsAsADO(owner:TComponent;fname:string;sheetname:string='sheet1'):TAdoQUery;
var s,sht:string;
begin
  Result:=TAdoQuery.Create(owner);
  try
    s:=AnsiReplaceStr(ExcelConnectstr, 'xxx.xls', fname);
    Result.ConnectionString:=s;
    sht:='[' SheetName '$' ']';
    Result.sql.text:='select * from ' sht;
    Result.open;
  except
    result.Free;
  end;
end;    procedure TForm1.Button1Click(Sender: TObject);
var sql:string;
  ADOQ:TADOQuery;
begin
  if OpenDia1.execute then begin
    ADOQ:=OpenXlsAsADO(self,OpenDia1.filename);  //open .xls檔成ado
// adoquery1連向 .mdb
    AdoQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;' 
            'Data Source=D:\bbb\dream.mdb;Persist Security Info=False';
    ADOQ.first;
    while not ADOQ.eof do begin
      sql:='Insert INTO file(DirId,FileId,File,KeyWord,Script,Fav) Values';
      sql:=sql '(''' adoq.Fields[0].asstring;
      sql:=sql ''',''' adoq.Fields[0].asstring;
      sql:=sql ''',''' adoq.Fields[0].asstring;
      sql:=sql ''',''' adoq.Fields[0].asstring;
      sql:=sql ''',''' adoq.Fields[0].asstring;
      sql:=sql ''',''' adoq.Fields[0].asstring ''')';
      AdoQuery1.SQL.Text:=sql;
      AdoQuery1.ExecSQL;
      AdoQ.Next;
    end;
    adoq.free;
  end;
end;    initialization  //連Excel之樣板字串
  ExcelConnectstr:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;' 
                 'Data Source=xxx.xls;' 
                 'Mode=Share Deny None;Extended Properties=Excel 8.0;' 
                 'Persist Security Info=False;Jet OLEDB:System database="";' 
                 'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";' 
                 'Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;' 
                 'Jet OLEDB:Global Partial Bulk Ops=2;' 
                 'Jet OLEDB:Global Bulk Transactions=1;' 
                 'Jet OLEDB:New Database Password="";' 
                 'Jet OLEDB:Create System Database=False;' 
                 'Jet OLEDB:Encrypt Database=False;' 
                 'Jet OLEDB:Don''t Copy Locale on Compact=False;' 
                 'Jet OLEDB:Compact Without Replica Repair=False;' 
                 'Jet OLEDB:SFP=False';    end.
kan0515
中階會員


發表:56
回覆:120
積分:50
註冊:2002-06-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-08-06 09:30:25 IP:211.23.xxx.xxx 未訂閱
謝謝…謝謝… 就是因為對這部份的程式不太熟 所以才會東捉一個西捉一個的 太謝謝了
系統時間:2024-05-06 23:48:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!