Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
7-9011
stalker17
2001-10-20 16:00
2002.02.04
COM порт


3-8758
ancor
2002-01-05 14:14
2002.02.04
Можно ли программно создать алиас BD


3-8750
Искатель
2002-01-03 01:06
2002.02.04
Как в DBGridEh запретить обход всех записей перед отображением данных


1-8822
Аркадий
2002-01-20 00:27
2002.02.04
Физические и логические диски


7-9007
gunner
2001-10-25 18:30
2002.02.04
Работа с MCI устройством.... !





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский