bonjour,
je débute avec firebird...
Comment faire pour tester l'existence d'une table dans la base ?
merci d'avance
bonjour,
je débute avec firebird...
Comment faire pour tester l'existence d'une table dans la base ?
merci d'avance
Je ne sais pas si la propriété Exists du BDE fonctionne avec FB !
C'est bon d'essayer.
Salut
Cette requête renvoie 0 ou 1 avec respectivement l'absence ou la présence de MATABLE dans la BDD.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select count(*) from RDB$RELATIONS where RDB$RELATION_NAME = 'MATABLE';
@+ Claudius
ok merci je vais essayer ça
Bonjour
Voici ma fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Function TableExist(TableName : String): Boolean; Begin Query.SQL.Clear; Query.SQL.Add('SELECT COUNT(*) AS COMBIEN FROM RDB$RELATIONS WHERE RDB$RELATION_NAME = '+ QuotedStr(TableName)); Query.ExecSQL ; Query.Active:=true; if DataSourceQuery.DataSet.FieldByName ('COMBIEN').asinteger > 0 then Result := True else Result := False; End;
je n'ai aucune table au nom de TOTO et pourtant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 fuction IsValidDatabase : boolean; begin with QValidDatabase.SQL do begin QValidDatabase.Close; Clear; Add('SELECT count(*) '); Add('FROM RDB$RELATIONS '); Add('WHERE RDB$RELATION_NAME =:MATABLE '); QValidDatabase.ParamByName('MATABLE').Text := 'TOTO'; QValidDatabase.Open; end; Result := (QValidDatabase.RecordCount <> 0); end;
un point d'arrêt sur le RecordCount me donne 1 !!
???
merci de votre aide
cantador
ce n'est pas le recordcount qu'il faut regarder mais la valeur renvoyer par le count du select
Code : Sélectionner tout - Visualiser dans une fenêtre à part result := (QValidDatabase.fields[0].asinteger>0)
oh la belle toile !
merci delagoutte
je fais plutôt comme ça :
@bientôt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 fuction IsValidDatabase : boolean; begin with QValidDatabase.SQL do begin QValidDatabase.Close; Clear; Add('SELECT count(*) as TOTAL '); Add('FROM RDB$RELATIONS '); Add('WHERE RDB$RELATION_NAME =:MATABLE '); QValidDatabase.ParamByName('MATABLE').Text := 'TOTO'; QValidDatabase.Open; end; Result := (QValidDatabase.FieldByName('TOTAL').Value <> 0); end;
Bonjour,
Exact Delagoutte, le result boolean sera:
Result := (QValidDatabase.Fields[0].asinteger <> 0);
Si tu fais un count(°), tu auras toujours un record avec 0 (pas de table) 1 (une table), je ne vois pas comment çà pourrait être + que 1.
solilog
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager