Fórum nome de tabela por parametro #349813
28/11/2007
0
To tendo um probleminha aqui e talvez alguem ai possa me ajudar...
Tenho uma nova query com ordens em sql para criar uma nova tabela
onde o nome da tabela tera o mesmo valor de um parametro..o valor do parametro é o valor do text de um edit, ou seja, é uma string...
porem na hora da funçao query.ExecSql ela diz q é impossivel criar a tabela pois nao é possivel converter string em boolean para o nome da tabela baseado no valor do parametro...
alguem tem uma dica ai?
oq devo fazer para que a tabela seja criada com o valor do parametro?
abraços -
Pips_btos
Curtir tópico
+ 0Posts
28/11/2007
Silviogs
passa sua query para que possamos entender melhor o seu problema.
Silvio Guedes
Gostei + 0
28/11/2007
Pips_btos
Create Table pnome
(
campo1 Varchar (25) not null,
campo2 Varchar (25),
campo3 Varchar (25),
campo4 Varchar (25),
linha INTEGER CONSTRAINT primarykey PRIMARY KEY)
onde pnome.value:=edit1.text
deu pra ter +- uma noçao?
Gostei + 0
28/11/2007
Silviogs
eu uso postgresql e funcionou veja:
-- Table: teste
-- DROP TABLE teste;
CREATE TABLE teste
(
campo1 character varying(25) NOT NULL,
campo2 character varying(25),
campo3 character varying(25),
campo4 character varying(25),
linha integer NOT NULL,
CONSTRAINT primarykey PRIMARY KEY (linha)
)
WITHOUT OIDS;
ALTER TABLE teste OWNER TO postgres;
Rotina:
procedure TForm1.Button1Click(Sender: TObject);
begin
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add(´create table ´+Edit1.Text+´( ´);
ZQuery1.SQL.Add(´campo1 Varchar (25) not null,´);
ZQuery1.SQL.Add(´campo2 Varchar (25),´);
ZQuery1.SQL.Add(´campo3 Varchar (25),´);
ZQuery1.SQL.Add(´campo4 Varchar (25),´);
ZQuery1.SQL.Add(´linha INTEGER CONSTRAINT primarykey PRIMARY KEY)´);
ZQuery1.ExecSQL;
end;
Silvio Guedes
Gostei + 0
28/11/2007
Pips_btos
funcionou =D
Eu estava um tanto quanto cego
vendo apenas o lado de utilizar um parametro ^^
muito obrigado pela ajuda
abraços
Gostei + 0
03/12/2007
Pips_btos
e vou aproveitar o mesmo topico para perguntar
se eu quizece que o campo ´LINHA´ fosse alto intremento
como ficaria a linha de sql nessa mesma query do topico.
grato
Gostei + 0
03/12/2007
Silviogs
que banco de dados vc usa?
Silvio Guedes
Gostei + 0
04/12/2007
Pips_btos
Corringindo la ensima *auto Incremento
Gostei + 0
04/12/2007
Silviogs
Clientes
Campos Tipo de campo Descrição
Id_Cli integer Integer Código da tabela Clientes PK chave primária
NomeCli Varchar(35) Campo Nome do Cliente
Id_Cid Integer Código da ligação a tabela Cidade
Cidades
Campos Tipo de campo Descrição
Id_Cid Integer Código da Tabela Cidades PK chave primária
NomeCid Varchar(35) Campo Nome dad Cidade
Criando campo auto-incremental
Exemplo da generator e trigger criada:
CREATE GENERATOR GEN_CLIENTES_ID;
CREATE TRIGGER CLIENTES_BI FOR CLIENTES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.ID_CLI IS NULL) THEN
NEW.ID_CLI = GEN_ID(GEN_CLIENTES_ID,1);
END
Faça o mesmo com a tabela Cidades.
Teste, para cada comando create (table, create generator e create traigger vc tem que usar aquela rotina que lhe passei para os comandos acima entendeu?.
Silvio Guedes
Gostei + 0
05/12/2007
Pips_btos
mais eu nao intendi muito bem
poderia exemplificar na tabela q criamos acima pela query q mensionei?
isso seria feito na query em sql?
Gostei + 0
05/12/2007
Silviogs
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add(´create table ´+Edit1.Text+´( ´);
ZQuery1.SQL.Add(´Id_Cli integer not null,´);
ZQuery1.SQL.Add(´Id_Cid Integer )´);
ZQuery1.ExecSQL;
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add(´alter table ´+Edit1.Text);
ZQuery1.SQL.Add(´ add constraint pk_cliente primary key (Id_Cli)´);
ZQuery1.ExecSQL;
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add(´CREATE GENERATOR GEN_CLIENTES_ID´);
ZQuery1.ExecSQL;
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add(´CREATE TRIGGER CLIENTES_BI FOR CLIENTES´);
ZQuery1.SQL.Add(´ACTIVE BEFORE INSERT POSITION 0´);
ZQuery1.SQL.Add(´AS ´);
ZQuery1.SQL.Add(´BEGIN ´);
ZQuery1.SQL.Add(´IF (NEW.ID_CLI IS NULL) THEN ´);
ZQuery1.SQL.Add(´NEW.ID_CLI = GEN_ID(GEN_CLIENTES_ID,1)´);
ZQuery1.SQL.Add(´END ´);
ZQuery1.ExecSQL;
Silvio Guedes
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)