kahoz Posted May 23, 2006 at 06:22 PM Report #29153 Posted May 23, 2006 at 06:22 PM boas, utilizei o forum wizard do delphi5 para criar uma listagem de dados. o que acontece é que a tabela basicamente é constituida por chaves o que gera algo do tipo ID (c.principal) IDCliente (c.secundária) IDPreco (c.secundária) o que eu queria fazer era que o programa fosse ás tabelas relativas a clientes e preços, buscar a informação relativa a' chave e escrevesse tb os detalhes dessa chave na tabela (DBGrid). já tentei utilizar o componente TQuery, mas como não sou muito expriente em SQL é normal que a query não funcione.. 👍 não se me fiz etender, espero que sim.. obrigado desde já 😄 ps: sou novo por cá 😄 -lopes.
Blue_Acid Posted May 23, 2006 at 08:37 PM Report #29186 Posted May 23, 2006 at 08:37 PM Não sou Admin nem Moderador, mas bem vindo ao Forum. Eu não percebi a 100% o teu problema, mas vou tentar explicar-te da maneira k eu conheço. Primeiro terás que criar as BDs e as Alias no DataBase Desktop (as alias poderam ser evitadas, mas como vejo que estas a começar, é melhor usares) - sabes trabalhar com o DB Desktop? Depois no form no delphi, tens k inserir dois componente: - Componente Table(DBTables) no separador BDE -- Escolhes a ALIAS na opção Database Name -- Escolhas a tabela em TableName Inseri o Segundo componente - Escolhe o DataSource(DB) no separador Data Access -- Vais a opção DataSet ( tens a combo que detecta logo a Table para ligar) *** Se não estiveres a ver as opções carrego no F11, aparece o Object Inspector Por fim, no Separador Data Control - Adicionar o componente DBGrid (DBGrids) -- Na dbgrid, tens k seleccionar na opção DataSource, onde vais identificar o DataSource associado. *** Aconselho que definas nomes nos componente, pois ajuda-te a ligares as informações. Se precisares de mais alguma coisa, avisa. o pelo MSN Fica bem, espero ter ajudado ? SIGNIFICADOS: WWW: Wait,wait,wait... HTML: Hoje Ta Mais Lento.KEYBOARD: Dispositivo usado para entrada de erros no Computador.
kahoz Posted May 23, 2006 at 08:42 PM Author Report #29189 Posted May 23, 2006 at 08:42 PM os componentes Table, DBGrid, Datasource etc.. já os criei todos. só que na Grid só mostra os detalhes da tabela principal e eu queria que em vez de mostrar o nº do cliente mostrasse o nome, por exemplo.. que está noutra tabela. de qualquer modo obrigado! ve a imagem! 👍 http://img148.imageshack.us/img148/7638/untitled55ej.th.jpg -lopes.
Blue_Acid Posted May 23, 2006 at 10:20 PM Report #29229 Posted May 23, 2006 at 10:20 PM Viva. Ok, assim sendo já percebi o que precisas. Então tentando explicar. Neste caso não vais precisar do componente Table, mas sim do Query(DBTables), onde vais indicar tb o ALIAS, e vais ligar a DataSource, e a DBGrid a DataSource. Na Query vais nas propriedades a opção SQL, e carregas no botão pequeno [...] que te vai abrir uma janela para escreveres o Codigo, neste caso SQL Vou tentar fazer um código SQL associado ao que tu queres. Não conheço o teu esquema de tabelas, por isso vou aqui esquematizar um, possa ser que te orientes assim. Duas tabelas tbl_cliente - id_cliente [ + ] * - nome [A] - morada [A] tbl_preco_cliente - id_p_cliente [ + ] * - id_cliente [N] - ** (chave secundária que vai guardar o id_cliente da tbl_cliente) - valor [$] SELECT tbl_cliente.nome , tbl_preco_cliente.valor FROM tbl_cliente, tbl_preco_cliente WHERE id_p_cliente.tbl_preco_cliente = id_cliente.tbl_cliente; Explicação: 1 linha - SELECT para começar uma pequisa, e meto os campos que quero que aparecam a seguir separados pela (,) costumo meter nome_campo.nome_tabela para o caso de existirem campos iguais na tabela. 2 linha - FROM define quais são as tabelas envolventes na pesquisa 3 linha - WHERE faz a comparação. Neste caso, só mostra os dados quando a condição se verificar. A seguir basta activares a query, se tudo estiver bem, vai logo preencher a Grid. Espero ter-me explicado, e que tenhas entendido. Um Abraço 👍 SIGNIFICADOS: WWW: Wait,wait,wait... HTML: Hoje Ta Mais Lento.KEYBOARD: Dispositivo usado para entrada de erros no Computador.
kahoz Posted May 23, 2006 at 10:28 PM Author Report #29231 Posted May 23, 2006 at 10:28 PM obrigado! amanha vou exprimentar... só uma coisa.. no FROM é o nome do componente 'TTable' ou o caminho completo para a db ? edit: esquece! 👍 -lopes.
Blue_Acid Posted May 23, 2006 at 10:38 PM Report #29232 Posted May 23, 2006 at 10:38 PM ok, testa amanha e diz-me como correu o teste sim, no from, é o nome da TTabel, eu como por habito de organização quando faço as Tabelas no paradox defino sempre os nomes tlb_nome_da_tabela, e depois no DELPHI com o Componente TTable dou o mesmo Nome tbl_nome_da_tabela. Isto é a minha maneira, acho k é mais facil apra organizar as ideias, e a informação. Mas agora é tudo um gosto pessoal. Fica bem ---- Não reparei no edit: esquece! 👍 Bem, o post ñ faz mal 😄 SIGNIFICADOS: WWW: Wait,wait,wait... HTML: Hoje Ta Mais Lento.KEYBOARD: Dispositivo usado para entrada de erros no Computador.
kahoz Posted May 23, 2006 at 10:44 PM Author Report #29233 Posted May 23, 2006 at 10:44 PM como ainda tenho tempo para testar hoje.. fiz assim: Select aluguer.db.IDAluguer, aluguer.db.IDAutomovel, aluguer.db.IDCliente, aluguer.db.IDPreco, aluguer.db.DataEntrada, aluguer.db.DataSaida, aluguer.db.Observacoes, automoveis.db.IDAutomovel, automoveis.db.Matricula From aluguer.db, automoveis.db Where automoveis.db.IDAutomovel = aluguer.db.IDAutomovel ele diz-me: "invalid field: matricula" a prova que o campo existe tá no anexo.. lol inteh e obrigado! 👍 -lopes.
Blue_Acid Posted May 24, 2006 at 08:58 AM Report #29252 Posted May 24, 2006 at 08:58 AM Viva, ontem acabei por não ver mais o topico. É verdade que o campo Matricula existe, mas primeiro um conselho que sempre me deram em bases de dados, usa sempre letra minuscula, e separa os nomes com ( _ ) Underscore. Bem, então vendo o teu problema. o teu SELECT aluguer.db.IDAluguer altera para aluguer.IDAluguer penso k assim já resolve. ñ precisas de colocar o .DB Se tiveres duvidas avisa ... fica bem 👍 SIGNIFICADOS: WWW: Wait,wait,wait... HTML: Hoje Ta Mais Lento.KEYBOARD: Dispositivo usado para entrada de erros no Computador.
kahoz Posted May 24, 2006 at 10:24 PM Author Report #29399 Posted May 24, 2006 at 10:24 PM já tá. obg! 😄 mas tenho outra duvida. mudei um campo int para date numa tabela. agora a query de insereção diz "type mismatch in expression". ora eu tenho de passar a data para string se não o complilador que que os tipos TDate e TString são incompativeis. os campos Date da db são os dataEntrada e dataSaida. alguma maneira de dar a volta a este problema ? .. em anexo vai a showmessage com a query. espero que me tenha feito etender 👍 http://img68.imageshack.us/img68/8255/untitled11nu.jpg -lopes.
Blue_Acid Posted May 24, 2006 at 11:10 PM Report #29410 Posted May 24, 2006 at 11:10 PM Viva Ainda bem que te consegui ajudar. Bem em relação ao teu problema. Primeiro para inserires dados na base de dados, há maneiras mais faceis de fazer do que com SQL, tipo usas BDEdit, que associas a TTable, e ao campo dentro da TTable. Depois ou metes um navigator, (só aconselhor para avançar nos registos), ou fazes botõs de acção, deixo aki os comandos de acção: Inserir: tbl_cliente.append; Alterar: tbl_cliente.edit; Eliminar: tbl_cliente.delete; Guardar: tbl_cliente.post; Com estas instruções já podes trabalhar a informação na base de dados. Agora se queres inserir atraves de SQL, o problema é o esquema da data. tu estas a meter a data no formato DD-MM-AAAA, e o SQL aceita as datas no formato AAAA-MM-DD, ou seja se quiseres inserir por SQL, tens k inverter as datas. boa continuação, e parabens por estares a explorar DELPHI 😁 Diz-me estas a dar delphi na escola? ou por vontade propria? Um Abraço 👍 SIGNIFICADOS: WWW: Wait,wait,wait... HTML: Hoje Ta Mais Lento.KEYBOARD: Dispositivo usado para entrada de erros no Computador.
kahoz Posted May 25, 2006 at 06:49 PM Author Report #29516 Posted May 25, 2006 at 06:49 PM e se os campo da data for um datetimepicker ? como é que o associo a' tabela ? 😁 btw fiz o que disseste para o sql e continua na mesma. e em resposta a' tua pergunta, tou a aprender na escola abraço! (; -lopes.
Blue_Acid Posted May 25, 2006 at 08:04 PM Report #29522 Posted May 25, 2006 at 08:04 PM boas. No teu condigo do SQL faz INSERT INTO aluguer(....,....,,,...) VALUES (1,1,1,2006-05-20) não metas aluger.db, porque tu estas a chamar a tabela aluguer.db atravez do componente TTable, o que tens k referir, é o nome do componente. Quanto ao componente datetimepicker, o que eu costumo fazer, é meter uma dbedit, mas meto oculto, e no evento do datetimepicker (onChange) digo, que a dbedit_data.text := datetostr(datetimepicker.date); Assim já resolve o teu problema. Já agora estudas onde? conheço muito poucas escolas que dão delphi. Um Abraço 😁 SIGNIFICADOS: WWW: Wait,wait,wait... HTML: Hoje Ta Mais Lento.KEYBOARD: Dispositivo usado para entrada de erros no Computador.
kahoz Posted May 25, 2006 at 10:43 PM Author Report #29546 Posted May 25, 2006 at 10:43 PM olás. tendo em conta a tua dica abandonei o SQL e usei os outros comandos q referiste.. só que agora o novo registo vai para o ID 1 e os outros passam para baixo.. como resolvo isso ? :s estudo na gustave eiffel, www.cooptecnica.pt (passo a publicidade 😁) abraço! (; -lopes.
Blue_Acid Posted May 25, 2006 at 10:55 PM Report #29548 Posted May 25, 2006 at 10:55 PM boas. Bem primeiro que tudo, o teu professor de programação é o Prof. Carlos Sousa ou o Prof. Michael Salvado??? 😁 são os dois muito bons professores e programadores 👍 e eu vi quando falas-te em escola, pensei ou na FERNAVE antigos alunos de Gestão de Sistemas Informaticos (que foi o meu curso) ou pessoal da Gustave Eiffel, e pronto confirmas-te B) Eu tb estudei na Gustave mas a noite no CET de Informática. bem, eu não percebi bem a tua questão. Esse ID vem de que tabela? Tipo, chaves primárias defines como numeração Automatica o simbolo de + no paradox, e dp no Delphi não afectas esse valor, apenas fazes o Append, esse campo não preeenches, assim que fazes o post, ele mete o numero a seguir. Faz o incremento automático. Se poderes explica-te melhor nesse teu problema. S ñ aconselho-te os profs k falei, são excelentes. Um Abraço 😁 SIGNIFICADOS: WWW: Wait,wait,wait... HTML: Hoje Ta Mais Lento.KEYBOARD: Dispositivo usado para entrada de erros no Computador.
kahoz Posted May 25, 2006 at 11:09 PM Author Report #29550 Posted May 25, 2006 at 11:09 PM olas de novo.. o campo q refiro é autoincrement.. só que em vez de ir para baixo (autoincrment+1) vai para cima (1ª posição).. :s bem deixa lá. btw, o meu prof nao é nenhum dos 2. abraço e obrigado ! (; ps: gsi powa! 😁 -lopes.
Blue_Acid Posted May 26, 2006 at 10:59 AM Report #29573 Posted May 26, 2006 at 10:59 AM Boas Bem sinseramente não estou a perceber esse teu problema. o campo é auto incremento, ou seja, vai criando o valor + 1 isto é k eu chamo para cima, pois esta a avançar nos registos. Agora ele está a fazer auto incremento do valor - 1? Pronto, falhei nos profs. se o teu ñ é nenhum desses. Vou tentando ajudar-te, no que poder. Andas em GSI (Gestão de Sistemas Informaticos)? Não conhecia esse curso na Gustave. Um Abraço 😁 SIGNIFICADOS: WWW: Wait,wait,wait... HTML: Hoje Ta Mais Lento.KEYBOARD: Dispositivo usado para entrada de erros no Computador.
kahoz Posted May 29, 2006 at 10:04 AM Author Report #29931 Posted May 29, 2006 at 10:04 AM Inserir: tbl_cliente.append; Alterar: tbl_cliente.edit; Eliminar: tbl_cliente.delete; Guardar: tbl_cliente.post; hum.. tenho uma dbgrid com os dados da tabela. agora tenho um botao "modificar" e queria programar esse botao. ora como é que recolho a chave da tabela e como é faço o dataset apresentar esse registo ? :s abraço e obrigado (; edit: ja' nao e' preciso 😉 -lopes.
Blue_Acid Posted May 29, 2006 at 03:12 PM Report #29949 Posted May 29, 2006 at 03:12 PM viva, bem só vi o teu post agora, Se já ñ é preciso, melhor, é sinal k já te arranjas-t 😛 Mais alguma coisa, não hesites em perguntar. Um abraço 😉 SIGNIFICADOS: WWW: Wait,wait,wait... HTML: Hoje Ta Mais Lento.KEYBOARD: Dispositivo usado para entrada de erros no Computador.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now