Comentários sobre: Como utilizar parâmetros em dbExpress (DBX) Framework http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/ Andreano Lanusse blog - artigos, tutoriais e vídeos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e técnicas de programação Thu, 03 Oct 2013 00:41:50 +0000 hourly 1 https://wordpress.org/?v=6.5.7 Por: Andreano Lanusse http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-33783 Thu, 03 Oct 2013 00:41:50 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-33783 Em resposta a Bruno.

Bruno, o dbExpress não suporta campo como parâmetro e sim os valores, neste caso você teria que fazer um FindReplace para substituir o nome do campo que foi passado como parâmetro

]]>
Por: Bruno http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-33114 Fri, 30 Aug 2013 20:38:53 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-33114 Em resposta a Rafael.

Como eu faria a passagem de parâmetro para essa situação, sendo que o primeiro e o terceiro parâmetros são CAMPO_DA_TABELA e o segundo e quarto são um valor qualquer:

UPDATE EVENTOS SET ? = ? WHERE ? = ?

]]>
Por: Andreano Lanusse | Tecnologia e Desenvolvimento de Software | Delphi XE3 e suas novidades - Parte 2 | Andreano Lanusse | Tecnologia e Desenvolvimento de Software http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-11224 Mon, 01 Oct 2012 08:30:55 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-11224 […] […]

]]>
Por: Jáder Medeiros http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-9645 Sat, 26 May 2012 13:58:43 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-9645 Em resposta a Carlos Gonzaga.

A solução do Rafael criando os parâmetros manualmente realmente dá certo, mas onde está a criação dinâmica dos parâmetros quando executamos o método Prepare?

Acredito que o parser do SQL em banco de dados SQL Server é diferente do parser em FireBird pois o comportamento é diferente. Em FireBird é tudo maravilha, mas quem trabalha com SQL Server não funciona.

Alguém sabe se existe uma correção para isso?

]]>
Por: Carlos Gonzaga http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-5210 Tue, 10 May 2011 11:38:55 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-5210 Oi Rafael, realmente é isso mesmo, deu certo agora.
Tanto acessando pelo nome como tbm pelo index.
Valeu mesmo

]]>
Por: Rafael http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-5187 Sun, 08 May 2011 21:17:11 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-5187 Errata:
Faltou o comando:

aCmnd.Parameters.AddParameter(aParam);

antes de:

aCmnd.Prepare;

]]>
Por: Rafael http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-5186 Sun, 08 May 2011 20:32:45 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-5186 O erro “Invalid Ordinal” que os comentários acima relataram é porque o código apresentado pelo Andreano não cria o parâmetro antes de atribuí-lo o valor ‘USA’.
Segue código corrigido:

program DBX4Example;

{$APPTYPE CONSOLE}

uses
SysUtils,
DBXDynalink,
DBXCommon,
DBXInterbase;

var

aDBXConn : TDBXConnection;
aDBXTrans : TDBXTransaction;
aCmnd : TDBXCommand;
aReader : TDBXReader;
aParam : TDBXParameter;
begin
aDBXConn := TDBXConnectionFactory.GetConnectionFactory.GetConnection('employee ib','sysdba','masterkey');

if aDBXConn nil then begin
aCmnd := aDBXConn.CreateCommand;

// Start transaction
aDBXTrans:= aDBXConn.BeginTransaction(TDBXIsolations.ReadCommitted);

// Prepare and execute the SQL Statement
aCmnd.Text := 'SELECT * FROM Country Where Country = ?';

aParam := aCmnd.CreateParameter;
aParam.DataType := TDBXDataTypes.WideStringType;
aParam.Name := 'COUNTRY';

aCmnd.Prepare;
aCmnd.Parameters.Parameter[0].Value.SetAnsiString('USA');
aReader := aCmnd.ExecuteQuery;

while aReader.Next do
Writeln( aReader.Value['Country'].GetAnsiString );

// Commit transaction
aDBXConn.CommitFreeAndNil(aDBXTrans);

Readln;
aReader.Free;
aCmnd.Free;
aDbxConn.Free;
end;
end.

Percebam que a possibilidade de nomear um parâmetro pela propriedade TDBXParameter.Name abre caminho para que haja controle por nome dos parâmetros sem necessidade de se criar class helpers.

]]>
Por: Carlos Gonzaga http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-2218 Sat, 11 Dec 2010 20:23:30 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-2218 Sim é justamente ai q da o erro: “Invalid Ordinal : 0″ quando executo a query.
O q pode estar acontecendo? será q não funciona com o driver do sql server?

]]>
Por: Andreano Lanusse http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-2184 Fri, 10 Dec 2010 23:42:38 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-2184 Em resposta a Carlos Gonzaga.

É isso mesmo.

No caso da propriedade isPrepared, como é a primeira execução a query ainda não foi preparada mesmo.

]]>
Por: Carlos Gonzaga http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-2124 Thu, 09 Dec 2010 13:01:54 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-2124 Mas seguindo o exemplo como lhe disse, o “0” é a ordem do parametro:

con := CDataBase(‘SQL2005CONN’);
cmd :=con.CreateCommand ;
cmd.Text :=’select *from cadpro00 where pro00_codsvc = ?’;
cmd.Parameters.Parameter[0].Value.SetInt16(107);
// if cmd.IsPrepared then
reader :=cmd.ExecuteQuery ;

Ou seja o “0” q estou passando é justamente a posição do primeiro “?” não é isso?
E outra pq a propriedade “IsPrepared” do TDBXCommand não fica “True” !!!

]]>
Por: Andreano Lanusse http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-1234 Mon, 06 Sep 2010 08:27:04 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-1234 Em resposta a Rafael.

É só passar um TDateTime

]]>
Por: Rafael http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-1227 Sun, 05 Sep 2010 02:57:05 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-1227 Achei o post uma maravilha, mas gostaria de saber como faço para passar outros tipos de valores para os parâmetros como por exemplo do tipo TDBXDate.

Valeu!

]]>
Por: Andreano Lanusse http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-986 Tue, 15 Jun 2010 03:42:14 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-986 Ordinal é o nome da coluna, parece que você está passando 0 como nome de coluna.

]]>
Por: Wagner Freitas http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-897 Tue, 08 Jun 2010 02:46:35 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-897 Ótimo post , os sesus post estão sendo de grande valia.
Continue assim !!

]]>
Por: Carlos Gonzaga http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-859 Thu, 27 May 2010 12:26:41 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-859 Oi Andreano
Bom exemplo
Não sei se estou implementando errado, mas seguindo o exemplo padrão (não implementando as extensões), dá um erro “Invalid Ordinal : 0”

Nota: Uso sql server express 2005 sp3 com windows 7 utimate/windows xp sp3

Verifiquei tbm q depois do “Prepare” a propriedade “IsPrepared” fica false

]]>
Por: Andreano Lanusse http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-854 Tue, 25 May 2010 21:49:11 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-854 Em resposta a Leandro.

Oi Leandro,

Na forma que implementei não é possível ter parâmetros com o mesmo nome, mas como os parâmetros são objetos, temos o caminho para fazer isso. Sobre não poder colocar o parâmetro na query, não entendi, visto que “?” é o parâmetro.

A idéia aqui não é tornar o framework a VCL e sim tornar o desenvolvimento mais amigável com o framework. Além disso a performance do framework é muito maior que a da VCL para operações onde não temos data aware.

]]>
Por: Leandro http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-853 Tue, 25 May 2010 20:59:24 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-853 Um bom exercício, mas acho que a utilidade pode não ser tão boa, em comparação com a VCL.
Eu notei, especialmente, dois problemas:
– Não posso colocar os parâmetros na query, lá ainda temos o “?”
– Não posso usar um mesmo parâmetro em dois pontos na query (dois parâmetros com o mesmo nome)

]]>
Por: Tweets that mention Como utilizar parâmetros em dbExpress (DBX) Framework | Andreano Lanusse Blog em Português -- Topsy.com http://www.andreanolanusse.com/pt/como-utilizar-parametros-em-dbexpress-dbx-framework/#comment-852 Tue, 25 May 2010 18:50:53 +0000 http://www.andreanolanusse.com/pt/?p=941#comment-852 […] This post was mentioned on Twitter by Embarcadero Tech, Andreano Lanusse. Andreano Lanusse said: Blog post: Como utilizar parâmetros em dbExpress (DBX) Framework http://bit.ly/bDVkdk […]

]]>