Hallo, ich habe hier ein kleines Programm, das soll eine dbase Datenbank in eine vorhandenen Accessdatenbank kopieren
Doch immer wenn ich die SQL Anweisung starte kommt immer die Meldung, dass er dei Datei nicht finden kann, obwohl diese da ist.
Er möchte auch immer eine Datenbnak im Format *.db haben (Paradox) ich möchte allerdings DBase also *.dbf Dateien verwenden.
Wo liegt mein Denkfehler?
hier der Programmcode
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82:
| procedure TForm1.FormCreate(Sender: TObject); begin Table1.DatabaseName := (dbverzeichnis); Session.GetTableNames(Table1.DatabaseName, '*.dbf', False, False, ComboBox1.Items); ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=lexicon.mdb;Persist Security Info=False' end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; s: string;
function getAccessType(fd: TFieldDef): string; var ft: TFieldType; begin ft := fd.DataType; case ft of ftAutoInc: Result := 'COUNTER'; ftString: Result := 'TEXT(' + IntToStr(fd.Size) + ')'; ftSmallint: Result := 'SMALLINT'; ftInteger: Result := 'INTEGER'; ftWord: Result := 'WORD'; ftBoolean: Result := 'YESNO'; ftFloat: Result := 'FLOAT'; ftCurrency: Result := 'CURRENCY'; ftDate, ftTime, ftDateTime: Result := 'DATETIME'; ftBlob, ftGraphic: Result := 'LONGBINARY'; ftMemo, ftFmtMemo: Result := 'MEMO' else Result := 'MEMO' end end; begin Table1.TableName := ComboBox1.Text; label2.Caption:=Table1.TableName; Table1.FieldDefs.Update; s := 'CREATE TABLE ' + Table1.TableName + ' ('; with Table1.FieldDefs do begin for i := 0 to Count - 1 do begin s := s + ' ' + Items[i].Name; s := s + ' ' + getAccessType(Items[i]); s := s + ',' end; s[Length(s)] := ')' end; Memo1.Clear; Memo1.Lines.Add(s) end;
procedure TForm1.Button2Click(Sender: TObject); begin try ADOCommand1.CommandText := 'DROP TABLE ' + ComboBox1.Text; ADOCommand1.Execute except end; ADOCommand1.CommandText := Memo1.Text; ADOCommand1.Execute end;
procedure TForm1.Button3Click(Sender: TObject); var i: Integer; begin Table1.Open; ADOTable1.TableName := ComboBox1.Text; ADOTable1.Open; try while not Table1.EOF do begin ADOTable1.Insert; for i := 0 to Table1.Fields.Count - 1 do if not (Table1.FieldDefs.Items[i].DataType = ftAutoInc) then ADOTable1.FieldByName(Table1.FieldDefs[i].Name).Value := Table1.Fields[i].Value; ADOTable1.Post; Table1.Next end; finally Table1.Close; ADOTable1.Close end end;
procedure TForm1.DirectoryEdit1Change(Sender: TObject); begin dbverzeichnis := directoryedit1.Text; end;
end. |