Création d'une table dans access via DELPHI

yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017 - 4 mai 2007 à 15:50
gebu34 Messages postés 118 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 17 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  ?

Salutations
yvessimon

7 réponses

jelume Messages postés 120 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 15 novembre 2007 1
5 mai 2007 à 09:40
Bonjour


Possible en utilisant des commandes sql !


alter table pour pour ajouter une colonne


create table pour créer une table


Sinon, en utilisant ADOX mais un peu plus compliqué.


J-L
0
gebu34 Messages postés 118 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 17 novembre 2009
9 mai 2007 à 16:29
Salut,
Comment ta base est-elle gérée? avec des composant ADO ?
A+
0
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
9 mai 2007 à 16:50
Bonjour,


Avec ADOQuery.

yvessimon
0
gebu34 Messages postés 118 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 17 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

  OLEDBvar2 : string = ';User ID=Admin;'
                     + 'Persist Security Info=False;'
                     + 'Mode=ReadWrite;'
                     + 'Extended Properties="";'
                     + 'Jet OLEDB:System database="";'
                     + 'Jet OLEDB:Registry Path="";'
                     + 'Jet OLEDB:Database Password="";'
                     + 'Jet OLEDB:Engine Type=4;' //5 = Access2000  4 = Access97
                     + 'Jet OLEDB:Database Locking Mode=1;'
                     + 'Jet OLEDB:Global Partial Bulk Ops=2;'
                     + 'Jet OLEDB:Global Bulk Transactions=1;'
                     + 'Jet OLEDB:New Database Password="";'
                     + 'Jet OLEDB:Create System Database=False;'
                     + 'Jet OLEDB:Encrypt Database=False;'
                     + 'Jet OLEDB:Don''t Copy Locale on Compact=False;'
                     + 'Jet OLEDB:Compact Without Replica Repair=False;'
                     + 'Jet OLEDB:SFP=False';

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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
10 mai 2007 à 11:29
Bonjour,

Merci pour l'info :

C'est " ADOCommand  "  qui me permet de créer ou de faire  des modifications dans la base ACCESS


Saluttaions
yvessimon
0
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
10 mai 2007 à 11:54
Bobjour,


La création de la table  fonctionne bien tant que la table n'existe pas.


Aussi une dernière question:

Comment avoir la liste des tables dans la base ACCESS est-ce avec ADOCommand  ?


Je me plonge dans SQL pour la suite .


Salutations
yvessimon
0
gebu34 Messages postés 118 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 17 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+
0
Rejoignez-nous