Ich hab mir auf
http://delphi.about.com/od/database/...secourse_2.htm die ersten 8 Tutorials zu
ADO etc angetan und einige Tage vor dem PC verbracht, bevor ich hier geschrieben hab (Von den Rechenprogrammen ganz zu schweigen und den Tutorials dazu) - allerdings hab ich das nie wirklich gelernt und bin somit auf mein grundsätzliches Verständnis limitiert
Zum Problem:
Die
SQL-Lösung brachte bei mir den Fehler "Datentypen im Kriterienausdruck unverträglich", den Ausdruck 'Barcodes' hab ich durch den Namen der Datenbank ersetzt, 'Barcode' ist nur eine Spalte wie 'Menge'...
Allerdings funktionierte die Schleifenlösung wunderbar, nachdem ich vor der Schleife noch ein AdoTable1.First eingefügt hatte, da er sonst nach einem Barcodescan nur die Dateien nach dem ausgewählten Datensatz zurücksetzte.
Vielen Dank für die Lösung
Hättest du (oder jemand anderes) noch eine Idee für das Drucken?
Ich dachte daran, einen Filter mit Menge = 1 draufzusetzten und dann ?direkt? zu drucken oder die gefilterte Auswahl dann Datensatz für Datensatz in eine Tabelle in einem Word-Dokument einzufügen.
Gerne auch ein Link zu einem geeigneten Tutorial falls jemand einen findet (Habs auch per Google versucht... Ich frage hier nur weil ichs versucht hab und nicht weiterkomme)
Ich hab das hier gefunden und soweit ich das verstanden habe angepasst, könnte mir das weiterhelfen?
War mal als ein Mail-Verteiler geplant...
Delphi-Quellcode:
word.ActiveDocument.MailMerge.OpenDataSource(dbquelle,
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True,
AddToRecentFiles:=False, PasswordDocument:='', PasswordTemplate:='',
WritePasswordDocument:='', WritePasswordTemplate:='', Revert:=False,
Format:=wdOpenFormatAuto, Connection:=
'Provider=Microsoft.Jet.OLEDB.4.0;Password='''';User ID=Admin;Data Source=c:\NeueBank.mdb;Mode=Read;Extended Properties='''';Jet OLEDB:System database='''';Jet OLEDB:Registry Path='''';Jet OLEDB:Database Password='''
, SQLStatement:='SELECT 1 FROM `Menge`', SQLStatement1:='');
bzw einen Code, der eine Tabelle aus Word exportieren soll - lässt sich das umkehren und auf
Access anwenden?
Delphi-Quellcode:
uses
ComObj;
procedure TForm1.Button1Click(Sender: TObject);
const
AWordDoc = '
C:\xyz\testTable.doc';
var
MSWord, Table: OLEVariant;
iRows, iCols, iGridRows, jGridCols, iNumTables, iTableChosen: Integer;
CellText:
string;
InputString:
string;
begin
try
MSWord := CreateOleObject('
Word.Application');
except
// Error....
Exit;
end;
try
MSWord.Visible := False;
MSWord.Documents.Open(AWordDoc);
// Get number of tables in document
iNumTables := MSWord.ActiveDocument.Tables.Count;
InputString := InputBox(IntToStr(iNumTables) +
'
Tables in Word Document', '
Please Enter Table Number', '
1');
// Todo: Validate string for integer, range...
iTableChosen := StrToInt(InputString);
// access table
Table := MSWord.ActiveDocument.Tables.Item(iTableChosen);
// get dimensions of table
iCols := Table.Rows.Count;
iRows := Table.Columns.Count;
// adjust stringgrid columns
StringGrid1.RowCount := iCols;
StringGrid1.ColCount := iRows + 1;
// loop through cells
for iGridRows := 1
to iRows
do
for jGridCols := 1
to iCols
do
begin
CellText := Table.Cell(jGridCols, iGridRows).Range.FormattedText;
if not VarisEmpty(CellText)
then
begin
// Remove Tabs
CellText := StringReplace(CellText,
#$D, '
', [rfReplaceAll]);
// Remove linebreaks
CellText := StringReplace(CellText, #$7, '
', [rfReplaceAll]);
// fill Stringgrid
Stringgrid1.Cells[iGridRows, jGridCols] := CellText;
end;
end;
//..
finally
MSWord.Quit;
end;
Das wäre das zweite und letzte Problem, für das ich Hilfe bräuchte - Das Programm außenrum bekomm ich mit etwas Ausdauer und Hirnschmalz hin
Danke nochmal