yvessimon
Messages postés637Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 9 janvier 2017
-
4 mai 2007 à 15:50
gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 novembre 2009
-
10 mai 2007 à 15:44
Bonjour,
Ma base de donnée sous ACCESS est gérée avec DELPHI.
Dans cette base de données ACCESS je souhaite ajouter une colonne à ma table via DELPHI.
Est-ce possible ?
Est-il possible de créer une autre table dans ACCESS via DELPHI ?
gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 novembre 2009 10 mai 2007 à 10:04
Salut,
Travaillant beaucoup sur base de données ACCESS, j'ai pris des habitudes.
J'utlise Delphi 7 et travaille sur Microsoft.Jet.OLEDB.4.0 Access 97 ou 2000
J'ouvre une unité Module nommé variables, ou je place ces constantes :
const
OLEDBvar1 : string = 'Provider=Microsoft.Jet.OLEDB.4.0;' //Moteur MicroSoft Jet Engine 4.0
+ 'Data Source='; //Chemin complet de la base de données
Ensuite j'ouvre une unité Module Data nommé DTMA ou je place les composants ADO :
ADOConnection que je nomme ADODB1
ADOCommand que je nomme ADOCOM
ADOTable que je nomme ADOTB1
ADOQuery que je nomme ADOQR1
Ensuite pour ouvrir une table tu écris :
DTMA.ADODB1.Connected := False;
DTMA.ADODB1.ConnectionString := '';
DTMA.ADODB1.ConnectionString :=OLEDBvar1 + CheminCompletDeMaBase + OLEDBvar2;
DTMA.ADODB1.Connected := True;
La Base est prête à fonctionner
Pour créer une nouvelle base ACCESS :
Tu appelle la fonction : CreationBase(CheminCompletNomNouvelleBase);
function CreationBase(ChemNom : string) : string;
var
Catalog: OLEVariant;
chnx : string;
begin
result := '';
try
Catalog := CreateOleObject('ADOX.Catalog');
chnx := 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'User ID=Admin;' +
'Data Source=' + CheminCompletNomNouvelleBase + ';' +
'Mode=Share Deny None;Extended Properties="";' + 'Jet OLEDB:Engine Type=4;';
Catalog.create(chnx);
Catalog := NULL;
except
on E: Exception do result := E.message;
end;
end;
Ta base est crée, il te suffit de créer tes tables;
La création de table s'effectue comme suit :
Par exemple une table "Parametre" avec les champs CLE texte 15 et VALEUR texte 30.
req est une variable string.
D'abord tu ouvre ta base :
DTMA.ADODB1.Connected := False;
DTMA.ADODB1.ConnectionString := OLEDBvar1 + CheminCompletNomNouvelleBase + OLEDBvar2;
DTMA.ADODB1.LoginPrompt := False;
DTMA.ADODB1.Connected := True;
Ensuite tu ouvre la command :
DTMA.ADOCOM.Connection := DTMA.ADODB1;
Puis tu applique la requête
req:= 'CREATE TABLE Parametres (' +
' CLE VARCHAR(15) NOT NULL UNIQUE PRIMARY KEY, ' +
' VALEUR VARCHAR(30) ' +
')';
DTMA.ADOCOM.CommandText := req;
DTMA.ADOCOM.Execute;
Il te faudra consulter les docs SQL, si tu veux ajouter des Index ou gérer d'autres champs.
Pour ajouter un champs, même principe que création de table, sauf la requête :
(par exemple ajouter un champs OBS text 100 sur la table Parametres)
req:= 'ALTER TABLE Parametres ADD COLUMN OBS VARCHAR(100)';
Voilà il va falloir que tu buche les code SQL et tu peux travailler sur les bases ACCESS.
J'espère avoir été clair.
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 novembre 2009 10 mai 2007 à 15:44
Salut,
Une fois ton DataBase connecté, faire :
DTMA.ADODB1.GetTablesNames(SL,False);
(SL est une variable déclarée de type TString)
Fais un coup de F1 sur GetTablesName, c'est bien renseigné.
A+