Ir para conteúdo
Fórum Script Brasil

nsouza

Membros
  • Total de itens

    323
  • Registro em

  • Última visita

Tudo que nsouza postou

  1. Foi isso que eu fiz, não não quer dar certo de forma alguma. function TfromCadastro.incluir: Boolean; var loSp : TSQLStoredProc; begin try try loSp := TSQLStoredProc.Create(nil); loSp.SQLConnection := Conn; loSp.StoredProcName:= 'SP_INSERT'; loSp.ParamByName('pcodigo' ).AsInteger := StrToInt(edtCodigo.Text); loSp.ParamByName('pdescricao' ).AsString := edtDescricao.Text; loSp.ExecProc except on e: exception do begin result := false; showmessage(e.Message + ' na rotina Incluir') end; end; finally FreeAndNil(loSp); end; end;
  2. fiz a alteração, coloquei como minuscula as letras e deu o mesmo erro!
  3. Jonas, estou fazendo um teste e criei um stored procedure, veja: CREATE PROCEDURE SP_INSERT ( pcodigo integer, pdescricao varchar(50)) as begin insert into teste (codigo, descricao) values (:pcodigo, :pDescricao); suspend; end // Do jeito que esta se eu executar pelo IBExpert funciona normalmente Agora na aplicação fiz assim: function TfromCadastro.incluir: Boolean; var loSp : TSQLStoredProc; begin try try loSp := TSQLStoredProc.Create(nil); loSp.SQLConnection := Conn; loSp.StoredProcName:= 'SP_INSERT'; loSp.ParamByName('PCODIGO' ).AsInteger := StrToInt(edtCodigo.Text); loSp.ParamByName('PDESCRICAO' ).AsString := edtDescricao.Text; loSp.ExecProc except on e: exception do begin result := false; showmessage(e.Message + ' na rotina Incluir') end; end; finally FreeAndNil(loSp); end; end; Nesta condição esta me retornando o mesmo erro: Paramentro PCodigo não encontrado Não entendi esse erro uma vez que o paramentro esta com o mesmo nome na stored procedure
  4. Não deu certo, não é isso. A mensagem de erro agora é sql conection property requred for this operation
  5. Eu fiz o texte no ibexpert usando a sintaxe e funcionou! Senão daria erro la tb.
  6. Colegas, o codigo abaixo apresenta o seguinte erro: " 'sqlExec: Parameter 'DATAFERIADO' not found'. o problema é que na tabela existe este campo, quando eu a linha de comando SQL: INSERT INTO FERIADOS (DATAFERIADO, DESCRICAO) VALUES (:DATAFERIADO,:DESCRICAO) ni IBEXPERT funcionou, mas na aplicação retorna este erro. alguém poderia de dar uma ajuda? Obrigado! function TfrmFeriadoEd.Incluir: Boolean; begin try sqlExec.Close; sqlExec.SQLConnection := FoSQLConn; sqlExec.sql.clear; sqlExec.sql.add('INSERT INTO FERIADOS '); sqlExec.sql.add(' ( DATAFERIADO, DESCRICAO) '); sqlExec.sql.add(' VALUES '); sqlExec.sql.add(' (:DATAFERIADO, :DESCRICAO)'); sqlExec.ParamByName('DATAFERIADO').AsDateTime := edtData.Date; sqlExec.ParamByName('DESCRICAO').AsString := edtDescricao.Text; //Se o registro for gravado a função retorna 1 Result := sqlExec.ExecSQL() = 1; except on e: exception do begin result := false; showmessage(e.Message + ' na rotina Incluir') end; end; end;
  7. então verifique a definição do campo da sua tabela .. se voce definiu como TimeStamp então terá que usar .AsDateTime; nesse caso ficaria assim: loSp.ParamByName('PINICIOCONTRATO' ).AsDateTime := Cds_CondominioINICIOCONTRATO.AsDateTime; loSp.ParamByName('PFIMCONTRATO' ).AsDateTime := Cds_CondominioFIMCONTRATO.AsDateTime; abraço Pior que não, o dominio da minha tabela é D_Date type Date
  8. Essa mensagem de erro ocorre porque houve erro na conversão de tipos o correto seria loSp.ParamByName('PINICIOCONTRATO' ).AsDate := Cds_CondominioINICIOCONTRATO.AsDate; loSp.ParamByName('PFIMCONTRATO' ).AsDate := Cds_CondominioFIMCONTRATO.AsDate; abraço Jhonas, estava assim, do jeito que você disse, mas da a mensagem de erro quando parou com o mouse por cima "Erroneous type" só aparace para mim .AsDateTime;
  9. Caro Jhonas, obrigado pelo material, meu problema agora é quando executo a procedure abaixo, da a mensagem de erro: 'unknown ISC error 0' procedure TDM.Cds_CondominioBeforePost(DataSet: TDataSet); var loSp : TSQLStoredProc; begin try try loSp:= TSQLStoredProc.Create(self); loSp.SQLConnection := DBAcesso; loSp.StoredProcName := 'SP_CONDOMINIO_IUD'; loSp.ParamByName('PCONDOMINIOID' ).AsInteger := Cds_CondominioCONDOMINIOID.AsInteger; loSp.ParamByName('PNOME' ).AsString := Cds_CondominioNOME.AsString; loSp.ParamByName('PENDERECO' ).AsString := Cds_CondominioENDERECO.AsString; loSp.ParamByName('PNUMERO' ).AsInteger := Cds_CondominioNUMERO.AsInteger; loSp.ParamByName('PCOMPLEMENTO' ).AsString := Cds_CondominioCOMPLEMENTO.AsString; loSp.ParamByName('PBAIRRO' ).AsString := Cds_CondominioBAIRRO.AsString; loSp.ParamByName('PCIDADE' ).AsString := Cds_CondominioCIDADE.AsString; loSp.ParamByName('PESTADO' ).AsString := Cds_CondominioESTADO.AsString; loSp.ParamByName('PCEP' ).AsString := Cds_CondominioCEP.AsString; loSp.ParamByName('PEMAIL' ).AsString := Cds_CondominioEMAIL.AsString; loSp.ParamByName('PSINDICO' ).AsString := Cds_CondominioSINDICO.AsString; loSp.ParamByName('PTELEFONE' ).AsString := Cds_CondominioTELEFONE.AsString; loSp.ParamByName('PCELULAR' ).AsString := Cds_CondominioCELULAR.AsString; loSp.ParamByName('PQTDEAPT' ).AsInteger := Cds_CondominioQTDEAPT.AsInteger; loSp.ParamByName('PAPTINICIAL' ).AsInteger := Cds_CondominioAPTINICIAL.AsInteger; loSp.ParamByName('PAPTFINAL' ).AsInteger := Cds_CondominioAPTFINAL.AsInteger; loSp.ParamByName('PINICIOCONTRATO' ).AsDate := Cds_CondominioINICIOCONTRATO.AsDateTime; loSp.ParamByName('PFIMCONTRATO' ).AsDate := Cds_CondominioFIMCONTRATO.AsDateTime; loSp.ParamByName('PVLRCONDOMINIO' ).AsFloat := Cds_CondominioVLRCONDOMINIO.AsFloat; loSp.ParamByName('PVENCIMENTO' ).AsInteger := Cds_CondominioVENCIMENTO.AsInteger; loSp.ParamByName('POPR' ).AsString := 'I'; loSp.ParamByName('PUSUARIO' ).AsInteger := 1; loSp.ExecProc; except On E: Exception do ShowMessage('Erro ao executar stored procedure' + E.Message ) end; finally FreeAndNil(loSp); end; end;
  10. Colegas, criei uma procedure, e a mesma funciona muito bem. Mas quando dá uma execessão no delphi aparece uma mensagem no formato nativo, eu gostaria de tratar este mensagem de uma forma mais amigavel para o usuário. A mensagem original é esta: Project Condominio.exe raised exception class TDBXErros whit message'exception 2' E_ACESSO_NEGADO Sem permissão para executar esta operação At procedure'SP_RAISE_ERROR' line: 22, col:12 At procedure 'SP_CONDOMINIO_IUD' line : 32, col:3'. Gostaria de mudar isso tudo para : "Usuário sem permissão para executar esta operação" Alguém poderia me dar uma ajuda? CREATE OR ALTER PROCEDURE SP_REISE_ERROR_USUARIO ( pusuario d_id, plogin d_login, pemail d_email) as declare variable v_count integer; begin /* verifica se o usuário tem os acesso necessários*/ select count(1) from acessos where usuarioid = :pusuario and FORMULARIO = 'CADASTRO DE USUÁRIOS' and incluir = 'S' into :v_count; if (v_count = 0) then begin exception E_ACESSO_NEGADO; end /*************** verifica se o login já existe *********************/ SELECT count(1) FROM USUARIOS WHERE login = :plogin INTO :V_COUNT; if (:V_COUNT > 0) then BEGIN exception e_login_existe; END /****************** verifica se o login já existe ******************/ SELECT count(1) FROM USUARIOS WHERE email = :pemail INTO :V_COUNT; if (:V_COUNT > 0) then BEGIN exception E_EMAIL_EXITE; END end
  11. Colegas quando clico na grid para editar um registro me retorna a mensagem de erro: 'Stack overflow' Poderia me dar uma ajuda? Para entender envio os codigo abaixo Evento show do formulário: procedure TF_Acessos.FormShow(Sender: TObject); var Temp: TPermissao; begin inherited; Temp := TUsuario.GetInstance.GetPermissao(IntToStr(dcbModulo.KeyValue)); ToolButton1.Visible := Temp.Incluir; ToolButton2.Visible := Temp.Excluir; ToolButton3.Visible := Temp.Alterar; ToolButton4.Visible := Temp.Consultar; ToolButton5.Visible := Temp.Imprimir; end; Função GetPermisao: function TUsuario.GetPermissao(AModulo: string): TPermissao; var DbCon: TDBXConnection; Command: TDBXCommand; // Responsável em receber a instrução SQL, insert, update, delete Reader: TDBXReader; // Receber o result set executado pelo tdbxCom Temp: TPermissao; begin if FLogado then begin DbCon:= TDBXConnectionFactory.GetConnectionFactory.GetConnection('ADMCONDOMINIO','SYSDBA','MASTERKEY'); Command := DbCon.CreateCommand; Command.Text := 'SELECT INCLUIR, EXCLUIR, ALTERAR, CONSULTAR, IMPRIMIR '+ ' FROM ACESSOS WHERE USUARIOID = '+ intToStr(ID) + ' AND IDMODULO = '+ AMODULO; Reader := Command.ExecuteQuery; if reader.next then Begin Temp.Incluir := Reader.Value[0].GetAnsiString = 'S'; Temp.Excluir := Reader.Value[1].GetAnsiString = 'S'; Temp.Alterar := Reader.Value[2].GetAnsiString = 'S'; Temp.Consultar := Reader.Value[3].GetAnsiString = 'S'; Temp.Imprimir := Reader.Value[4].GetAnsiString = 'S'; Result := Temp; End; end else messageDlg('É necessário está logado para invocar este método!!',mtWarning, [mbOk],0); end;
  12. qual é o código que está no botão salvar ? O codigo é este: procedure TF_Modelo.ac_salvarExecute(Sender: TObject); begin TClientDataSet(Ds.DataSet).Post; TClientDataSet(Ds.DataSet).ApplyUpdates(0); PageControl1.ActivePage := tbConsulta; end;
  13. Veja se a propriedade do TDataSetProvider (chamada ResolveToDataSet) esta como True... se estiver coloque como False. abraço e Feliz Natal Deu certo. No entando quando eu clico no botão salvar esta salvando dois registros (duplicando no banco de dados) 1 registro com dados que estão nso edits e um registro com todos os campos vazios. Abaixo o codigo da minha storade procedure. procedure TDM.Cds_CondominioBeforePost(DataSet: TDataSet); var //loQry : TSQLQuery; loQry : TSQLDataSet; begin try try loQry := TSQLDataSet.Create(nil); loQry.SQLConnection := DBAcesso; loQry.CommandType := ctStoredProc; loQry.CommandText := 'SP_CONDOMINIO_IUD'; loQry.ParamByName('PCONDOMINIOID' ).AsInteger := StrToInt(F_Condominio.edtCodigo.text); loQry.ParamByName('PNOME' ).AsString := f_Condominio.edtNome.Text; loQry.ParamByName('PENDERECO' ).AsString := F_Condominio.edtEndereco.Text; loQry.ParamByName('PNUMERO' ).AsInteger := StrToInt(F_Condominio.edtNumero.Text); loQry.ParamByName('PCOMPLEMENTO' ).AsString := F_Condominio.edtComplemento.Text; loQry.ParamByName('PBAIRRO' ).AsString := F_Condominio.edtBairro.Text; loQry.ParamByName('PCIDADE' ).AsString := F_Condominio.edtCidade.Text; loQry.ParamByName('PESTADO' ).AsString := F_Condominio.edtUF.Text; loQry.ParamByName('PCEP' ).AsString := F_Condominio.edtCep.Text; loQry.ParamByName('PEMAIL' ).AsString := F_Condominio.edtEmail.Text; loQry.ParamByName('PSINDICO' ).AsString := f_Condominio.edtSindico.Text; loQry.ParamByName('PTELEFONE' ).AsString := F_Condominio.edtTelefone.Text; loQry.ParamByName('PCELULAR' ).AsString := F_Condominio.edtCelular.Text; loQry.ParamByName('PQTDEAPT' ).AsInteger := StrToInt(F_Condominio.edtQtdeApt.Text); loQry.ParamByName('PAPTINICIAL' ).AsInteger := StrToInt(F_Condominio.edtAptInicial.Text); loQry.ParamByName('PAPTFINAL' ).AsInteger := StrToInt(F_Condominio.edtAptFinal.Text); loQry.ParamByName('PINICIOCONTRATO' ).AsDate := StrToDate(F_Condominio.edtInicioContrato.Text); loQry.ParamByName('PFIMCONTRATO' ).AsDate := StrToDate(F_Condominio.edtFimContrato.Text); //loQry.ParamByName('PVRLCONDOMINIO' ).AsFloat := StrToFloat(F_Condominio.EdtValor.Text); loQry.ParamByName('PVLRCONDOMINIO' ).AsFloat := 60.00; loQry.ParamByName('PVENCIMENTO' ).AsInteger := StrToInt(F_Condominio.edtVencimento.Text); LoQry.ParamByName('POPR' ).AsString := 'I'; loQry.ParamByName('PUSUARIO' ).AsInteger := 1; loQry.ExecSQL(); except On E: Exception do ShowMessage(E.Message) end; finally FreeAndNil(loqry); end; end;
  14. Colegas bom dia, estou usando um TSQLDataSet, TDataSetProvider, TClienteDataSet e um TSQLStoredProceudure Quando clico no botão Incluir da a mensagem de erro: Cds_Condominio: Cannot modify a read-only dataset' Abaixo uso os código, mas não consegui consertar este problema. Poderiam me ajudar por favor? Obrigado Codigo do botão Incluir: if not Ds.DataSet.Active then Ds.DataSet.Open; Ds.DataSet.Insert; end; Codigo no evento Before post do ClienteDataSet: Cds_Condominio with Sp_Condominio do // Stored Procedure begin Params[0].AsInteger := StrToInt(F_Condominio.edtCodigo.text); Params[1].AsString := f_Condominio.edtNome.Text; Params[2].AsString := F_Condominio.edtEndereco.Text; Params[3].AsInteger := StrToInt(F_Condominio.edtNumero.Text); Params[4].AsString := F_Condominio.edtComplemento.Text; Params[5].AsString := F_Condominio.edtBairro.Text; Params[6].AsString := F_Condominio.edtCidade.Text; Params[7].AsString := F_Condominio.edtUF.Text; Params[8].AsString := F_Condominio.edtCep.Text; Params[9].AsString := F_Condominio.edtEmail.Text; Params[10].AsString := F_Condominio.edtSindico.Text; Params[11].AsString := F_Condominio.edtTelefone.Text; Params[12].AsString := F_Condominio.edtCelular.Text; Params[13].AsInteger := StrToInt(F_Condominio.edtQtdeApt.Text); Params[14].AsInteger := StrToInt(F_Condominio.edtAptInicial.Text); Params[15].AsInteger := StrToInt(F_Condominio.edtAptFinal.Text); Params[16].AsDate := StrToDate(F_Condominio.edtInicioContrato.Text); Params[17].AsDate := StrToDate(F_Condominio.edtFimContrato.Text); Params[18].AsFloat := StrToFloat(F_Condominio.EdtValor.Text); Params[19].AsInteger := StrToInt(F_Condominio.edtVencimento.Text); Params[20].AsInteger := 1; Params[21].AsString := 'I'; ExecProc; end;
  15. Colegas, quando tento registrar alguns banco de dados no interbase recebo a seguinte mensagem, no caso abaixo tentei registrar um banco de dados de exemplo: wrong or obsolete version. unsupported on-disc structure for file C:CODEGEAR\INTERBASE\EXEMPLE\DATABASE\EMPLOYEE.GDB; found 13.1,m support 11.1 Estou usando o IBExpert que suporta a versão interbase 2009 e meu banco de dados é o interbase 2009 não entendi porque deu este erro. Poderia me dar uma ajuda? Obrigado!
  16. Fiz o download e reinstalei, e continua dando o mesmo erro!
  17. Colegas, estou usando o delphi 2007 tentei abrir um relatório no quickreport, mas obtive uma mensagem de erro: Application.CreateForm(TfrmReportCliente, frmReportCliente); try frmReportCliente.Preview; (aqui da a mensagem de erro: 'frmReportCliente' does not contain a member named Preview.) ... Alguém poderia me fornecer o comando certo para abrir um relatório? Obrigado!
  18. nsouza

    Erro ao salvar

    Pompeu, funcionou, muito obrigado! Estou passando os valores através de DBEDITS, como seria se eu passe atraves de Edits mudaria esta linha de código? Params[1].AsString := cdsClientesNOME_CLIENTE.AsString;
  19. Colegas, no evento Before Post de um ClientDataSet tenho a seguinte procedure: procedure TDM.cdsClientesBeforePost(DataSet: TDataSet); begin with spCliente do begin Params[0].AsInteger := cdsClientesID_CLIENTE.AsInteger; Params[1].AsString := cdsClientesNOME_CLIENTE.AsString; Params[2].AsString := cdsClientesENDERECO.AsString; ExecProc; end; end; Quando clico no btão salvar da a seguinte mensagem de erro: List index out of bounds(2) Como posso resolver isso obrigado!
  20. (Resolvido) Meu vendorlib estava errado. Usei o fbclient.dll mas o certo era gds32.dll
  21. Colegas, ao tentar conectar estou tendo esta mensagem de erro. O arquivo encontra-se na posta system32 e na pasta bin do radio studio 2007 o que mais tenho que fazer? Erro: Cannot load dbxint30.dll (126). It may be missing from the system path
  22. Então use o Winzip para descompactar o arquivo abraço Fiz o procedimento ao tentar mas ao conectar da a mensagem "Invalid package handle" e quando clico na query para exibir os campos recebo a mensagem de erro: Unable to load specified ODBC Drive manager DLL.: 'psqlodbc.dll"
  23. Veja como: http://www.devmedia.com.br/download/down.asp?id=5196&cb= http://downloads.sourceforge.net/project/o...use_mirror=ufpr abraço Baxei o arquivo neste endereço: http://www.devmedia.com.br/download/down.asp?id=5196&cb=, mas quando fui abrir o winrar de a mensagem que o arquivo esta corrompido.
  24. Um exemplo bem simples uses classes; procedure TForm1.Button1Click(Sender: TObject); var animal : TStringList; // Define a variavel lista de strings i : Integer; begin // Define um objeto string list, e aponta para a variavel animal := TStringList.Create; // Adicionar os nomes de animais a lista animal.Add('Gato'); animal.Add('Rato'); animal.Add('Coelho'); // Mostrar a lista for i := 0 to animal.Count-1 do ShowMessage(animal[i]); // animal[i] é igual a animal.Strings[i] // Limpar a lista de objetos animal.Free; end; Outros exemplos: Example code : Using name-value strings var names : TStringList; // Define our string list variable ageStr : String; i : Integer; begin // Define a string list object, and point our variable at it names := TStringList.Create; // Now add some names to our list names.CommaText := 'Neil=45, Brian=63, Jim=22'; // And now find Brian's age ageStr := names.Values['Brian']; // Display this value ShowMessage('Brians age = '+ageStr); // Now display all name and age pair values for i := 0 to names.Count-1 do begin ShowMessage(names.Names[i]+' is '+names.ValueFromIndex[i]); end; // Free up the list object names.Free; end; Show full unit code Brians age is 63 Neil is 45 Brian is 63 Jim is 22 Example code : Using DelimitedText, Delimiter and QuoteChar var cars : TStringList; // Define our string list variable i : Integer; begin // Define a string list object, and point our variable at it cars := TStringList.Create; // Now add some cars to our list - using the DelimitedText property // with overriden control variables cars.Delimiter := ' '; // Each list item will be blank separated cars.QuoteChar := '|'; // And each item will be quoted with |'s cars.DelimitedText := '|Honda Jazz| |Ford Mondeo| |Jaguar "E-type"|'; // Now display these cars for i := 0 to cars.Count-1 do ShowMessage(cars[i]); // cars[i] equates to cars.Strings[i] // Free up the list object cars.Free; end; Show full unit code Honda Jazz Ford Mondeo Jaguar "E-type" abraço (Resolvido) Obrigado
  25. Colegas, baixei o dbexpressObdc para fazer conexão Delphi 2007 + PostGreSql, instalei como dbExpress3 eu já tinha a dbexpress 2.5 instalado fiz isso para não dar conflito, mas a paleta não esta aparecendo? Como faço para reparar este problema? Quero tirar o DbExpress 2.5 que não é suporta o Drive do Postgresql e colocar o dbexpressObdc. Obrigado!
×
×
  • Criar Novo...