| 
| 
 | Вопрос # 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;
 
 Вадим К. огромное спасибо за участие и помощь
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |