All right, here is the code:

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
 Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
 pqconnection, sqldb, DBGrids, DB;

type

 { TForm1 }

 TForm1 = class(TForm)
   Datasource1: TDatasource;
   dbGrid1: TdbGrid;
   PQConnection1: TPQConnection;
   SQLQuery1: TSQLQuery;
   SQLTransaction1: TSQLTransaction;
 private
   { private declarations }
 public
   { public declarations }
 end;

var
 Form1: TForm1;

implementation

initialization
 {$I unit1.lrs}

end.

object Form1: TForm1
 Left = 14
 Height = 555
 Top = 225
 Width = 983
 HorzScrollBar.Page = 982
 VertScrollBar.Page = 554
 ActiveControl = dbGrid1
 Caption = 'Form1'
 object dbGrid1: TdbGrid
   Left = 9
   Height = 460
   Top = 66
   Width = 967
   AutoFillColumns = True
   DataSource = Datasource1
   FixedColor = clBtnFace
   Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize,
dgColumnMove, dgColLines, dgRowLines, dgTabs, dgAlwaysShowSelection,
dgConfirmDelete, dgCancelOnExit]
   OptionsExtra = [dgeAutoColumns, dgeCheckboxColumn]
   ParentColor = False
   TabOrder = 0
   TabStop = True
 end
 object PQConnection1: TPQConnection
   Connected = True
   DatabaseName = 'MONITORINGZ_WIN1250'
   Password = 'nadaneumire'
   Transaction = SQLTransaction1
   UserName = 'postgres'
   HostName = 'localhost'
   left = 8
   top = 8
 end
 object SQLTransaction1: TSQLTransaction
   Active = True
   Database = PQConnection1
   left = 8
   top = 48
 end
 object SQLQuery1: TSQLQuery
   Active = True
   AutoCalcFields = True
   Database = PQConnection1
   Transaction = SQLTransaction1
   ReadOnly = True
   SQL.Strings = (
     'select departments.department,'
     '    plants.plant,'
     '    batches_microbs.sampling_type,'
     '    batches_microbs.batch,'
     '    batches_microbs.sampling_datetime, batches_microbs.status,'
     '    results_microbs.sample,'
     '    results_microbs.sample_description,'
     '    results_microbs.area,'
     '    results_microbs.area_description, results_microbs.class,'
     '    results_microbs.alert_limit,'
     '    results_microbs.action_limit,'
     '    results_microbs.frequency,'
     '    results_microbs.frequency_unit,'
     '    results_microbs.result,'
     '    results_microbs.measuring_unit,'
     '    results_microbs.sample_commentary,'
     '    alert_limit_exceeds(results_microbs.result,'
     '    results_microbs.alert_limit,'
     '    results_microbs.action_limit) as alert_limit_exceeds,'
     '    alert_limit_passes(results_microbs.result,'
     '    results_microbs.alert_limit) as alert_limit_passes,'
     '    action_limit_exceeds(results_microbs.result,'
     '    results_microbs.action_limit) as action_limit_exceeds,'
     '    action_limit_passes(results_microbs.result,'
     '    results_microbs.action_limit) as action_limit_passes,'
     '    exceeds_sum(results_microbs.result,'
     '    results_microbs.alert_limit,'
     '    results_microbs.action_limit) as exceeds_sum,'
     '    exceeds_total(exceeds_sum(results_microbs.result,'
     '    results_microbs.alert_limit,'
     '    results_microbs.action_limit)) as exceeds_total,'
     '    batches_microbs.batch_commentary'
     'from ((results_microbs join batches_microbs on'
     '    (((results_microbs.batch) ='
     '    (batches_microbs.batch)))) join'
     '    (departments join plants on'
     '    ((departments.department ='
     '    plants.department))) on'
     '    (((batches_microbs.plant) ='
     '    (plants.plant))))'
     'order by departments.department,'
     '    plants.plant,'
     '    results_microbs.sampling_type,'
     '    batches_microbs.sampling_datetime desc,'
     '    results_microbs.sample, batches_microbs.area;'
   )
   IndexDefs = <
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end
     item
     end>
   Params = <>
   UpdateMode = upWhereKeyOnly
   UsePrimaryKeyAsKey = True
   StatementType = stSelect
   ParseSQL = True
   left = 8
   top = 88
 end
 object Datasource1: TDatasource
   DataSet = SQLQuery1
   left = 8
   top = 136
 end
end

-- Table: batches_microbs

-- DROP TABLE batches_microbs;

CREATE TABLE batches_microbs
(
 plant varchar NOT NULL,
 sampling_type varchar,
 area varchar,
 area_description text,
 "class" varchar,
 batch varchar NOT NULL,
 sampling_datetime timestamp,
 status varchar,
 batch_commentary text,
 "user" varchar DEFAULT "current_user"(),
 "timestamp" timestamp DEFAULT now(),
 batch_microbs_id int8 NOT NULL DEFAULT
nextval('batches_microbs_batch_microbs_id_seq'::regclass),
 CONSTRAINT batches_microbs_pkey PRIMARY KEY (batch_microbs_id),
 CONSTRAINT batches_microbs_fk FOREIGN KEY (plant)
     REFERENCES plants (plant) MATCH SIMPLE
     ON UPDATE CASCADE ON DELETE CASCADE,
 CONSTRAINT batches_microbs_status_fkey FOREIGN KEY (status)
     REFERENCES batch_status_localization (status_local) MATCH SIMPLE
     ON UPDATE CASCADE ON DELETE NO ACTION
)
WITH OIDS;
ALTER TABLE batches_microbs OWNER TO matalab;
GRANT ALL ON TABLE batches_microbs TO matalab;
GRANT INSERT ON TABLE batches_microbs TO "GROUP2";
GRANT INSERT ON TABLE batches_microbs TO "GROUP3";
GRANT UPDATE, INSERT, DELETE ON TABLE batches_microbs TO "GROUP5";
GRANT UPDATE, INSERT, DELETE ON TABLE batches_microbs TO "GROUP6";
GRANT UPDATE, INSERT, DELETE ON TABLE batches_microbs TO "ADMINS";
GRANT SELECT ON TABLE batches_microbs TO public;
GRANT UPDATE, INSERT, DELETE ON TABLE batches_microbs TO "GROUP7";
GRANT SELECT ON TABLE batches_microbs TO backup_operators;


-- Index: batches_microbs_batch_key

-- DROP INDEX batches_microbs_batch_key;

CREATE UNIQUE INDEX batches_microbs_batch_key
 ON batches_microbs
 USING btree
 (batch);

-- Index: batches_microbs_idx1

-- DROP INDEX batches_microbs_idx1;

CREATE INDEX batches_microbs_idx1
 ON batches_microbs
 USING btree
 (sampling_type);

-- Index: batches_microbs_idx2

-- DROP INDEX batches_microbs_idx2;

CREATE INDEX batches_microbs_idx2
 ON batches_microbs
 USING btree
 (area);

-- Index: batches_microbs_idx3

-- DROP INDEX batches_microbs_idx3;

CREATE INDEX batches_microbs_idx3
 ON batches_microbs
 USING btree
 ("class");

-- Index: batches_microbs_idx4

-- DROP INDEX batches_microbs_idx4;

CREATE INDEX batches_microbs_idx4
 ON batches_microbs
 USING btree
 (sampling_datetime);

-- Index: batches_microbs_idx5

-- DROP INDEX batches_microbs_idx5;

CREATE INDEX batches_microbs_idx5
 ON batches_microbs
 USING btree
 (status);



-- Trigger: audit_public_batches_microbs_delete_trigger on batches_microbs

-- DROP TRIGGER audit_public_batches_microbs_delete_trigger ON
batches_microbs;

CREATE TRIGGER audit_public_batches_microbs_delete_trigger
 AFTER DELETE
 ON batches_microbs
 FOR EACH ROW
 EXECUTE PROCEDURE auditor.audit_public_batches_microbs_func_delete();

-- Trigger: audit_public_batches_microbs_insert_trigger on batches_microbs

-- DROP TRIGGER audit_public_batches_microbs_insert_trigger ON
batches_microbs;

CREATE TRIGGER audit_public_batches_microbs_insert_trigger
 AFTER INSERT
 ON batches_microbs
 FOR EACH ROW
 EXECUTE PROCEDURE auditor.audit_public_batches_microbs_func_insert();

-- Trigger: audit_public_batches_microbs_update_trigger on batches_microbs

-- DROP TRIGGER audit_public_batches_microbs_update_trigger ON
batches_microbs;

CREATE TRIGGER audit_public_batches_microbs_update_trigger
 AFTER UPDATE
 ON batches_microbs
 FOR EACH ROW
 EXECUTE PROCEDURE auditor.audit_public_batches_microbs_func_update();

-- Table: results_microbs

-- DROP TABLE results_microbs;

CREATE TABLE results_microbs
(
 sample varchar NOT NULL,
 sample_description text,
 sampling_type varchar,
 area varchar,
 area_description text,
 "class" varchar,
 alert_limit numeric,
 action_limit numeric,
 frequency int8,
 frequency_unit varchar,
 batch varchar NOT NULL,
 result numeric,
 measuring_unit varchar,
 sample_commentary text,
 "user" varchar DEFAULT "current_user"(),
 "timestamp" timestamp DEFAULT now(),
 result_microbs_id int8 NOT NULL DEFAULT
nextval('results_microbs_result_microbs_id_seq'::regclass),
 CONSTRAINT results_microbs_pkey PRIMARY KEY (result_microbs_id),
 CONSTRAINT results_microbs_fk FOREIGN KEY (batch)
     REFERENCES batches_microbs (batch) MATCH SIMPLE
     ON UPDATE CASCADE ON DELETE CASCADE
)
WITH OIDS;
ALTER TABLE results_microbs OWNER TO matalab;
GRANT ALL ON TABLE results_microbs TO matalab;
GRANT INSERT ON TABLE results_microbs TO "GROUP2";
GRANT INSERT ON TABLE results_microbs TO "GROUP3";
GRANT UPDATE, INSERT, DELETE ON TABLE results_microbs TO "GROUP5";
GRANT UPDATE, INSERT, DELETE ON TABLE results_microbs TO "GROUP6";
GRANT UPDATE, INSERT, DELETE ON TABLE results_microbs TO "ADMINS";
GRANT SELECT ON TABLE results_microbs TO public;
GRANT UPDATE, INSERT, DELETE ON TABLE results_microbs TO "GROUP7";
GRANT SELECT ON TABLE results_microbs TO backup_operators;


-- Index: results_microbs_idx1

-- DROP INDEX results_microbs_idx1;

CREATE INDEX results_microbs_idx1
 ON results_microbs
 USING btree
 (sampling_type);

-- Index: results_microbs_idx2

-- DROP INDEX results_microbs_idx2;

CREATE INDEX results_microbs_idx2
 ON results_microbs
 USING btree
 (area);

-- Index: results_microbs_idx3

-- DROP INDEX results_microbs_idx3;

CREATE INDEX results_microbs_idx3
 ON results_microbs
 USING btree
 ("class");



-- Trigger: audit_public_results_microbs_delete_trigger on results_microbs

-- DROP TRIGGER audit_public_results_microbs_delete_trigger ON
results_microbs;

CREATE TRIGGER audit_public_results_microbs_delete_trigger
 AFTER DELETE
 ON results_microbs
 FOR EACH ROW
 EXECUTE PROCEDURE auditor.audit_public_results_microbs_func_delete();

-- Trigger: audit_public_results_microbs_insert_trigger on results_microbs

-- DROP TRIGGER audit_public_results_microbs_insert_trigger ON
results_microbs;

CREATE TRIGGER audit_public_results_microbs_insert_trigger
 AFTER INSERT
 ON results_microbs
 FOR EACH ROW
 EXECUTE PROCEDURE auditor.audit_public_results_microbs_func_insert();

-- Trigger: audit_public_results_microbs_update_trigger on results_microbs

-- DROP TRIGGER audit_public_results_microbs_update_trigger ON
results_microbs;

CREATE TRIGGER audit_public_results_microbs_update_trigger
 AFTER UPDATE
 ON results_microbs
 FOR EACH ROW
 EXECUTE PROCEDURE auditor.audit_public_results_microbs_func_update();

-- Table: departments

-- DROP TABLE departments;

CREATE TABLE departments
(
 department varchar NOT NULL,
 department_report bool NOT NULL DEFAULT false,
 department_input bool NOT NULL DEFAULT true,
 department_active bool NOT NULL DEFAULT true,
 "timestamp" timestamp DEFAULT now(),
 "user" varchar DEFAULT "current_user"(),
 department_id int8 NOT NULL DEFAULT
nextval('departments_department_id_seq'::regclass),
 CONSTRAINT departments_pkey PRIMARY KEY (department_id)
)
WITH OIDS;
ALTER TABLE departments OWNER TO matalab;
GRANT ALL ON TABLE departments TO matalab;
GRANT UPDATE, INSERT, DELETE ON TABLE departments TO "GROUP6";
GRANT UPDATE, INSERT, DELETE ON TABLE departments TO "ADMINS";
GRANT SELECT ON TABLE departments TO public;
GRANT UPDATE, INSERT, DELETE ON TABLE departments TO "GROUP7";
GRANT SELECT ON TABLE departments TO backup_operators;


-- Index: departments_department_key

-- DROP INDEX departments_department_key;

CREATE UNIQUE INDEX departments_department_key
 ON departments
 USING btree
 (department);



-- Trigger: audit_public_departments_delete_trigger on departments

-- DROP TRIGGER audit_public_departments_delete_trigger ON departments;

CREATE TRIGGER audit_public_departments_delete_trigger
 AFTER DELETE
 ON departments
 FOR EACH ROW
 EXECUTE PROCEDURE auditor.audit_public_departments_func_delete();

-- Trigger: audit_public_departments_insert_trigger on departments

-- DROP TRIGGER audit_public_departments_insert_trigger ON departments;

CREATE TRIGGER audit_public_departments_insert_trigger
 AFTER INSERT
 ON departments
 FOR EACH ROW
 EXECUTE PROCEDURE auditor.audit_public_departments_func_insert();

-- Trigger: audit_public_departments_update_trigger on departments

-- DROP TRIGGER audit_public_departments_update_trigger ON departments;

CREATE TRIGGER audit_public_departments_update_trigger
 AFTER UPDATE
 ON departments
 FOR EACH ROW
 EXECUTE PROCEDURE auditor.audit_public_departments_func_update();

-- Table: plants

-- DROP TABLE plants;

CREATE TABLE plants
(
 department varchar NOT NULL,
 plant varchar NOT NULL,
 plant_report bool NOT NULL DEFAULT false,
 plant_input bool NOT NULL DEFAULT true,
 plant_active bool NOT NULL DEFAULT true,
 "timestamp" timestamp DEFAULT now(),
 "user" varchar DEFAULT "current_user"(),
 plant_id int8 NOT NULL DEFAULT nextval('plants_plant_id_seq'::regclass),
 CONSTRAINT plants_pkey PRIMARY KEY (plant_id),
 CONSTRAINT plants_fk FOREIGN KEY (department)
     REFERENCES departments (department) MATCH SIMPLE
     ON UPDATE CASCADE ON DELETE CASCADE
)
WITH OIDS;
ALTER TABLE plants OWNER TO matalab;
GRANT ALL ON TABLE plants TO matalab;
GRANT UPDATE, INSERT, DELETE ON TABLE plants TO "GROUP6";
GRANT UPDATE, INSERT, DELETE ON TABLE plants TO "ADMINS";
GRANT SELECT ON TABLE plants TO public;
GRANT UPDATE, INSERT, DELETE ON TABLE plants TO "GROUP7";
GRANT SELECT ON TABLE plants TO backup_operators;


-- Index: vrste_proizvodnje_vrsta_proizvodnje_key

-- DROP INDEX vrste_proizvodnje_vrsta_proizvodnje_key;

CREATE UNIQUE INDEX vrste_proizvodnje_vrsta_proizvodnje_key
 ON plants
 USING btree
 (plant);



-- Trigger: audit_public_plants_delete_trigger on plants

-- DROP TRIGGER audit_public_plants_delete_trigger ON plants;

CREATE TRIGGER audit_public_plants_delete_trigger
 AFTER DELETE
 ON plants
 FOR EACH ROW
 EXECUTE PROCEDURE auditor.audit_public_plants_func_delete();

-- Trigger: audit_public_plants_insert_trigger on plants

-- DROP TRIGGER audit_public_plants_insert_trigger ON plants;

CREATE TRIGGER audit_public_plants_insert_trigger
 AFTER INSERT
 ON plants
 FOR EACH ROW
 EXECUTE PROCEDURE auditor.audit_public_plants_func_insert();

-- Trigger: audit_public_plants_update_trigger on plants

-- DROP TRIGGER audit_public_plants_update_trigger ON plants;

CREATE TRIGGER audit_public_plants_update_trigger
 AFTER UPDATE
 ON plants
 FOR EACH ROW
 EXECUTE PROCEDURE auditor.audit_public_plants_func_update();



----- Original Message ----- From: "Joost van der Sluis" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Saturday, July 01, 2006 12:14 PM
Subject: Re: [lazarus] problems with SQLdb components and Postgres


On Sat, 2006-07-01 at 08:41 +0200, Zlatko Matić wrote:
I downloaded binaries Lazarus-0.9.16-20060528-win32.exe,
Lazarus-0.9.17-20060628-win32.exe, Lazarus-0.9.17-20060630-win32.exe. I
don't know which version of the compiler is included. How can I check it?


All these versions (the snapshots) have fpc 2.1.1. You can chech it to
tun 'ppc386.exe'. That will tell you the version.

And there are very much changes in sqldb between 2.0.2 and the latest
versions.

It could be that it's something windows-specific. Can you provide an
example? A table-create script, some test-data and code to show the
problem?

Joost

----- Original Message ----- From: "Joost van der Sluis" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Friday, June 30, 2006 11:20 PM
Subject: Re: [lazarus] problems with SQLdb components and Postgres


On Fri, 2006-06-30 at 18:25 +0200, Zlatko Matić wrote:
> I have big problem with displaying results from a query, by using
> Postgres 8.1.X, TPQConnection, TSQLQuery and TSQLTransaction. I think
> that something is very wrong with SqlDB components...Values in some
> columns are not displayed at all, or are displayed incorrectly (zero
> insted of actual numerical value, the same datetime in all timestamp
> fields etc., empty cells in some varchar columns etc.).
> I tried with different queries and it is always the same: values in
> some columns are displayed correctly, while other columns are empty or
> with wrong values. It is not related to field's type, because some
> fields are correctly displayed while others are not, although having
> the same type.
> I tested also on the other computer and there was the same result.
> Win XP SP2, PostgreSQL 8.1.2 and PostgreSQL 8.1.4; encoding: WIN1250,
> recent Lazarus snapshots, as well as with current official Windows
> binary.
> Just for record, all the queries are previously tested on pgAdmin
> and MS Access front-end and are working without any problems on those
> platforms...
>
> Do you have any idea?

Which version of fpc are you using? If you want to use postgres for
real, you should use 2.0.3 or 2.1.1 from a recent date.

Joost.

_________________________________________________________________
     To unsubscribe: mail [EMAIL PROTECTED] with
                "unsubscribe" as the Subject
   archives at http://www.lazarus.freepascal.org/mailarchives

_________________________________________________________________
     To unsubscribe: mail [EMAIL PROTECTED] with
                "unsubscribe" as the Subject
   archives at http://www.lazarus.freepascal.org/mailarchives

--
Met vriendelijke groeten,

 Joost van der Sluis
 CNOC Informatiesystemen en Netwerken
 http://www.cnoc.nl

_________________________________________________________________
    To unsubscribe: mail [EMAIL PROTECTED] with
               "unsubscribe" as the Subject
  archives at http://www.lazarus.freepascal.org/mailarchives

_________________________________________________________________
    To unsubscribe: mail [EMAIL PROTECTED] with
               "unsubscribe" as the Subject
  archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to