GARANTIR DESCONTO

Fórum nome de tabela por parametro #349813

28/11/2007

0

E ai pessoal
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

Pips_btos

Responder

Posts

28/11/2007

Silviogs

Olá

passa sua query para que possamos entender melhor o seu problema.

Silvio Guedes


Responder

Gostei + 0

28/11/2007

Pips_btos

seria +- assim

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?


Responder

Gostei + 0

28/11/2007

Silviogs

Olá amigo


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


Responder

Gostei + 0

28/11/2007

Pips_btos

Muito obrigado
funcionou =D
Eu estava um tanto quanto cego
vendo apenas o lado de utilizar um parametro ^^
muito obrigado pela ajuda

abraços


Responder

Gostei + 0

03/12/2007

Pips_btos

me surgiu uma nova duvida
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


Responder

Gostei + 0

03/12/2007

Silviogs

Olá

que banco de dados vc usa?

Silvio Guedes


Responder

Gostei + 0

04/12/2007

Pips_btos

Firebird com Ibexpert ^^

Corringindo la ensima *auto Incremento


Responder

Gostei + 0

04/12/2007

Silviogs

Olá

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


Responder

Gostei + 0

05/12/2007

Pips_btos

desculpe
mais eu nao intendi muito bem
poderia exemplificar na tabela q criamos acima pela query q mensionei?

isso seria feito na query em sql?


Responder

Gostei + 0

05/12/2007

Silviogs

Olá

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar