Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 02:31 18.05.24 
Компютри и Интернет
   >> Delphi
Всички теми Следваща тема *Кратък преглед

Тема как с adotable да създам временна таблица в MSSQLнови  
Авторfreaa (Нерегистриран)
Публикувано14.11.06 00:06



var
AdoTableTemp: TADOTable;
begin

ADOTable1.ConnectionString := 'Provider=SQLOLEDB.1;'+
'Password=r9p5zh;'+
'Persist Security Info=True;'+
'User ID=sa;'+
'Initial Catalog='+Edit3.Text+';'+
'Data Source=sqldb';


ADOTable1.Close;
ADOTable1.TableName := Edit1.Text;
try
ADOTable1.Open;
except
on E:Exception do begin
MessageDlg('Error Opening Table ' + E.ClassName, mtError, [mbOK], 0);
ShowMessage(E.Message);
end;//on
end;//try


try
AdoTableTemp := TADOTable.Create(nil);
AdoTableTemp.ConnectionString := 'Provider=SQLOLEDB.1;'+
'Password=r9p5zh;'+
'Persist Security Info=True;'+
'User ID=sa;'+
'Initial Catalog=tempdb;'+
'Data Source=sqldb';

//AdoTableTemp.Close;
AdoTableTemp.FieldDefs := ADOTable1.FieldDefs;
AdoTableTemp.TableName := 'dbo.temp1';

{ Call the CreateTable method to create the table }
{ как с adotable да създам временна таблица в MSSQL server }
AdoTableTemp.CreateTable;

AdoTableTemp.Open;

finally
ADOTable1.Free;
end;


end;



Тема Re: как с adotable да създам временна таблица в MSSQL [re: freaa]  
АвторИвaнчo (Нерегистриран)
Публикувано14.11.06 09:23




Всяка една таблица създадена в SQL 2000, която е с префикс #, например #MyTempTable, е временна.
SQL 2000 потдържа два вида временни таблици - локални и глобални.
Локалните са видими само за сесията която ги е създала.
Глобалните - досещай се сам.
Локалните се разрушават автоматично при затваряне на сесията, процеса, който ги е създал.
Глобалните - когато сесията която ги е създала завърши, и всички останали процеси престанат да я използват.
Локалните се създават като префикса # е един, глобалните - префикса се повтаря, т.е. е ## Например:
#LocalTempTable
##GlobalTempTable

Използвай Command: _Command; // uses AdoInt

Command._Set_ActiveConnection(ConnectionString);
Command.CommandType := adCmdText;
Command.CommandText := 'CREATE TABLE #MyLocalTable (Colona1 INT PRIMARY KEY)';
Command.Execute(VarRecsAffected, EmptyParam, adCmdText); // VarRecsAffected:OleVariant




Тема Re: как с adotable да създам временна таблица в MSSQLнови [re: Ивaнчo]  
Авторfreaa (Нерегистриран)
Публикувано14.11.06 11:17



пич много ти благодаря за отговора.
Но въпроса ми беше. Как това да стане с AdoTable?
Защо с него. Ако забелязваш кода, който съм дал... какво прави той.
Отваря някакъв тайбъл и после криейтва друг Тable обект от същия тип -adotable. Преди да отвори новия обект взима всички дефиниции на стария. По този начин ако има физически Table (който по принцип се създава с CreateTable-но само за BDE важи тази команда трябва при отварянето на новия да се създаде автоматично същия като стария само, че без данни естествено.)

Не искам всеки път да описвам колони типове и размери.
Това си е жива загуба на време. Има или няма възможност с три реда както си му е думата да стане това. Ами ако тейбъла ми има 300 колони от различен вид и размер. Абах мама му. Аз по хубаво въобще да не създавам временни тайбъли.

Има ли начин или няма?



Тема Re: как с adotable да създам временна таблица в MSSQLнови [re: freaa]  
Авторfrea (Нерегистриран)
Публикувано14.11.06 17:42



пак да си отговоря сам.
Явно това става само с ADOX. Така ли е?
Е свършиха се мастарите. Всичките утидоха по Европата.



Тема Re: как с adotable да създам временна таблица в MSSQLнови [re: frea]  
АвторИвaнчo (Нерегистриран)
Публикувано15.11.06 10:00



Отговор в същия дух


Няма нищо *пич*, ще се научиш. Това че искаш да става с TAdoTable, не означава, че може да стане с него. Имаш код, работещ е, ако искаш - използвай го, ако не - няма да се гръмна я. Пък за таблица с 300 колони... Аз бих се отказал от програмирането, направо ще се пробвам да продавам банички, ако някой ми каже че трябва да използвам таблица с повече от 10-на, макс 15-на колони... Има дебели книги, там пише нещо за нормализация и денормализация...
Както и да е, щом трябва - и 300 колони нека да са...



Тема Re: Втори отговор в същия духнови [re: freaa]  
АвторИвaнчo (Нерегистриран)
Публикувано15.11.06 10:15



Втори отговор в същия дух


Ами готин, SQL2000 , потдържа синтаксиса - SELECT INTO
След като става въпрос за създаване на копие на таблица, използвай този израз, и го изпълни с един Command обект
SELECT * INTO NewTempTable FROM OriginalTable WHERE 1=-1
Това ще ти създаде празно копие на таблицата, но без разните му там индекси
Ако искаш наистина да е временна таблица само за сесията, сложи и едно # отпред, т.е да стане #NewTempTable




Тема Re: Втори отговор в същия духнови [re: Ивaнчo]  
Авторфpea (Нерегистриран)
Публикувано16.11.06 03:33



благодаря пич.
Дано поне ключовете ги създава :)



Тема Re: как с adotable да създам временна таблица в MSSQLнови [re: Ивaнчo]  
Авторфpea (Нерегистриран)
Публикувано16.11.06 10:53



thank you :)




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.