|
Вопрос # 4 775/ вопрос открыт / |
|
Здравствуйте, эксперты!
как данные из TClientDataSet сохранить в таблицу?
Мини-форум вопроса
Всего сообщений: 9; последнее сообщение — 3 декабря 2010, 14:19; участников в обсуждении: 4.
1 декабря 2010, 16:00: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Программирование баз данных (БД) модератором min@y™
|
min@y™ (статус: Доктор наук), 1 декабря 2010, 16:02 [#1]:
В какую таблицу?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ерёмин А.А. (статус: *Администратор), 1 декабря 2010, 19:41 [#3]:
SQL-таблица? Какое-то новое научное открытие.
|
|
Казаков Николай Константинович (статус: 1-ый класс), 2 декабря 2010, 16:07 [#4]:
Есть база данных mdf, необходимо подключиться к ней и создать в этой базе таблицу, если выражаюсь не праильно извините с такой задачей столкнулся впервые. Таблица создается запросом sql.
|
|
Казаков Николай Константинович (статус: 1-ый класс), 3 декабря 2010, 10:15 [#5]:
таблицу удалось создать, возникла проблема с ее заполнение не работает запрос:
SQLQuery1.SQL.Add('INSERT INTO MyTable (VZPROJ) VALUES ("qw");');
выдает ошибку:
The name "qw" is not permitted in this context. Valid expressions are constant expressions, and (in some context) variables. Column
|
|
Вадим К (статус: Академик), 3 декабря 2010, 10:22 [#6]:
а в таблице mytable есть поле VZPROJ строкового типа? И кавычки там лучше наверно одинарные поставить.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Казаков Николай Константинович (статус: 1-ый класс), 3 декабря 2010, 10:42 [#7]:
да вы правы Вадим К. проблемма разрешилась нужно использовать апостроф. Еще один вопрос, при подключении базы данных вылезает запрос веести User_Name и Password можно ли как то отключить это окно. в настройках указал OS Autetication := true. но окно все равно вылезает, хоть и дает доступ после ввода соответсвующих данных
|
|
Вадим К (статус: Академик), 3 декабря 2010, 11:27 [#8]:
я не знаю, как к базе подключаетесь, поэтому не могу ничего порекомендовать. Хотя в некоторых компонентах есть что то "show_login_window"
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Казаков Николай Константинович (статус: 1-ый класс), 3 декабря 2010, 14:19 [#9]:
Как говориться "Если долго мучиться, что-нибудь получиться"))
Выкладываю код моей процедуры, может кому-нибудь пригодится, у меня работает. Использовал компоненты TSQLConnection, TSQLQuery с вкладки dbExpress.
procedure TForm1.Button2Click(Sender: TObject);
var stSQL: string;
i: integer;
begin
try
SQLConnection1.Params.Values['HostName']:=Server; // имя сервера
SQLConnection1.Params.Values['DataBase']:=MyBase ;
SQLConnection1.Params.Values['OS Authentication']:= 'True';
SQLConnection1.Open;
except
MessageDlg('Соединение с БД невозможно', mtError, [mbOK], 0);
exit;
end;
SQLQuery1.SQL.Add('IF EXISTS (SELECT * FROM sysobjects WHERE name ='+''''+'MyTable'+''''+') DELETE FROM MyTable;');
SQLQuery1.ExecSQL;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('IF EXISTS (SELECT * FROM sysobjects WHERE name ='+''''+'MyTable'+''''+') DROP TABLE MyTable;');
SQLQuery1.ExecSQL;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('CREATE TABLE MyTable (VZPROJ varchar(50), PARTITION varchar(50), '+
'MAKER varchar(50), STATE varchar(50), DATECRT varchar(50), DATEP varchar(50), '+
'DATEF varchar(50), DATETOCRD varchar(50), DATECRD varchar(50), DATEPLN varchar(50), '+
'DATEFIN varchar(50), DATECNCL varchar(50))');
SQLQuery1.ExecSQL;
cdsList.First;
for i:=1 to cdsList.RecordCount do
begin
stSQL:='INSERT INTO MyTable VALUES(';
if cdsList.FieldByName('VZPROJ').AsString<>'' then
stSQL:=stSQL+' '''+cdsList.FieldByName('VZPROJ').AsString+''','
else
stSQL:=stSQL+' NULL,';
if cdsList.FieldByName('PARTITION').AsString<>'' then
stSQL:=stSQL+' '''+cdsList.FieldByName('PARTITION').AsString+''','
else
stSQL:=stSQL+' NULL,';
if cdsList.FieldByName('MAKER').AsString<>'' then
stSQL:=stSQL+' '''+cdsList.FieldByName('MAKER').AsString+''','
else
stSQL:=stSQL+' NULL,';
if cdsList.FieldByName('STATE').AsString<>'' then
stSQL:=stSQL+' '''+cdsList.FieldByName('STATE').AsString+''','
else
stSQL:=stSQL+' NULL,';
if cdsList.FieldByName('DATECRT').AsString<>'' then
stSQL:=stSQL+' '''+cdsList.FieldByName('DATECRT').AsString+''','
else
stSQL:=stSQL+' NULL,';
if cdsList.FieldByName('DATEP').AsString<>'' then
stSQL:=stSQL+' '''+cdsList.FieldByName('DATEP').AsString+''','
else
stSQL:=stSQL+' NULL,';
if cdsList.FieldByName('DATEF').AsString<>'' then
stSQL:=stSQL+' '''+cdsList.FieldByName('DATEF').AsString+''','
else
stSQL:=stSQL+' NULL,';
if cdsList.FieldByName('DATETOCRD').AsString<>'' then
stSQL:=stSQL+' '''+cdsList.FieldByName('DATETOCRD').AsString+''','
else
stSQL:=stSQL+' NULL,';
if cdsList.FieldByName('DATECRD').AsString<>'' then
stSQL:=stSQL+' "'+cdsList.FieldByName('DATECRD').AsString+''','
else
stSQL:=stSQL+' NULL,';
if cdsList.FieldByName('DATEPLN').AsString<>'' then
stSQL:=stSQL+' '''+cdsList.FieldByName('DATEPLN').AsString+''','
else
stSQL:=stSQL+' NULL,';
if cdsList.FieldByName('DATEFIN').AsString<>'' then
stSQL:=stSQL+' '''+cdsList.FieldByName('DATEFIN').AsString+''','
else
stSQL:=stSQL+' NULL,';
if cdsList.FieldByName('DATECNCL').AsString<>'' then
stSQL:=stSQL+' '''+cdsList.FieldByName('DATECNCL').AsString+''''
else
stSQL:=stSQL+' NULL';
stSQL:=stSQL+');';
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add(stSQL);
SQLQuery1.ExecSQL;
cdsList.Next;
end;
end;
Вадим К. огромное спасибо за участие и помощь
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|