Jump to content

Registar encomenda


smack_dead
 Share

Recommended Posts

ola, estou a ter duvidas em conceber uma função para registar encomendas , isto e tenho de registar uma encomenda 'AOrder' caso seja registada a função devolve 1 , se a encomenda ja existir na bd (ordNumber) então a encomenda na bd devera ser atualizada...


Tcountry = record
countryCode : String[2];
countryName : String[60];
 end;
 Tcountries = array of Tcountry;


Edited by smack_dead
Link to comment
Share on other sites

Ainda não consegui perceber esse método de trabalho... SQL e Records?

Base de dados duplicada em memória?

Algum motivo especial para isto?

Afinal, para onde precisas meter a encomenda?

É que é radicalmente diferente a maneira de trabalhar, dependendo do método de armazenamento usado.

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

então, isto e quase como se fosse uma loja on-line, em que as encomendas eram geradas para o cliente(dono da empresa)deve registar a encomenda Aorder na struct... cajo seja registada devolve 1, se esta ja existir a encomenda e actualizada.... depois a função tem varias validações, onde deverei usar if's ...

Link to comment
Share on other sites

Isso é o objectivo do programa...

Não é problema, podia ser esse ou outro qualquer.

O que não entendo é porquê teres os dados no SQL e passares para Record, duplicando a base de dados, e aumentando (e muito) o grau de complexidade e o risco de falhas.

Porque não fazer tudo com o SQL, e esquecer os records? Qual o sentido por trás disso?

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

E onde é que os records entram nisso?

Repara, não estou a questionar o que o programa vai fazer, nem quem o vai usar ou como.

Estou a perguntar se há algum motivo para duplicar a base de dados em memória, com duas tecnologias tão distintas.

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Enquanto eu não compreender como estás a trabalhar na base de dados, não...

Tenho-te estado a perguntar o porquê dos records, só me respondes o que o programa vai fazer, e que é um webserver...

Até podia ser uma agenda de números eróticos, que não me respondia ás questões:

- Porquê duplicar a base de dados em memória, com SQL e Records?

- Em que base de dados estás a trabalhar a cada momento: SQL ou Records?

Como é que vou ajudar a fazeres um formulário para meter uma encomenda na base de dados, se nem me conseguiste ainda explicar como funciona essa base de dados e em qual é que trabalhar, guardas, lês, etc.?

  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Eu entendi que é isso que fazes...

Não entendi é porquê.

Vejamos, a ver se percebi correctamente o que precisas:

Tens uma base de dados em MySQL (o HeidiSQL é apenas um browser SQL, não um sistema de base de dados).

Precisas fazer um programa que manipule essa base de dados (o que vai fazer com ela, nesta fase, é indiferente).

Em que sentido precisas do Record, que é outra estrutura para guardar dados?

O Record fazia sentido aqui se em vez de teres a base de dados no SQL, a tivesses em ficheiros sequenciais. Mas não é o caso.

Assim, tens duas estruturas. Como lidas com elas?

Trabalhas no SQL e passas os dados para o Record? Para quê?

Trabalhas no record e passas os dados para o SQL? Para quê?

Esta dinâmica (ou falta dela) faz com que:

1º O programa é mais lento, e come mais recursos

2º Tens a informação espalhada em duas estruturas. Estão iguais em cada momento? Se sim, como? Em que momento copias de um lado para o outro?

3º A informação está toda duplicada? Ou só algumas tabelas? Que mecanismos tens para te assegurar que a informação necessária já foi sincronizada

4º Qual a prioridade das estruturas? Lês no record e passas para o SQL ou vice-versa?

Podiamos ir por aqui fora... E a forma de fazeres o interface vai depender enormemente de saberes exactamente com que base estarás a trabalhar.

Se for no SQL, usas componentes DB-Aware. Se for no Record, usas componentes normais + código para injectar os dados no record.

O exercício diz-te que tens de usar records? Ou foi uma dedução tua?

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Ou seja, vais trabalhar sobre a base de dados directamente.

Se assim é, não vais escrever na DB os campos do Record. Vais escrever na DB os campos da DB.

Crias um form com uma query, um datasource, e componentes DB-Aware para cada campo que o utilizador possa inserir (por exemplo, TDBEdit)

Uma vez preechidos as propriedades de base de dados desses componentes (DataSource e DataField), o que o utilizador escrever neles, vai direitinho para a base de dados.

Podes, se quiseres, meter um TDBNavigator também, que te dará uma régua com os botões mais comuns para lidar com os registos de uma base de dados, incluindo a criação de um novo registo.

  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites


function Twebserver.SetOrder	: Torders; stdcall;
var codigo : string;
numero : integer;
data : string;
hora : string;
begin

D.ADOQuerytable.SQL.Clear;
  D.ADOQuerytable.SQL.Text := 'select * from sf_encomendas';
  D.ADOQuerytable.Open;
  D.ADOQuerytable.First;

D.ADOQuerytable.Insert;
D.ADOQuerytable.FieldByName('codcliente').AsString := codigo;
D.ADOQuerytable.FieldByName('numencomenda').AsInteger := numero;
D.ADOQuerytable.FieldByName('dataentrega').AsString := FormatDateTime('yyyy-mm-dd',data);---> esta a dar erro
D.ADOQuerytable.FieldByName('horaentrega').AsString := hora;
D.ADOQuerytable.Post;


end;

preciso que a data seja por ano/mes/dia e hora por ... horas minutos segundos...

Edited by smack_dead
Link to comment
Share on other sites

Estás a usar uma função chamada FormatDateTime, o compilador dá-te erro nessa função (e até te diz qual o erro).

Que tal ver a declaração dessa função para veres que tipo de parâmetros aceita?

http://docwiki.embarcadero.com/Libraries/XE2/en/System.SysUtils.FormatDateTime

  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.