Ir para conteúdo

Luthien

Members
  • Total de itens

    54
  • Registro em

  • Última visita

Reputação

0 Comum

Sobre Luthien

  • Data de Nascimento 07/08/1996

Informações Pessoais

  • Sexo
    Feminino
  1. Fiz a modelagem conceitual de um banco de dados e na hora de escrever os scripts fiquei com essa dúvida. Eu tenho as tabelas de CLIENTE, LISTA e PRODUTO. LISTA é uma entidade fraca pois sua existência depende da tabela de CLIENTE, porém, tenho um relacionamento N:N entre LISTA e PRODUTO e vi que preciso de identificador pra LISTA pra poder criar a tabela que representa esse relacionamento. A minha ideia seria criar uma chave composta para a tabela ListaXProduto, mas para isso eu precisaria de um ID para a lista e não sei se isso é permitido.
  2. Luthien

    Texto em cima de progressBar

    Estou fazendo um trabalho da faculdade e estou com uns problemas...Preciso colocar um texto em cima da barra de progresso no meu app. Tinha até conseguido colocando um texto fixo "0/100 ml", só que esse texto precisa mudar de acordo com a opção selecionada pelo usuário. E quando tentei fazer isso, o texto sumiu. Outro problema, é na hora de definir o valor máximo da barra de progresso, esse valor vai depender do peso do usuário... não estou conseguindo fazer. Seguem os códigos: estiloprogressbar.xml ?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@android:id/secondaryProgress"> <clip> <shape> <corners android:radius="5dip" /> <solid android:color="@color/primary_light" /> </shape> </clip> <color android:color="@color/primary_light" /> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="5dip" /> <solid android:color="@color/primary_light" /> </shape> </clip> <color android:color="@color/primary_light" /> </item> </layer-list> O progressbar criado em home.xml: <com.cea436.amanda.drinkwater.TextProgressBar style="@android:style/Widget.ProgressBar.Horizontal" android:layout_width="300dp" android:layout_height="40dp" android:background="@color/background_light" android:id="@+id/barraprogresso" android:progressDrawable="@drawable/estiloprogressbar" /> Quando tento escrever o texto no OnCreate da Activity qtd_agua = peso * 35; falta_agua = qtd_agua; String texto = "0/" + String.valueOf(qtd_agua) + " ml"; t = new TextProgressBar(this, texto); t.setText("0/" + texto); E por último, o TextProgressBar.java public class TextProgressBar extends ProgressBar { private String text = ""; private Paint textPaint; public TextProgressBar(Context context,String text) { super(context); this.text = text; textPaint = new Paint(); textPaint.setColor(Color.BLACK); textPaint.setTextSize(45); } public TextProgressBar(Context context, AttributeSet attrs) { super(context, attrs); textPaint = new Paint(); textPaint.setColor(Color.BLACK); textPaint.setTextSize(45); } public TextProgressBar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); textPaint = new Paint(); textPaint.setColor(Color.BLACK); textPaint.setTextSize(45); } @Override protected synchronized void onDraw(Canvas canvas) { super.onDraw(canvas); Rect bounds = new Rect(); textPaint.getTextBounds(text, 0, text.length(), bounds); int x = getWidth() / 2 - bounds.centerX(); int y = getHeight() / 2 - bounds.centerY(); canvas.drawText(text, x, y, textPaint); } public synchronized void setText(String text) { this.text = text; drawableStateChanged(); } public void setTextColor(int color) { textPaint.setColor(color); drawableStateChanged(); } public String getText() { return text; } } Imagino que o problema esteja nessa última classe, mas não consigo entender o motivo. Já depurei e não entendi onde está falhando :(
  3. Não sei se entendi bem a ideia mas tentei e deu errado, está alterando apenas 4 registro da categoria 1 na tabela Vaga e aparece o warning " 0 row(s) affected, 1 warning(s): 1329 No data - zero rows fetched, selected, or processed": delimiter $ create procedure InsereDadosVagaOcupada() begin declare existe_mais_linhas int default 0; declare vPlaca varchar(45); declare vCategoria int; declare vID int; /*define as variáveis que serão selecionadas de Carro*/ declare cursor1 cursor for select PlacaCarro,IDCategoria from estacionamento.Carro; declare cursor2 cursor for select IDVaga from estacionamento.Vaga; /*define o valor para 1 se não existir mais linhas*/ declare continue handler for not found set existe_mais_linhas = 1; /*abre o cursor*/ open cursor1; open cursor2; /*inicia o loop*/ simple_loop:loop /*define onde os valores selecionados serão inseridos*/ fetch cursor1 into vPlaca,vCategoria; fetch cursor2 into vID; /*se não existir mais linhas sai do loop*/ if existe_mais_linhas = 1 then leave simple_loop; end if; /*atualiza a tabela de acordo com os dados selecionados*/ update Vaga set PlacaCarro = vPlaca, Status = 'OCUPADA' where Vaga.IDCategoria = vCategoria and IDVaga = vID; end loop simple_loop; /*fecha o cursor*/ close cursor1; close cursor2; end $ Fiz uns comentários do q entendi, se n for pedir muito você poderia explicar se entendi alguma coisa errado? Eu tenho só 4 categorias, acho q isso tem alguma relação com o erro já que alterou apenas 4 registros
  4. Verdade! foi lerdeza da minha parte, o select estava gerando aquele erro, aí limitei: select PlacaCarro,IDCategoria into vPlaca,vCategoria from Carro limit 1; Mas ainda estaria com problema, pois td vez que chamar essa procedure, ela vai sempre pegar apenas o primeiro carro, aí tentei fazer desse jeito mas não estava alterando nenhum registro da Vaga: delimiter $ create procedure InsereDadosVagaOcupada() begin declare vPlaca varchar(45); declare vCategoria int; declare cont int default 0; declare vQtd int default 0; declare vAux int; select count(*) into vQtd from Vaga; while (cont < vQtd) do select IDCategoria into vAux from Vaga limit 1; select PlacaCarro,IDCategoria into vPlaca,vCategoria from Carro where Carro.IDCategoria = vAux limit 1; update Vaga set PlacaCarro = vPlaca, Status = 'OCUPADA' where Vaga.IDCategoria = vCategoria limit 1; set cont = cont +1; end while; end $ Então pensei em uma solução, mas continuo com um problema parecido: select IDCategoria into vAux from Vaga where IDVaga = cont + 1; Assim eu percorro todas as vagas mas não percorro todos os carros, não sei como consertar. Existem alguma maneira de não verificar os q já foram verificados?
  5. Fiz duas funções, uma pra preencher todas as vagas do estacionamento como desocupadas e outra para inserir carro nas vagas, dando update Essa é pra criar 50 vagas desocupadas delimiter $ create procedure InsereDadosVagaDesocupada() begin declare cont int default 0; while (cont < 50) do insert into Vaga (Status,IDCategoria) values ('DESOCUPADA',floor(1+rand()*4)); set cont = cont +1; end while; end $ E essa é pra inserir carros nas vagas, porém qnd chamo a procedure aparece o erro: Result consisted of more than one row. Achei que fosse por causa do update que atualizaria todos os registros que tivessem aquela categoria, então coloquei limit = 1 e o erro continua: delimiter $ create procedure InsereDadosVagaOcupada() begin declare vPlaca varchar(45); declare vCategoria int; declare cont int default 0; declare vQtd int default 0; select count(*) from Carro into vQtd; while (cont < vQtd) do select PlacaCarro,IDCategoria into vPlaca,vCategoria from Carro; update Vaga set PlacaCarro = vPlaca where Vaga.IDCategoria = vCategoria limit 1; set cont = cont +1; end while; end $ Agradeceria se alguém puder ajudar! :)
  6. Luthien

    calcular faturamento por periodo

    select case when time(Recibo.HoraSaida) between '06:00:00' and '11:59:59' then 'Manha' when time(Recibo.HoraSaida) between '12:00:00' and '17:59:59' then 'Tarde' when time(Recibo.HoraSaida) between '18:00:00' and '23:59:59' then 'Noite' else 'Madrugada' end as Turno, sum(Recibo.ValorPago) as Faturamento from Recibo group by Turno; Deu certinho! Obrigada :)
  7. Luthien

    calcular faturamento por periodo

    Olá, preciso calcular o faturamento de uma empresa por período (manha, tarde e noite). Mas não consigo pensar em uma maneira de colocar todos esses dados em uma mesma tabela. Consigo fazer separado: select DataEntrada as Data,sum(Recibo.ValorPago) as FaturamentoNoite from Recibo where (Recibo.HoraSaida between ('18:00:00') and ('23:59:59')) group by Recibo.DataEntrada; Queria colocar FaturamentoManha, FaturamentoTarde e FaturamentoNoite na mesma tabela mas não sei como! Agradeceria se alguém puder me ajudar :)
  8. Luthien

    Gerar Hora Aleatória dentro de um intervalo

    Consegui resolver! delimiter $ create procedure InsereDadosRecibo(idcomp int) begin declare vDataEntrada date; declare vHoraEntrada, vHoraSaida time; declare vIDCat int; declare vPlacacar varchar(45); declare vTaxaHoraria double; select Comprovante.DataEntrada, Comprovante.HoraEntrada, sec_to_time(floor(time_to_sec(Comprovante.HoraEntrada) + (rand()*(86400-time_to_sec(Comprovante.HoraEntrada))))), Comprovante.IDCategoria, Comprovante.PlacaCarro into vDataEntrada,vHoraEntrada,vHoraSaida,vIDCat,vPlacacar from Comprovante where Comprovante.IDComprovante = idcomp; select Categoria.TaxaHoraria into vTaxaHoraria from Categoria where Categoria.IDCategoria = vIDCat; insert into estacionamento.Recibo(DataEntrada,HoraEntrada,HoraSaida,IDCategoria,Placacarro,ValorPago) values(vDataEntrada, vHoraEntrada, vHoraSaida ,vIDCat, vPlacaCar,(((time_to_sec(vHoraSaida)-time_to_sec(vHoraEntrada))/60)/30)*vTaxaHoraria); end $
  9. Luthien

    Gerar Hora Aleatória dentro de um intervalo

    Boa noite, Preciso gerar uma hora aleatória entre a hora de entrada de um comprovante e 23:59:59. A função que fiz está gerando um monte de horas '00:00:00' e maiores que 23:59:59, como 35:00:00: 29:00:00. Não tenho ideia do pq disso estar acontecendo. delimiter $ create procedure InsereDadosRecibo(idcomp int) begin declare vDataEntrada date; declare vHoraEntrada, vHoraSaida time; declare vIDCat int; declare vPlacacar varchar(45); declare vTaxaHoraria double; select Comprovante.DataEntrada, Comprovante.HoraEntrada, Comprovante.HoraEntrada + floor(time_to_sec(Comprovante.HoraEntrada) + (rand()*(86400-time_to_sec(Comprovante.HoraEntrada)))), Comprovante.IDCategoria, Comprovante.PlacaCarro into vDataEntrada,vHoraEntrada,vHoraSaida,vIDCat,vPlacacar from Comprovante where Comprovante.IDComprovante = idcomp; select Categoria.TaxaHoraria into vTaxaHoraria from Categoria where Categoria.IDCategoria = vIDCat; insert into estacionamento.Recibo(DataEntrada,HoraEntrada,HoraSaida,IDCategoria,Placacarro,ValorPago) values(vDataEntrada, vHoraEntrada, vHoraSaida ,vIDCat, vPlacaCar,(((time_to_sec(vHoraSaida)-time_to_sec(vHoraEntrada))/60)/30)*vTaxaHoraria); end $ 86400 é 24 horas em segundos. Alguém poderia me ajudar? Obrigada!
  10. aah consegui haha, só n sei msm como calculo o valor Pago: delimiter $ create procedure InsereDadosRecibo(idcomp int) begin select Comprovante.DataEntrada as DataEntrada, Comprovante.HoraEntrada as HoraEntrada, Comprovante.IDCategoria as IDCategoria, Comprovante.PlacaCarro as PlacaCarro, Comprovante.HoraEntrada + floor(2000 + (rand()*(20000-2000))) as HoraSaida from Comprovante where Comprovante.IDComprovante = idcomp; insert into estacionamento.Recibo values(null,DataEntrada, seHoraEntrada, HoraSaida ,IDCategoria,PlacaCarro, HoraSaida); end $
  11. Olá, Estou tentando criar uma função que insira os dados em um recibo de estacionamento a partir do id de um comprovante, e dentro da função preciso de uma variável. Nunca fiz função nem usei variável, por isso pode ter coisa bem nd a ver no código. Está dando erro de sintaxe: delimiter $ create procedure InsereDadosRecibo(idcomp int) begin (select * from Comprovante where Comprovante.IDComprovante = idcomp) as selecao; @HoraSaida:= selecao.HoraEntrada + floor(2000 + (rand()*(20000-2000))); insert into estacionamento.Recibo values(null,selecao.DataEntrada, selecao.HoraEntrada, @HoraSaida ,selecao.IDCategoria,selecao.PlacaCarro, (@HoraSaida - selecao.HoraEntrada)); end $ Tabela Comprovante: +---------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+-------------+------+-----+---------+----------------+ | IDComprovante | int(11) | NO | PRI | NULL | auto_increment | | IDCategoria | int(11) | NO | MUL | NULL | | | PlacaCarro | varchar(45) | NO | MUL | NULL | | | DataEntrada | date | NO | | NULL | | | HoraEntrada | time | NO | | NULL | | +---------------+-------------+------+-----+---------+----------------+ Tabela Recibo: +-------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+----------------+ | IDRecibo | int(11) | NO | PRI | NULL | auto_increment | | DataEntrada | date | NO | | NULL | | | HoraEntrada | time | NO | | NULL | | | HoraSaida | time | NO | | NULL | | | IDCategoria | int(11) | NO | MUL | NULL | | | PlacaCarro | varchar(45) | NO | MUL | NULL | | | ValorPago | double | NO | | NULL | | Estou com dúvida também em como calcular o valor pago. Cada categoria tem uma taxa que é cobrada a cada 30 min, não sei como fazer esse calculo no mysql.
  12. Luthien

    update + inner join não quer funcionar

    Agora deu certo! update Produto inner join Categoria on Produto.IDCategoria = Categoria.IDCategoria set ValorUnit = Produto.ValorUnit+(Produto.ValorUnit*0.05) where Categoria.CategoriaDesc = 'Eletrodomésticos'; Obrigada!! :D
  13. Luthien

    update + inner join não quer funcionar

    tentei e deu erro no inner :( Deve ser alguma lerdeza da minha parte, mas n tenho ideia do q possa ser
  14. Luthien

    update + inner join não quer funcionar

    Boa tarde, tenho que aplicar um reajuste de 5% nos produtos da categoria eletrodomésticos e pra isso preciso usar o inner join no update, mas não quer dar certo de jeito nenhum, mostra que o FROM está com erro e n tenho a menor ideia do porquê update Produto set ValorUnit = Produto.ValorUnit+(Produto.ValorUnit*0.05) from Produto inner join Categoria on Produto.IDprod = Categoria.IDProd where Categoria.CategoriaDesc = 'Eletrodomésticos'; Já testei outros exemplos da internet e o erro é o mesmo, sempre no FROM
  15. Luthien

    Calcular idade a partir da data de nascimento

    Deu certo! O meu outro erro era q eu estava armazenando as datas no formato dd/mm/yyyy e o do mysql é yyyy-mm-dd. Muito obrigada! :) Fiz assim: select NomeCli,TIMESTAMPDIFF(YEAR,Cliente.DT_Nasc,curdate()) as Idade FROM Cliente;
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.