Ir para conteúdo
Fórum Script Brasil

João Paulo Taraciuk

Membros
  • Total de itens

    227
  • Registro em

  • Última visita

Tudo que João Paulo Taraciuk postou

  1. Olá Estou criando um aplicativo para reproduzir vídeos, então, tenho que colocar um panel e uma imagem no canto desse vídeo. Tentei com o mediaPlayer e com o WindowsMediaPlayer mas não consegui apresentar esse objeto quando o mesmo está em tela cheia. Com o MediaPlayer, não consegui fazer a imagem aparecer sobre o display do vídeo nem em tamanho normal. Tentei fazer dessa forma: MediaPlayer1.FileName := OpenDialog1.FileName; MediaPlayer1.Open; MediaPlayer1.Display := Panel1; MediaPlayer1.DisplayRect := Panel1.ClientRect; Image1.Parent := MediaPlayer1; Image1.Left := 10; Image1.Top := 10; Mas não aparece a imagem na frente do vídeo. Como eu poderia fazer para que essa imagem apareça, mesmo que eu coloque esse vídeo para ser mostrado em fullscreen, que no caso do TMediaPlayer, será feito redimensionando o form para FullScreen: Form1.BorderStyle := bsNone; Top := 0; Left := 0; Width := Screen.Width ; Height := Screen.Height; Panel1.Align := alClient; MediaPlayer1.DisplayRect := Panel1.ClientRect;
  2. Então, vou ter mesmo que abrir o array e salvar os TClientDataSet diretamente no disco, e depois ao ler essas informações, carregá-los 1 a 1 para montar o array novamente.
  3. A leitura estou fazendo da seguinte forma: procedure TForm2.LerDeArquivo; var objDado: TDados; Stream: TFileStream; TamanhoStream: Integer; cds1: TClientDataSet; begin Stream := TFileStream.Create('C:\SalvandoRecord.dat', fmOpenReadWrite); ocds1 := TClientDataSet.Create(nil); try TamanhoStream := (Stream.Size) div SizeOf(objDado); for TamanhoStream := 1 to TamanhoStream do begin objDado.Dados := TspClientDataSet.Create(nil); Stream.Position := (TamanhoStream - 1) * SizeOf(objDado); Stream.ReadBuffer(objDado, SizeOf(objDado)); cds1 := objDado.Dados; cds1.DataSet := cds1; edit1.Text := objDado.String; end; finally FreeAndNil(Stream); end; end; A minha intenção é gerar o arquivo com um executável, e ler o mesmo depois com outro aplicativo. Tentei ennviar no record um OleVariant ao invés do TClientDataSet, mas também não obtive sucesso. O que eu tenho,é um array de variants, onde na primeira posição, tenho vários OleVariants que correspondem a ClientDataSet.Data, e nas outras posições do Array, outras informações, como String, Integer. Mas, na tentativa de escrever o Array diretamente em disco, não obtive sucesso tbém. Se eu conseguisse salvar o OleVariant e depois ler esse OleVariant e jogar para o .Data do ClientDataSet, seria ótimo, mas não obtive sucesso.
  4. Como eu poderia fazer para salvar um record em disco, sendo que nesse record tem um dado que é do tipo TClientDataSet. Salva tranquilo, aí, se eu fechar o sistema e abrir novamente, ele não consegue ler: type TDados = record Dados: TClientDataSet; String: string; procedure TForm2.EscreverEmArquivo; var cds: TClientDataSet; oDados: TDados; Stream: TFileStream; begin cds.FieldDefs.Add('dado', ftstring, 10); cds.CreateDataSet; cds.Active := True; cds.Append; cds.FieldByName('dado').AsString := 'testando'; cds.Post; oDados.Dados := cds; oDados.sString := 'teste'; Stream := TFileStream.Create('C:\SalvandoRecord.dat', fmCreate); try Stream.Write(oDados, SizeOf(oDados)); finally FreeAndNil(Stream); end; end; Aí, quando eu tento ler esse arquivo, a informação que é String lê corretamente, mas a informação que é TClientDataSet não funciona. Como podera ser feito pra salvar esse record com o ClientDataSet e ler ele novamente?
  5. Olá A primeira coisa que eu tentaria, seria realizar esse procedimento diretamente no banco, da forma que está... somente adicionando os parametros. Que banco você está utilizando? Não está nem inserindo? Tenta Limpar o SQL da Query gravaitem.Close; gravaitem.SQL.Clear; Deveria estar utilizando também o QuotedStr em dados do tipo varchar: gravaitem.sql.add ('(' + QuotedStr(cmbcontrole.text) +', ' + QuotedStr(txtcodprod.text) + ', ' + StringReplace(txtPrecoCusto.Text, ',','.',[rfReplaceAll])); Tenta aí pra ver o resultado que lhe é apresentado.
  6. Olá O ideal é fazer uma tabela separada onde serão adicionadas as informações de senha, login, de repente níveis de acesso e na outra somente os dados cadastrais do usuário, porque senão, toda alteração que for feita numa tabela terá que ser replicada para a outra, tipo, muda a senha da tabela de cadastro, tem que alterar também na de senha e assim por diante. Mas, se você prefere fazer dessa maneira, pra diminuir o seu trabalho pode ser feito um Trigger, dá uma olhada nesse artigo: http://imasters.com.br/artigo/8123 Acredito que vai te ajudar, já que no Access você não encontra funcionalidades como triggers, Stored Procedures, Functions. Depois que você se habituar a trabalhar com MySQL ou outro SGBD parecido ou superior, nunca mais vai querer saber de Access....
  7. Como o Denis Courcy colocou, o AUTOINCREMENT sempre vai somar 1 ao último registro inserido. Para tentar contornar a sua necessidade você vai ter que tirar o AUTOINCREMENT do campo e criar uma função no banco para gerar os Id´s, função essa que iria lendo código a código a sua tabela até encontrar uma lacuna e aí jogar para o php. Mas, do meu ponto de vista, isso não fica bom, imagina que em determinado momento você vai ter um ID 1250 e alguém exclui o 0002, por ex. o próximo registro ao invés de ser 1251 seria 0002, então numa listagem que você poderia utilizar esse campo para ordenar, indexar,etc você terá que utilizar outro como datas ou strings que acarreta mais uso de hardware para retornar a consulta.
  8. Supondo que o registro ainda não exista na tabela ATIVOS, pode ser feito um INSERT de um SELECT, da seguinte forma: INSERT INTO ATIVA(Id, Nome) (SELECT Id, Nome FROM PENDENTE) Assim, você joga os dados que resultarem no SELECTda tabela PENDENTE para a tabela ATIVA, assim você pode filtrar os registros da maneira que precisar no SELECT. Agora, se o registro já existir na tabela ATIVA, você vai ter que fazer um UPDATE também coletando os dados do SELECT
  9. Vê se é isso que você precisa: SELECT usu_nome, SUM(ped_total_pedido) AS pedidos, (SUM(ped_total_pedido)/(SELECT SUM(ped_total_pedido) FROM PEDIDO WHERE ped_data BETWEEN '2010-10-01' AND '2010-10-31' )*100)AS Percentual FROM pedido WHERE ped_data BETWEEN '2010-10-01' AND '2010-10-31' GROUP BY usu_nome ORDER BY pedidos DESC
  10. Testa aê que esse select pode funcionar... SELECT Funcionario_Id, Count(*) FROM TABELA WHERE DATA IS NULL GROUP BY Funcionario_Id HAVING COUNT(*)>1
  11. João Paulo Taraciuk

    Sub-Select

    Usando o IN você tem que ter especificar a coluna para esta comparação, por exemplo: select ca.`NOME_SEL_CANDIDATO`,ca.`RG_SEL_CANDIDATO` from sel_candidato ca, `sel_inscricao` i,`sel_boletos` b, `sel_classificados` c where ca.`RG_SEL_CANDIDATO` = i.`RG_CANDIDATO_SEL_INSCRICAO` and i.`ID_SEL_INSCRICAO` = b.`INSCRICAO_SEL_BOLETOS` and i.`ID_SEL_INSCRICAO` = c.`INSCRICAO_SEL_CLASSIFICADOS` and b.`STATUS_SEL_BOLETOS` = 'S' AND c.`INSCRICAO_SEL_CLASSIFICADOS` NOT IN (SELECT `INSCRICAO_SEL_CLASSIFICADOS` FROM `sel_classificados`) Poderia também utilizar o EXISTS, que imagino retornaria mais rapidamente os resultados, para usar o EXISTS você tem que ter um campo para comparação do subselect com o select.
  12. Bom, até fiz funcionar aqui, chamar outro exe. Mas, utilizando o Seven, ao invés de simplesmente abrir a outra janela, ele aparece uma mensagem dizendo que tem um programa tentando mostrar uma mensagem, se eu clico em exibir a mensagem, abre o exe que eu estiver chamando em outra janela, com bordas parecidas com as do win98. O que eu estou utilizando é assim: procedure TTesteServico.ServiceExecute(Sender: TService); const SecBetweenRuns = 10; var Count: Integer; begin Count := 0; while not Terminated do begin Inc(Count); if Count >= SecBetweenRuns then begin Count := 0; WinExec('calc.exe', SW_SHOW); end; Sleep(1000); ServiceThread.ProcessRequests(False); end; end; Ele até mostra a calculadora, mas não normalmente, como se esperaria. O que poderia ser feito nesse caso?
  13. Poderia tentar com o Application.MessageBox: if Application.MessageBox('Mensagem ', 'Caption', MB_ICONWARNING + MB_OKCANCEL + MB_DEFBUTTON2) = mrOk then ShowMessage('Clicou OK') else ShowMessage('Clicou Cancelar'); com o MB_DEFBUTTON2 o foco vai ficar no segundo botão, aí você pode trocar MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3 ou MB_DEFBUTTON4. e a Mensagem fica no idioma do windows diferente do MessageDlg que, por padrão fica em inglês se não traduzir a Consts.
  14. O problema pode estar no ORDER BY, tenta colocar: ORDER BY 3
  15. Pode ser feito por função, que seja executada juntamente com os procedimentos que você desejarm ou com trigger, que seja executada do banco.
  16. Vai selecionando um por um com a tecla SHIFT pressionada e depois altera a propriedade que você precisa ou seleciona todos de uma vez clicando e arrastando o mouse sobre eles.
  17. Eu tenho alguns projetinhos que preciso que sejam executados permanentemente no servidor, independentemente do usuário que estiver logado. Então teria que colocar eles como serviço. Encontrei alguns exemplos de como fazer um software como serviço, mas, não consegui através do software que esta como serviço chamar o notepad, por exemplo. Que, eu colocaria esse soft como serviço, e , ao startar ele, eu mandaria executar os outros que eu já tenho rodando. Ou teria outra forma de eu colocar softwares já prontos para rodar como serviço?
  18. Bom não sei se entendi a sua dúvida, mas, vamos lá..., em delphi, basicamente, ele pega e lê cada form de cima até embaixo, geralmente a programação é feita em cima dos eventos dos componentes. O que no JAVA você utilizaria assim: importa java.awt.swing.*; seria o que temos na uses do delphi, para realizar uma boa parte das funções no delphi, você não precisa adicionar nada na USES, digamos que você precise fazer alguns cálculos de arredondamentos, ou trabalhar com funções mais aprimoradas de strings, basta adicionar na uses as uses: Math, StrUtils, que várias funções serão adicionadas ppara serem utilizadas. Vamos imaginar que no java você precise calcular o quadrado de um número: class Quadrado { public static void main(String args[]) { int i, quad quad = i*i; System.out.println("O quadrado de " + i + " é " + quad); } } No delphi, você poderia utilizar uma função, nesse caso. Inicia um projeto, colocar um form, adiciona nele um componente Button -> Paleta Addicional e 2 Edit Vamos utilizar no nosso mini exemplo uma função, no caso, no delphi, podemos declarar ela na public, que poderá ser utilizada em outros forms, ou na private, que poderá ser utilizada somente neste form, então, criamos a funcao quadrado na private: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; procedure Button1Click(Sender: TObject); private [color="#FF0000"]function quadrado(Valor: Double): Double;[/color] { Private declarations } public { Public declarations } end; A função quadrado vai receber um valor em Double, valor decimal, e retornará outro valor decimal. Ficando assim, aí, pressiona CTRL + SHIFT + C que ele cria a função abaixo, onde ela ficará dessa maneira: function TForm1.quadrado(Valor: Double): Double; begin Result := Valor * Valor; end; Depois dá um duplo clique no botão, e coloca algo ficando dessa forma: procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Text := FloatToStr(quadrado(StrToFloat(Edit1.Text))); end; Aqui, o edit2 está recebendo o resultado da função, que foi passado para ela o que estiver no campo Edit1.Text, foi passado o valor já convertido para ponto flutuante(StrToFloat). Mais ou menos isso, pode-se trabalhar com funções e procedures tranquilamente no Delphi.
  19. Deu certo aqui, no caso de ser uma variável para comparação, coloquei da seguinte forma: Set @SQL = 'OPEN SYMMETRIC KEY MinhaChave DECRYPTION BY CERTIFICATE ChaveSimetrica; ' + 'SELECT Nome, convert(VARBINARY(300), decryptbykey(Senha)) as Senha ' + 'FROM MinhaTabela ' + 'WHERE Codigo = ' +@Codigo EXEC (@SQL) Obrigado pela ajuda fulvio.
  20. Ele apresenta um erro quando chamo a procedure: Must declare the scalar variable "@Codigo" imagino que seja devido à variável que está dentro da string que ele não está reconhecendo. Mas essa variável está vindo como parâmetro na chamada da procedure, se eu coloco mais variáveis dentro da procedure declarando-as normalmente e chamando dentro da string que está indo para o SQL, ocorre o mesmo problema.
  21. Então o que estou tentando fazer algo parecido com isso: CREATE PROCEDURE [dbo].[VERSAO_MSSQL]( @Codigo VARCHAR(10) ) as BEGIN declare @VersaoSQL VARCHAR(4) SELECT @VersaoSQL = CAST(SERVERPROPERTY('productversion') AS VARCHAR) IF @VersaoSQL = '8.00' BEGIN SELECT Nome, Senha FROM MinhaTabela WHERE Codigo = @Codigo END ELSE BEGIN OPEN SYMMETRIC KEY MinhaChave DECRYPTION BY CERTIFICATE ChaveSimetrica SELECT Nome, convert(VARBINARY(300), decryptbykey(Senha)) as Senha FROM MinhaTabela WHERE Codigo = @Codigo END END Aí, ao rodar no SQL Server 2000, por exemplo, ele não reconhece a parte da chave, não deixa nem criar. Seria excelente se existisse alguma tag, que ele simplesmente ignorasse a parte do ELSE caso fosse versão 8.00 ou inferior
  22. Ola Gostaria de saber se alguém conhece no SQL Server algum comando que faça algo parecido com o que ocorre para o CSS no IE, ou seja, coloca-se as tags <!-- ... > para que se for uma versão anterior do IE, ignore esse código, ou não "enxergue". Quero fazer um tratamento para chave simetrica no SQL Server, porém, para versões anteriores ao 2005 esse complemento não existe, pretendo criar uma procedure que verifique a versão, e, caso seja a versão do banco posterior ao 8.00, execute os procedimentos de encriptação e decriptação da chave. Estou tentando utilizar um ELSE, mas, ao tentar rodar a procedure, quando chega no else que abre a chave, ele apresenta erro de que esse código não é reconhecido. Então, se tivesse algum comando que fizesse o SQL Server ignorar essa parte caso seja o 8.00 seria excelente, porque assim, posso utilizar a mesma procedure em qualquer versão do SQL Server.
  23. Olá No PosGreSQL tem como eu declarar variáveis e utilizar em um select, assim como no SQL Server, ou variáveis podem ser utilizadas somente em procedures e funções ? Tipo: Declare @Teste varchar SELECT @Teste = 'Teste'
  24. Poderia ser algo como: SELECT * FROM CLIENTES B WHERE B.Data <= '2009-12-31' AND NOT EXISTS ( SELECT * FROM CLIENTES A WHERE A.Data >= '2010-01-01' and A.CodigoCliente = B.CodigoCliente)
  25. Bom pessoal, percebi que se eu crio a tabela da seguinte dentro de squema que não seja o public, ele exige que seja colocado o nome do squema antes, digamos, se eu quiser renomear o schema... Outra coisa que percebi, é que na criação de campos, digamos que eu deseje adicionar um campo, se eu fizer de uma forma que o nome desse campo fique entre aspas, e os que criei anteriormente foram sem aspas, no momento do select, para esse campo, terei que colocar entre aspas.
×
×
  • Criar Novo...