Jump to content

Recommended Posts

Posted (edited)

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
Posted

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.

Posted

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 ...

Posted

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.

Posted

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.

Posted

ok

"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.

Posted

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.

Posted (edited)

pois a base de dados estou com ela no heidisql...quando faco uma encomenda Aorder ele vai registar isso no struct..pelo menos e o que me parece do exercicio também,... ainda não cheguei ao que tu querias?

Edited by smack_dead
Posted

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.

Posted

Então, o que preciso de fazer e uma função que escreva na base de dados os campos da struct com aquelas verificações que referi em cima.... Nao vou guardar do struct posso logo guardar para a base de dados...

Posted

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.

Posted (edited)

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
Posted

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.

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
×
×
  • 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.