Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.76 MB
Время: 0.026 c
1-8875            Rust_br               2002-01-16 13:27  2002.02.04  
Проблема с Caption ом у MDIChild а


3-8766            Designer              2002-01-06 12:56  2002.02.04  
Можно ли как-нибудь отсортированные данныепотом редактировать в гриде?


6-8968            atmospheric           2001-11-12 17:15  2002.02.04  
NMHTTP !!!


1-8817            DJ X                  2002-01-19 15:52  2002.02.04  
Web браузер


1-8842            Nicolas_              2002-01-14 17:41  2002.02.04  
Dock n drop Как убрать кнопку с заголовка прилепленного окна?