おはようございます。
いつも、お世話になっています。
早速質問なんですけど、
テーブル名「A」
フィールド名「ID」
この「ID」のMAX値+1を簡単に取得するにはどうすればよいのですか?
MoveLastメソッド等は、存在しないみたいなんですけど、どうやって自動採番をすればよいのですか?
どうぞ宜しくお願いします。
Paradoxなら、カウンタ型を使えば自動採番されます。
SQLで最大値を得るなら、
SELECT MAX(ID) FROM テーブル名
とすれば取れます。
MoveLastメソッドは、TDataSet.Lastメソッドのことでしょうか。
にしのさん。ありがとうございます。
やりたいことは、
VBだとこんな感じです。
これは、ACCESSのデータベースに接続して、
IDのMAX値を表示しています。
Private Sub Command1_Click()
    Dim OleAccess As Object
    Dim OleWS As Object
    Dim OleDB As Object
    Dim OleRst As Object
    Dim sSQL As String
    Dim i As Integer
    Dim MAXID As Integer
    
        
    'Accessデータベースへの接続
    Set OleAccess = CreateObject("Access.Application")
    
    Set OleWS = OleAccess.DBEngine.Workspaces(0)
    
    Set OleDB = OleWS.OpenDatabase(StrMdbDir)
    
    sSQL = "SELECT MAX(ID) AS MAXID FROM テーブル1;"
    
    Set OleRst = OleDB.OpenRecordset(sSQL)
    
    If Not OleRst.EOF Then
                
        MAXID = OleRst.Fields("ID").Value + 1
        
        MsgBox MAXID
        
    End If
    
    OleRst.Close
    
    'Access開放
    Set OleRst = Nothing
    Set OleDB = Nothing
    Set OleWS = Nothing
    Set OleAccess = Nothing
        
    Exit Sub
    
End Sub
これを、Paradox  Delphiでやるにはどうしたらよいのですか?
ちなみにIDは、こちらで、任意につけたいと思っています。
それは、Aの場合9000XXX
        Bの場合8000XXX
という風にしたいからです。
宜しくお願いいたします。
こんな感じでしょうか。
Query1は、TQueryコンポーネントです。
procedure TForm1.Button1Click(Sender: TObject);
var
  MaxID: integer;
begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('SELECT MAX(ID) AS MAXID FROM TESTDB');
  Query1.Open;
  if Query1.RecordCount > 0 then
  begin
    MaxID := Query1.FieldByName('MAXID').AsInteger + 1;
    ShowMessage(IntToStr(MaxID));
  end;
end;
ありがとうございました。
あと、ひとつ質問なんですが、
begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('SELECT MAX(ID) AS MAXID FROM TESTDB');
  Query1.Open;
End
と
begin
  Query1.Close;
  Query1.SQL.Text:= 'SELECT MAX(ID) AS MAXID FROM TESTDB';
  Query1.Open;
End
とは、違うのですか?
違う場合、どう使い分けるのですか?
宜しくお願いいたします.
同じですよ。
SQLプロパティはTStringsなので、どんな方法でも同じです。
TStringListのオブジェクトを作成して、Assignする方法でもOKです。
# 遠回りですが。
Addを使ったのはヘルプにあった(コピーした)からでした^^;
にしのさん。いつもありがとうございます。
もう少し、詳しくなって、今度は他の人に教えられるぐらいに
成長して見せます。
| ツイート | 
        
         |