Форум: "Базы";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
ВнизПолучаю ошибку при создании таблицы через Tquery. Почему ??? Найти похожие ветки
← →
derr (2002-01-05 11:25) [0]Локалка Fox драйвер
if savedialog1.execute then
begin
with Table1 do
begin
Active := False;
DatabaseName := extractfiledir(savedialog1.filename);
TableName := extractfilename(SaveDialog1.fileName);
end;
database1.databasename:=extractfiledir(savedialog1.filename);
query1.databasename:=extractfiledir(savedialog1.filename);
Query1.SQL.Clear;
Query1.RequestLive:=true;
vrem:=Trim(ChangeFileExt(extractfilename(SaveDialog1.fileName)," "));
query1.sql.Add("CREATE TABLE ""+vrem+""(");
query1.sql.Add("last_name CHAR(20),");
query1.sql.Add("first_name CHAR(15),");
query1.sql.Add("salary NUMERIC(10,2))");
query1.ExecSQL;
end; //
raised exceptin class EDBEngine error with message "invalid parameter.". Где этот чертов инвалид ?
← →
panov (2002-01-05 12:14) [1]Query1.RequestLive := False;
← →
derr (2002-01-05 12:39) [2]Не помогло. Больной потел, но...
← →
panov (2002-01-05 13:04) [3]"database1.databasename:=extractfiledir(savedialog1.filename);"
Это что означает?
database1.AliasName прописывается имя алиаса в BDE.
database1.databasename := "MyDB";
database1.name := "MyDB";
query1.databasename := database1.databasename;
Перед использованием Query неплохо бы еще database1.Open;
В переменной vrem непонятно что находится (наверное, мы отгадаем).
в query1.sql.Add("CREATE TABLE ""+vrem+""("); у тебя двойные кавычки. Используй одинарные.
← →
derr (2002-01-05 13:27) [4]"database1.databasename:=extractfiledir(savedialog1.filename);"
имя директории - для Foxpro это имя базы
database1.databasename := "MyDB"; тоже
query1.databasename := database1.databasename; тоже
Vrem = имя файла/таблицы - new.dbf
Что же open если пустая ?
" из примера
Не понимаю ...
← →
derr (2002-01-05 13:42) [5]И кавычки поменял. Все тоже...
А можно ли программно содать алиас или только ручками ?
← →
panov (2002-01-05 16:09) [6]Database1.DatabaseName - это не имя каталога.
Точно так же, как и Database1.Name.
1. Присвой Database1.DatabaseName и Database1.Name нормальные имена, как и всем компоннентам
2. Database1.DriverName := "STANDART";
3. Database1.Params.Values["PATH"] :="c:\MyPath\";
4. В Query1.SQL не надо указывать полный путь, т.к. в Database1.Params он будет указан.
← →
Desdechado (2002-01-05 18:06) [7]query.checkparams := false;
← →
panov (2002-01-05 18:40) [8]>Desdechado © (05.01.02 18:06)
У него нет параметров в запросе...
← →
ancor (2002-01-05 18:42) [9]query.checkparams := false;
query.paramcheck на самом деле
а с Database1.Params.Values["PATH"] :="c:\MyPath\";
Оно сказало: table does not exist
Куды бечь ?
← →
panov (2002-01-05 18:53) [10]Оно сказало - это что?
← →
panov (2002-01-05 18:54) [11]Не люблю, когда на ходу ники меняют. Спасибо за общение.
← →
derr (2002-01-05 18:55) [12]> ancor
Ты прав как никогда. Причем имя таблицы правильно говорит !
Как задавал NEW.DBF
В чем дело ?
← →
gun19456 (2002-01-05 19:22) [13]Не обижайтесь на молодых и зеленых.
← →
derr (2002-01-05 19:33) [14]Может и молодой, а ответить никто не может !
← →
derr (2002-01-05 20:18) [15]Помощи прошу...
← →
Romul (2002-01-06 17:28) [16]2derr
query1.sql.Add("salary NUMERIC(10,2))");
А че там за скобка, по моему скобок много вот она и матюгается!!!!
И на будущее, используй блок TRY...EXCEPT, а то у тебя сплошь "опасные" операции типа ExecSQL. Поверь обработка исключений полезная штука.
← →
Desdechado (2002-01-06 17:47) [17]вот, за пару минут сделал:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls;
type
TForm1 = class(TForm)
Database1: TDatabase;
Query1: TQuery;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
database1.Connected := true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
query1.ExecSQL;
query1.close;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if( fileexists( "c:\_work_\aa.dbf" ) ) then
Application.Messagebox( "file exists","ok", ID_OK )
else
Application.Messagebox( "file NOT exists","error", ID_OK );
end;
end.
← →
Desdechado (2002-01-06 18:18) [18]и dfm к нему:
object Form1: TForm1
Left = 195
Top = 103
Width = 544
Height = 375
Caption = "Form1"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 206
Top = 106
Width = 75
Height = 25
Caption = "connect"
TabOrder = 0
OnClick = Button1Click
end
object Button2: TButton
Left = 306
Top = 104
Width = 95
Height = 25
Caption = "create table"
TabOrder = 1
OnClick = Button2Click
end
object Button3: TButton
Left = 206
Top = 146
Width = 75
Height = 25
Caption = "test file"
TabOrder = 2
OnClick = Button3Click
end
object Database1: TDatabase
DatabaseName = "tst"
DriverName = "STANDARD"
LoginPrompt = False
Params.Strings = (
"PATH=c:\_work_"
"DEFAULT DRIVER=dbase"
"LANGDRIVER=dBase RUS cp866")
SessionName = "Default"
Left = 60
Top = 58
end
object Query1: TQuery
DatabaseName = "tst"
ParamCheck = False
SQL.Strings = (
"create table aa ( tt integer, ii char(5) )")
Left = 118
Top = 116
end
end
самое интересное в параметрах database1
← →
derr (2002-01-07 14:23) [19]Сделал сам всё дело было в QUERY.DataSource
if savedialog1.execute then
begin
if FileExists(savedialog1.filename) then
DeleteFile(savedialog1.filename);
//QUERY.DataSource Обязательно пустое иначе взрыв !!!
with Session do
begin
ConfigMode := cmSession;
try
AddStandardAlias("TEMPDB", extractfilepath(savedialog1.filename), "FOXPRO"); //FOXPRO
finally
ConfigMode := cmAll;
end;
end;
with database1 do
begin
databasename:="tst";
LoginPrompt := False;
Params.Values["PATH"] :=extractfilepath(savedialog1.filename);
DriverName:="Microsoft FoxPro Driver (*.dbf)";
AliasName:="TEMPDB";
end;
query1.paramcheck := false;
Query1.DatabaseName := "tst";
Query1.SQL.Clear;
vrem:=Trim(ChangeFileExt(extractfilename(SaveDialog1.fileName)," "));
query1.sql.Add("CREATE TABLE """+vrem+""" (");
query1.sql.Add("last_name CHAR(20),");
query1.sql.Add("first_name CHAR(15),");
query1.sql.Add("salary DECIMAL(10,2));");
query1.ExecSQL;
query1.close;
end; // от savedialog
← →
derr (2002-01-07 14:30) [20]Сделал сам всё дело было в QUERY.DataSource
if savedialog1.execute then
begin
if FileExists(savedialog1.filename) then
DeleteFile(savedialog1.filename);
//QUERY.DataSource - нельзя заполнять !!!
with Session do
begin
ConfigMode := cmSession;
try
AddStandardAlias("TEMPDB", extractfilepath(savedialog1.filename), "FOXPRO"); //FOXPRO
finally
ConfigMode := cmAll;
end;
end;
with database1 do
begin
databasename:="tst";
LoginPrompt := False;
Params.Values["PATH"] :=extractfilepath(savedialog1.filename);
DriverName:="Microsoft FoxPro Driver (*.dbf)";
AliasName:="TEMPDB";
end;
query1.paramcheck := false;
Query1.DatabaseName := "tst";
Query1.SQL.Clear;
vrem:=Trim(ChangeFileExt(extractfilename(SaveDialog1.fileName)," "));
query1.sql.Add("CREATE TABLE """+vrem+""" (");
query1.sql.Add("last_name CHAR(20),");
query1.sql.Add("first_name CHAR(15),");
query1.sql.Add("salary DECIMAL(10,2));");
query1.ExecSQL;
query1.close;
end; // от savedialog
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.005 c