СПЕШЕН ВЪПРОС

5 отговора 234 прегледа
#1

СПЕШЕН ВЪПРОС

Някой може ли да ми каже:

1. Как да създам MS Access база данни (C:\TEST.MDB) със Delphi код по време на изпълнение на програмата (съответно една или две таблици вътре)

2. Как мога да получа информация от програма на Delphi за структурата на MS Access таблица (имена и типове на полета)

Възможно ли е за тази цел да се използвува ADO?

Предварително благодаря!

Отговор
в отговор на Koko #2

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;

Отговор
в отговор на TRN #3

Re: СПЕШЕН ВЪПРОС

Здравейте!
Тоя пример е меко казано "странен". Съдържа константа която не се ползва и некъв цикъл който явно цикли от 0 до 39 но е записано по некъв гениален начин(много ме дразни).
В MSDN има инфо зо openschema както и в хелпа на делфито.
Венцислав Александрийски

Отговор
в отговор на v_automation #4

Re: СПЕШЕН ВЪПРОС

Не бих искал да си хвърляме разни епитети в пространството. Все пак сме се събрали да си оказваме помощ. Примера действително не е гениален (но ако не си забелязал това е част от експеримент, като ShowMessage е добавено допълнително за да спира и да се вижда информацията), затова пък работи, а и не се иска гениалност.

Отговор
в отговор на TRN #5

Re: СПЕШЕН ВЪПРОС

Здравей!
Не съм целял да те обидя! Просто се поизнервих от начина на записване на цикъла и предефинирането на типа дето дори не се и използва. Неприемай нещата лично когато не са!
Венцислав Александрийски

Отговор
в отговор на Koko #6

Re: СПЕШЕН ВЪПРОС

[линк]

Re: ADO и CreateTable
Там е отговора

Отговор