СПЕШЕН ВЪПРОС
5 отговора
234 прегледа
СПЕШЕН ВЪПРОС
Някой може ли да ми каже:
1. Как да създам MS Access база данни (C:\TEST.MDB) със Delphi код по време на изпълнение на програмата (съответно една или две таблици вътре)
2. Как мога да получа информация от програма на Delphi за структурата на MS Access таблица (имена и типове на полета)
Възможно ли е за тази цел да се използвува ADO?
Предварително благодаря!
1. Как да създам MS Access база данни (C:\TEST.MDB) със Delphi код по време на изпълнение на програмата (съответно една или две таблици вътре)
2. Как мога да получа информация от програма на Delphi за структурата на MS Access таблица (имена и типове на полета)
Възможно ли е за тази цел да се използвува ADO?
Предварително благодаря!
Re: СПЕШЕН ВЪПРОС
Не съм създавал база данни с Delphi, но съм правил следното нещо.
Създавам празна база данни посредством Access , след това ако е нужно я копирам и запълвам с нужните таблици.
За втория въпрос можеш да използваш функцията по-долу. Това е информация за схемата (информация за структурата на базата данни и нейното съдържание). В зависимост от параметъра TSchemaInfo в ADODataSet се връщат различни стойности (например siColumns връща имена на таблици, полета, тип на полетата, дължини и т.н.). Процедурата по долу е част от експеримент, който си правих. Извеждах данните в Excel и там проверявам кое какво е.
Експериментирай и ти и използвай това, което ти трябва.
TxtSchemaInfo е текст само за Info.
Uses ADODB;
procedure TForm1.BitBtn1Click(Sender: TObject);
const
TxtSchemaInfo :array [0..39] of string =
('siAsserts', 'siCatalogs', 'siCharacterSets', 'siCollations',
'siColumns', 'siCheckConstraints', 'siConstraintColumnUsage',
'siConstraintTableUsage', 'siKeyColumnUsage', 'siReferentialConstraints',
'siTableConstraints', 'siColumnsDomainUsage', 'siIndexes',
'siColumnPrivileges', 'siTablePrivileges', 'siUsagePrivileges',
'siProcedures', 'siSchemata', 'siSQLLanguages', 'siStatistics',
'siTables', 'siTranslations', 'siProviderTypes', 'siViews',
'siViewColumnUsage', 'siViewTableUsage', 'siProcedureParameters',
'siForeignKeys', 'siPrimaryKeys', 'siProcedureColumns', 'siDBInfoKeywords',
'siDBInfoLiterals', 'siCubes', 'siDimensions', 'siHierarchies', 'siLevels',
'siMeasures', 'siProperties', 'siMembers', 'siProviderSpecific');
var
TS:TSchemaInfo;
I:Integer;
begin
ADOConnection1.Open;
for I:= Ord(Low(TS)) to Ord(High(TS)) do
begin
TS:=TSchemaInfo(I);
ShowMessage('Ok');
try
ADOConnection1.OpenSchema(TS,EmptyParam,EmptyParam,ADODataSet1);
except
end;
end;
end;
Създавам празна база данни посредством Access , след това ако е нужно я копирам и запълвам с нужните таблици.
За втория въпрос можеш да използваш функцията по-долу. Това е информация за схемата (информация за структурата на базата данни и нейното съдържание). В зависимост от параметъра TSchemaInfo в ADODataSet се връщат различни стойности (например siColumns връща имена на таблици, полета, тип на полетата, дължини и т.н.). Процедурата по долу е част от експеримент, който си правих. Извеждах данните в Excel и там проверявам кое какво е.
Експериментирай и ти и използвай това, което ти трябва.
TxtSchemaInfo е текст само за Info.
Uses ADODB;
procedure TForm1.BitBtn1Click(Sender: TObject);
const
TxtSchemaInfo :array [0..39] of string =
('siAsserts', 'siCatalogs', 'siCharacterSets', 'siCollations',
'siColumns', 'siCheckConstraints', 'siConstraintColumnUsage',
'siConstraintTableUsage', 'siKeyColumnUsage', 'siReferentialConstraints',
'siTableConstraints', 'siColumnsDomainUsage', 'siIndexes',
'siColumnPrivileges', 'siTablePrivileges', 'siUsagePrivileges',
'siProcedures', 'siSchemata', 'siSQLLanguages', 'siStatistics',
'siTables', 'siTranslations', 'siProviderTypes', 'siViews',
'siViewColumnUsage', 'siViewTableUsage', 'siProcedureParameters',
'siForeignKeys', 'siPrimaryKeys', 'siProcedureColumns', 'siDBInfoKeywords',
'siDBInfoLiterals', 'siCubes', 'siDimensions', 'siHierarchies', 'siLevels',
'siMeasures', 'siProperties', 'siMembers', 'siProviderSpecific');
var
TS:TSchemaInfo;
I:Integer;
begin
ADOConnection1.Open;
for I:= Ord(Low(TS)) to Ord(High(TS)) do
begin
TS:=TSchemaInfo(I);
ShowMessage('Ok');
try
ADOConnection1.OpenSchema(TS,EmptyParam,EmptyParam,ADODataSet1);
except
end;
end;
end;
Re: СПЕШЕН ВЪПРОС
Здравейте!
Тоя пример е меко казано "странен". Съдържа константа която не се ползва и некъв цикъл който явно цикли от 0 до 39 но е записано по некъв гениален начин(много ме дразни).
В MSDN има инфо зо openschema както и в хелпа на делфито.
Венцислав Александрийски
Тоя пример е меко казано "странен". Съдържа константа която не се ползва и некъв цикъл който явно цикли от 0 до 39 но е записано по некъв гениален начин(много ме дразни).
В MSDN има инфо зо openschema както и в хелпа на делфито.
Венцислав Александрийски
Re: СПЕШЕН ВЪПРОС
Не бих искал да си хвърляме разни епитети в пространството. Все пак сме се събрали да си оказваме помощ. Примера действително не е гениален (но ако не си забелязал това е част от експеримент, като ShowMessage е добавено допълнително за да спира и да се вижда информацията), затова пък работи, а и не се иска гениалност.
Re: СПЕШЕН ВЪПРОС
Здравей!
Не съм целял да те обидя! Просто се поизнервих от начина на записване на цикъла и предефинирането на типа дето дори не се и използва. Неприемай нещата лично когато не са!
Венцислав Александрийски
Не съм целял да те обидя! Просто се поизнервих от начина на записване на цикъла и предефинирането на типа дето дори не се и използва. Неприемай нещата лично когато не са!
Венцислав Александрийски